Entrada

Routing-based SSRF

Laboratorio de Portswigger sobre HTTP Host Header Attacks

Routing-based SSRF

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

Esta entrada está licenciada bajo CC BY 4.0 por el autor.