Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2017-5638-Attack-and-Defense — Laboratorio di sicurezza basato su Docker che dimostra lo sfruttamento e la difesa di Apache Struts2 S2-045 (CVE-2017-5638), con applicazioni vulnerabili e patchate con protezione WAF per formazione pratica. | Kitploit
Strumenti/GitHubGitHub/acharaf06/cve-2017-5638-attack-and-defense
Strumenti DifensiviAnalisi delle VulnerabilitàSfruttamento di Applicazioni WebBypass WAFPenetration TestingApprendimento e FormazioneLab e Pratica
GitHub

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
acharaf06/cve-2017-5638-attack-and-defense

CVE-2017-5638-Attack-and-Defense

Laboratorio di sicurezza basato su Docker che dimostra lo sfruttamento e la difesa di Apache Struts2 S2-045 (CVE-2017-5638), con applicazioni vulnerabili e patchate con protezione WAF per formazione pratica.

Vedi Repository
1129 mesi faNon ancora revisionato
Condividi

Laboratorio di Difesa e Sfruttamento di Apache Struts2 S2-045

Un laboratorio di sicurezza basato su Docker che dimostra sia lo sfruttamento che la difesa contro la vulnerabilità Apache Struts2 S2-045 (CVE-2017-5638). Questo laboratorio include:

  1. Applicazione Vulnerabile: Struts 2.3.31 (vulnerabile a S2-045) per dimostrazione dello sfruttamento
  2. Laboratorio di Difesa: Struts 6.3.x (corretto) con protezione WAF per formazione difensiva

⚠️ Avviso di Sicurezza: Questo laboratorio contiene exploit funzionanti e codice vulnerabile. Da usare solo in ambienti isolati. NON esporre a reti pubbliche.

Panoramica dell'Architettura

┌─────────────────────────────────────────────────────────────┐
│                     Host (127.0.0.1 only)                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────┐    ┌─────────────────┐              │
│  │   Simulator     │───▶│  Nginx Proxy    │              │
│  │  (curl-based)   │    │  + WAF Rules    │              │
│  └─────────────────┘    └────────┬────────┘              │
│                                  │                        │
│                          ┌───────┴────────┐              │
│                          │                │                │
│                  ┌───────▼──────┐ ┌───────▼──────┐        │
│                  │  Defense App │ │ Vulnerable   │        │
│                  │ (Struts 6.3) │ │ App (2.3.31) │        │
│                  │ Port: 8080  │ │ Port: 8081  │        │
│                  └──────────────┘ └──────────────┘        │
│                                                             │
│  ┌─────────────────┐                                      │
│  │  Exploit        │───▶ Vulnerable App (8081)            │
│  │  Container      │                                      │
│  └─────────────────┘                                      │
│                                                             │
│  Logs mounted to: ./logs/nginx/, ./logs/app/,             │
│                   ./logs/app-vulnerable/                  │
└─────────────────────────────────────────────────────────────┘

Componenti

ContenitoreScopoPorta
nginxProxy inverso con regole WAF, limitazione della velocità127.0.0.1:8080
appTomcat 9 + Struts 6.3.x (corretto, laboratorio di difesa)Solo interno
app-vulnerableTomcat 9 + Struts 2.3.31 (vulnerabile, per sfruttamento)127.0.0.1:8081
exploitContenitore dimostrativo di sfruttamentoN/D
simulatorInvia richieste di test (pattern benigni + sospetti)N/D

Per Iniziare

Prerequisiti

  • Docker (versione 20.10 o successiva)
  • Docker Compose (versione 2.0 o successiva)
  • Python 3 (opzionale, per eseguire script di exploit direttamente)
  • curl (opzionale, per test manuali)

Installazione

1. Clona il Repository

# Clone the repository
git clone https://github.com/ACharaf06/cybersec.git
cd cybersec

2. Costruisci ed Esegui

# Build all containers (this may take several minutes on first run)
docker compose build

# Start the defense lab (nginx + patched app)
docker compose up -d nginx app

# Start the vulnerable app (for exploitation demo)
docker compose up -d app-vulnerable

# Verify services are running
docker compose ps

# Wait for services to be healthy (about 60 seconds)
sleep 60

# Check health endpoints
curl http://127.0.0.1:8080/struts-lab/health  # Defense lab
curl http://127.0.0.1:8081/struts-lab/health   # Vulnerable app

