Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2017-5638-Attack-and-Defense — # Laboratoire de sécurité basé sur Docker démontrant l'exploitation et la défense d'Apache Struts2 S2-045 (CVE-2017-5638), avec des applications vulnérables et corrigées ainsi qu'une protection WAF pour une formation pratique. | Kitploit
Outils/GitHubGitHub/acharaf06/cve-2017-5638-attack-and-defense
Outils DéfensifsAnalyse des VulnérabilitésExploitation d'Applications WebContournement de WAFTests d'IntrusionApprentissage et ÉducationLabs et Pratique
GitHub
acharaf06/cve-2017-5638-attack-and-defense

CVE-2017-5638-Attack-and-Defense

# Laboratoire de sécurité basé sur Docker démontrant l'exploitation et la défense d'Apache Struts2 S2-045 (CVE-2017-5638), avec des applications vulnérables et corrigées ainsi qu'une protection WAF pour une formation pratique.

Voir le dépôt
115il y a 9 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Laboratoire de Défense et d'Exploitation Apache Struts2 S2-045

Un laboratoire de sécurité basé sur Docker démontrant à la fois l'exploitation et la défense contre la vulnérabilité Apache Struts2 S2-045 (CVE-2017-5638). Ce laboratoire comprend :

  1. Application vulnérable : Struts 2.3.31 (vulnérable à S2-045) pour la démonstration d'exploitation
  2. Laboratoire de défense : Struts 6.3.x (corrigé) avec protection WAF pour l'entraînement défensif

⚠️ Avertissement de sécurité : Ce laboratoire contient des exploits fonctionnels et du code vulnérable. À utiliser uniquement dans des environnements isolés. Ne pas exposer aux réseaux publics.

Aperçu de l'architecture

┌─────────────────────────────────────────────────────────────┐
│                     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/                  │
└─────────────────────────────────────────────────────────────┘

Composants

ConteneurObjectifPort
nginxProxy inverse avec règles WAF, limitation de débit127.0.0.1:8080
appTomcat 9 + Struts 6.3.x (corrigé, laboratoire de défense)Interne uniquement
app-vulnerableTomcat 9 + Struts 2.3.31 (vulnérable, pour exploitation)127.0.0.1:8081
exploitConteneur de démonstration d'exploitationN/A
simulatorEnvoie des requêtes de test (modèles bénins + suspects)N/A

Pour commencer

Prérequis

  • Docker (version 20.10 ou ultérieure)
  • Docker Compose (version 2.0 ou ultérieure)
  • Python 3 (optionnel, pour exécuter les scripts d'exploitation directement)
  • curl (optionnel, pour les tests manuels)

Installation

1. Cloner le dépôt

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

2. Construire et exécuter

# 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

Sortie attendue :

  • Laboratoire de défense : réponse JSON avec "status":"healthy" et "strutsVersion":"6.3.0.2 (corrigé - non vulnérable à S2-045)"
  • Application vulnérable : réponse JSON avec "status":"healthy" et "strutsVersion":"2.3.31 (VULNÉRABLE à S2-045)"

2. Test du laboratoire de défense

# 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. Démonstration d'exploitation

# 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

⚠️ Avertissement : L'application vulnérable est intentionnellement exploitable. À exécuter uniquement dans des environnements isolés.

4. Observer les journaux

# 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

Ce qu'il faut observer

Laboratoire de défense (Port 8080)

Requête légitime :

  • Journal d'accès Nginx : réponse 200
  • Journal d'application : message de traitement de téléversement de niveau INFO
  • La requête se termine avec succès

Requête suspecte/malformée :

  • Journal d'accès Nginx : 403 Forbidden ou 400 Bad Request
  • Journal d'erreurs Nginx : message de déclenchement de règle WAF
  • Journal d'application : peut afficher une erreur d'analyse si la requête atteint l'application
  • La requête est bloquée ou nettoyée

Application vulnérable (Port 8081)

Exploitation réussie :

  • Réponse HTTP 200 ou 500
  • Sortie de commande visible dans le corps de la réponse
  • Expressions OGNL évaluées
  • Commandes système exécutées

Exemples de journaux :

[WAF] Blocked suspicious Content-Type pattern - Request ID: abc123
[REQUEST] ID=abc123 Content-Type=multipart/form-data Method=POST URI=/upload
[UPLOAD] Processing file upload for request abc123
HTTP/1.1 200 OK
...
root
(Command output appears in response body)

Comparaison : Vulnérable vs Défense

FonctionnalitéApplication vulnérable (Port 8081)Laboratoire de défense (Port 8080)
Version Struts2.3.31 (vulnérable)6.3.0.2 (corrigé)
Protection WAF❌ Aucune✅ Règles WAF Nginx
Limitation de débit❌ Aucune✅ 10 req/s
Limites de taille de requête❌ Aucune✅ Corps 10 Mo, en-têtes 8 Ko
Journalisation de sécurité⚠️ Minimale✅ Complète
Injection OGNL✅ Exploitable❌ Bloquée/Corrigée
RCE Possible✅ Oui❌ Non
Cas d'utilisationDémo d'exploitationEntraînement défensif

Notes de sécurité

Isolation

  • Tous les services liés à 127.0.0.1 uniquement (aucun accès externe)
  • Réseau Docker interne pour la communication entre conteneurs
  • Aucune exposition de port à 0.0.0.0
  • L'application vulnérable ne doit JAMAIS être exposée aux réseaux publics

Couches de défense (Laboratoire de défense)

  1. Règles WAF Nginx : Bloquer les modèles Content-Type suspects avant d'atteindre l'application
  2. Limitation de débit : 10 requêtes/seconde par IP
  3. Limites de taille de requête : Corps max 10 Mo, en-têtes max 8 Ko
  4. Struts corrigé : Utilise Struts 6.3.x (non vulnérable à S2-045)
  5. Journalisation complète : Toute activité suspecte est journalisée
Télécharger l’outil