SSRF with blacklist-based input filter
SSRF with blacklist-based input filters
Algunas aplicaciones bloquean entradas que contienen nombres de host como 127.0.0.1 y localhost, o URL confidenciales como /admin. En esta situación, a menudo se puede eludir el filtro utilizando las siguientes técnicas:
Utilice una representación IP alternativa de 127.0.0.1, como 2130706433, 017700000001 o 127.1.
Registre su propio nombre de dominio que se resuelva en 127.0.0.1. Puede utilizar spoofed.burpcollaborator.net para este fin.
Oculte las cadenas bloqueadas utilizando la codificación de URL o la variación de mayúsculas y minúsculas.
Proporcione una URL que controle y que redirija a la URL de destino. Pruebe a utilizar diferentes códigos de redireccionamiento, así como diferentes protocolos para la URL de destino. Por ejemplo, se ha demostrado que cambiar de una URL http: a https: durante el redireccionamiento permite eludir algunos filtros anti-SSRF.
Lab: SSRF with blacklist-based input filter

En el sitio web encontraremos diversos artículos

Dentro de los detalles de los artículos podemos ver o consultar el stock


Al querer enumerar los activos del http://localhost:8080, vemos que este nos da un mensaje de que esto fue bloqueado

http://localhost:8080 "External stock check blocked for security reasons"
Para bypasear esto, usaremos en intruder y en ella una lista de posibles bypass

Wordlist usada:
Al terminar, observamos que tenemos dos formas de bypasear

Usaremos la primera, esto enviando con url encode. Para ingresar al /admin también nos restringen por lo que a admin encodee dos veces en url encode y logre bypasearlo.


Una vez que podemos ingresar como administradores, podemos eliminar la cuenta del usuario carlos.

Luego de enviar la request, podemos observar que eliminamos exitosamente al usuario carlos

Algunas aplicaciones solo permiten entradas que coincidan con una lista blanca de valores permitidos. El filtro puede buscar una coincidencia al principio de la entrada o dentro de ella. Es posible que pueda eludir este filtro aprovechando las inconsistencias en el análisis de la URL.
La especificación de la URL contiene una serie de características que pueden pasarse por alto cuando las URL implementan un análisis y una validación ad hoc utilizando este método:
Puede incrustar credenciales en una URL antes del nombre de host, utilizando el carácter @. Por ejemplo:
Puede utilizar el carácter # para indicar un fragmento de URL. Por ejemplo:
Puede aprovechar la jerarquía de nombres DNS para colocar la entrada requerida en un nombre DNS completo que usted controle. Por ejemplo:
Puede codificar caracteres en la URL para confundir el código de análisis de la URL. Esto resulta especialmente útil si el código que implementa el filtro maneja los caracteres codificados en la URL de forma diferente al código que realiza la solicitud HTTP back-end. También puede intentar codificar los caracteres dos veces; algunos servidores decodifican recursivamente en la URL la entrada que reciben, lo que puede dar lugar a más discrepancias. Puede utilizar combinaciones de estas técnicas juntas.
Last updated