Routing-based SSRF
Laboratorio de Portswigger sobre HTTP Host Header Attacks
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio es vulnerable a Routing-based SSRF a través de la cabecera Host. Podemos explotarlo para acceder a un panel de administración interno inseguro ubicado en una dirección IP interna. Para resolver el laboratorio, tenemos que acceder al panel de administración interno ubicado en el rango 192.168.0.0/24 y luego eliminar al usuario carlos
Resolución
Al acceder a la web vemos esto
He capturado la petición a la raíz de la web y he lanzado la herramienta Host Header Inchecktion https://github.com/PortSwigger/host-header-inchecktion.git para ver si existía alguna vulnerabilidad relacionada con la cabecera Host. Para lanzar la herramienta debemos hacer click derecho > Extensiones > Host Header inchecktion > Collaborator payload
Si nos vamos a Target > Site map vemos que la extensión ha detectado un SSRF
Una vez sabemos esto, como el laboratorio nos dice que debemos buscar una dirección IP en este rango 192.168.0.0/24. Podemos usar la herramienta ipRangeGenerator para generarlo https://github.com/Justice-Reaper/ipRangeGenerator.git
1
2
3
4
5
python ipRangeGenerator.py -cidr "192.168.0.0/24" -o ips.txt
[+] Generating IPs for network 192.168.0.0/24
[+] Output file: ips.txt
[+] Generating IPs: Completed! 254 IPs generated in ips.txt
[+] Progress: 100%
Enviamos la petición anterior al Intruder, marcamos el valor de la cabecera Host, cargamos el diccionario y desmarcamos la checkbox que dice Update Host header to match target
Lo siguiente que debemos hacer es desactivar el Payload encoding y pulsar sobre Start attack
Vemos que nos hace un redirect a /admin cuando es Host es 192.168.0.228. Esto significa que esa es una IP de la red interna
Si hacemos click derecho > Open response in browser vemos esto
Si realizamos esta petición y la capturamos con Burpsuite, vemos esto
Si dejamos que la petición anterior llegue al servidor no va a funcionar porque no estamos enviándosela al Host correcto, para enviar la petición al Host correcto debemos usar esta IP 192.168.0.228 como valor de la cabecera Host. Una vez hecho esto, ya habremos eliminado al usuario carlos