Output Previsto:

  • Laboratorio di difesa: risposta JSON con "status":"healthy" e "strutsVersion":"6.3.0.2 (patched - not vulnerable to S2-045)"
  • App vulnerabile: risposta JSON con "status":"healthy" e "strutsVersion":"2.3.31 (VULNERABLE to S2-045)"

2. Test del Laboratorio di Difesa

# Run the simulator container (tests defense mechanisms)
docker-compose run --rm simulator

# Or run individual tests manually:
# Legitimate upload
curl -X POST -F "[email protected]" http://127.0.0.1:8080/struts-lab/upload

# Suspicious Content-Type (will be blocked by WAF)
curl -v -X POST \
  -H "Content-Type: multipart/form-data; boundary=----SUSPICIOUS" \
  http://127.0.0.1:8080/struts-lab/upload

3. Dimostrazione di Sfruttamento

# Run the exploit container (demonstrates S2-045 exploitation)
docker-compose --profile exploit run --rm exploit

# Or use the Python exploit script directly
python3 exploit/exploit.py http://127.0.0.1:8081/struts-lab 'whoami'

# Or use the bash script
./exploit/demo_exploit.sh

⚠️ Avviso: L'applicazione vulnerabile è intenzionalmente sfruttabile. Eseguire solo in ambienti isolati.

4. Osserva i Log

# Defense lab logs
tail -f logs/nginx/access.log      # Nginx access logs
tail -f logs/nginx/error.log       # WAF blocks
tail -f logs/app/struts-lab.log    # Defense app logs

# Vulnerable app logs
tail -f logs/app-vulnerable/struts-lab.log  # Vulnerable app logs

# All logs combined
docker-compose logs -f

Cosa Osservare

Laboratorio di Difesa (Porta 8080)

Richiesta Legittima:

  • Log di accesso Nginx: risposta 200
  • Log dell'app: messaggio di elaborazione upload a livello INFO
  • Richiesta completata con successo

Richiesta Sospetta/Malformata:

  • Log di accesso Nginx: 403 Forbidden o 400 Bad Request
  • Log errori Nginx: messaggio di regola WAF attivata
  • Log dell'app: potrebbe mostrare errore di parsing se la richiesta raggiunge l'app
  • Richiesta bloccata o sanificata

App Vulnerabile (Porta 8081)

Sfruttamento Riuscito:

  • Risposta HTTP 200 o 500
  • Output del comando visibile nel corpo della risposta
  • Espressioni OGNL valutate
  • Comandi di sistema eseguiti

Esempi di Log:

Nginx blocca Content-Type sospetto (Laboratorio di Difesa):

[WAF] Blocked suspicious Content-Type pattern - Request ID: abc123

Log dei metadati della richiesta nell'app (Laboratorio di Difesa):

[REQUEST] ID=abc123 Content-Type=multipart/form-data Method=POST URI=/upload
[UPLOAD] Processing file upload for request abc123

Sfruttamento riuscito (App Vulnerabile):

HTTP/1.1 200 OK
...
root
(Command output appears in response body)

Confronto: Vulnerabile vs Difesa

CaratteristicaApp Vulnerabile (Porta 8081)Laboratorio di Difesa (Porta 8080)
Versione Struts2.3.31 (vulnerabile)6.3.0.2 (corretto)
Protezione WAF❌ Nessuna✅ Regole WAF Nginx
Limitazione di Velocità❌ Nessuna✅ 10 richieste/s
Limiti Dimensione Richiesta❌ Nessuno✅ 10MB corpo, 8KB intestazioni
Registrazione di Sicurezza⚠️ Minima✅ Completa
Iniezione OGNL✅ Sfruttabile❌ Bloccata/Corretta
RCE Possibile✅ Sì❌ No
Caso d'UsoDimostrazione sfruttamentoFormazione difensiva

Note di Sicurezza

Isolamento

  • Tutti i servizi vincolati solo a 127.0.0.1 (nessun accesso esterno)
  • Rete Docker interna per comunicazione tra container
  • Nessuna esposizione di porta a 0.0.0.0
  • L'app vulnerabile NON deve MAI essere esposta a reti pubbliche

Strati Difensivi (Laboratorio di Difesa)

  1. Regole WAF Nginx: Blocca pattern sospetti di Content-Type prima che raggiungano l'app
  2. Limitazione di Velocità: 10 richieste/secondo per IP
  3. Limiti Dimensione Richiesta: massimo 10MB corpo, 8KB intestazioni
  4. Struts Corretto: Utilizza Struts 6.3.x (non vulnerabile a S2-045)
  5. Registrazione Completa: Tutte le attività sospette vengono registrate
Scarica lo strumento