Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas comunitarias **más avanzadas** del mundo.\
<summary><strong>Aprende hacking de AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
La falsificación de solicitudes del lado del servidor (también conocida como SSRF) es una vulnerabilidad de seguridad web que permite a un atacante **inducir a la aplicación del lado del servidor a realizar solicitudes HTTP a un dominio arbitrario** de la elección del atacante. (De [aquí](https://portswigger.net/web-security/ssrf))
Lo primero que necesitas hacer es capturar una interacción SSRF provocada por ti. Para capturar una interacción HTTP o DNS puedes usar herramientas como:
Usualmente encontrarás que el SSRF solo funciona en **ciertos dominios en lista blanca** o URL. 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**.\
Protocolo Ligero de Acceso a Directorios. Es un protocolo de aplicación utilizado sobre una red IP para gestionar y acceder al servicio de información de directorios distribuidos.
Usando este protocolo puedes especificar la **IP, puerto y bytes** que quieres que el servidor **envíe**. Luego, puedes básicamente explotar un SSRF para **comunicarte con cualquier servidor TCP** (pero necesitas saber cómo hablar con el servicio primero).\
Afortunadamente, puedes usar [Gopherus](https://github.com/tarunkant/Gopherus) para crear cargas útiles para varios servicios. Adicionalmente, [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) puede ser utilizado para crear cargas útiles _gopher_ para servicios _Java RMI_.
Si el SSRF se ejecuta mediante **curl**, curl tiene una característica llamada [**URL globbing**](https://everything.curl.dev/cmdline/globbing) que podría ser útil para evadir WAFs. Por ejemplo, en este [**informe**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-easylfi) puedes encontrar este ejemplo para un **path traversal vía protocolo `file`**:
Algunas aplicaciones utilizan software de análisis del lado del servidor que rastrea a los visitantes. Este software a menudo registra el encabezado Referrer en las solicitudes, ya que esto es de particular interés para el seguimiento de enlaces entrantes. A menudo, el software de análisis visitará cualquier URL de terceros que aparezca en el encabezado Referrer. Esto se hace típicamente para analizar el contenido de los sitios de referencia, incluyendo el texto ancla que se utiliza en los enlaces entrantes. Como resultado, el encabezado Referer a menudo representa una superficie de ataque fructífera para las vulnerabilidades SSRF.\
Con esta configuración insegura, podemos **explotar la vulnerabilidad SSRF simplemente especificando la IP o nombre de dominio deseado en el campo SNI**. Por ejemplo, el siguiente comando forzaría a Nginx a conectarse a _internal.host.com_:
Si la página web está creando automáticamente un PDF con alguna información que has proporcionado, puedes **insertar JS que será ejecutado por el creador del PDF** (el servidor) mientras crea el PDF y podrás abusar de un SSRF. [**Encuentra más información aquí**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)**.**
Para algunas explotaciones podrías necesitar **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**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente, potenciados por las herramientas comunitarias **más avanzadas** del mundo.\
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) es una herramienta para realizar ataques de [DNS rebinding](https://en.wikipedia.org/wiki/DNS\_rebinding). Incluye los componentes necesarios para cambiar la dirección IP del nombre del servidor DNS del atacante a la dirección IP de la máquina objetivo y para servir cargas útiles de ataque para explotar software vulnerable en la máquina objetivo.
3. Se crea una **conexión TLS** entre la víctima y el dominio del atacante. El atacante introduce el **payload dentro** del **ID de Sesión o Ticket de Sesión**.
4. El **dominio** comenzará un **bucle infinito** de redirecciones contra **sí mismo**. El objetivo de esto es hacer que el usuario/bot acceda al dominio hasta que realice **de nuevo** una **solicitud DNS** del dominio.
6. El usuario/bot intentará **restablecer la conexión TLS** y para hacerlo **enviará** el **ID de Sesión/Ticket** (donde estaba contenido el **payload** del atacante). Así que felicidades, has logrado que el **usuario/bot se ataque a sí mismo**.
Ten en cuenta que durante este ataque, si quieres atacar localhost:11211 (_memcache_) necesitas hacer que la víctima establezca la conexión inicial con www.attacker.com:11211 (el **puerto siempre debe ser el mismo**).\
Para **realizar este ataque puedes usar la herramienta**: [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/TLS-poison/)\
Para **más información** echa un vistazo a la charla donde se explica este ataque: [https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference](https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference)
La diferencia entre un SSRF ciego y uno que no lo es, es que en el ciego no puedes ver la respuesta de la solicitud SSRF. Entonces, es más difícil de explotar porque solo podrás explotar vulnerabilidades bien conocidas.
**Comprobando el tiempo** de las respuestas del servidor podría ser **posible saber si un recurso existe o no** (quizás toma más tiempo acceder a un recurso existente que a uno que no existe)
Si encuentras una vulnerabilidad SSRF en una máquina que se ejecuta dentro de un entorno en la nube, podrías obtener información interesante sobre el entorno de la nube e incluso credenciales:
_remote-method-guesser_ es un escáner de vulnerabilidades _Java RMI_ que admite operaciones de ataque para la mayoría de las vulnerabilidades comunes de _Java RMI_. La mayoría de las operaciones disponibles admiten la opción `--ssrf`, para generar una carga útil _SSRF_ para la operación solicitada. Junto con la opción `--gopher`, se pueden generar directamente cargas útiles _gopher_ listas para usar.
SSRF Proxy es un servidor proxy HTTP multi-hilo diseñado para tunelizar el tráfico HTTP del cliente a través de servidores HTTP vulnerables a Server-Side Request Forgery (SSRF).
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente, potenciados por las herramientas comunitarias **más avanzadas** del mundo.\