
Laboratoire basé sur Docker pour reproduire CVE-2021-41773 (Apache HTTP Server 2.4.49) via une traversée de chemin contrôlée et une divulgation de fichiers à l'aide d'un PoC Python personnalisé.
Reproduction de CVE-2021-41773, une vulnérabilité de traversée de chemin dans Apache HTTP Server 2.4.49.
Ce projet utilise Docker pour créer un environnement vulnérable isolé et un PoC Python pour démontrer la divulgation contrôlée de fichiers.
Sécurité : Le PoC n'accepte que les cibles
localhost,127.0.0.1ou::1. Les tests doivent rester dans le laboratoire isolé.
Ce projet démontre :
La démonstration se concentre sur la divulgation de fichiers plutôt que sur l'exécution de code à distance.
CVE-2021-41773-Apache-Lab/
│
├── docker/
│ ├── Dockerfile
│ ├── httpd-vulnerable.conf
│ └── secret.txt
│
├── exploit/
│ └── exploit.py
│
├── screenshots/
│ ├── 01-docker-container.png
│ ├── 02-apache-version.png
│ └── 03-successful-exploit.png
│
├── report/
│ └── CVE-2021-41773-Exploit-Report.pdf
│
├── requirements.txt
├── .gitignore
└── README.md
Le PoC n'utilise que la bibliothèque standard de Python et ne nécessite aucun package Python tiers.
Depuis la racine du dépôt :
docker build -t cve-2021-41773-lab ./docker
docker run --rm --name cve-2021-41773-lab \
-p 127.0.0.1:8080:80 \
cve-2021-41773-lab
Laissez ce terminal ouvert.
Le service Apache n'est exposé que via :
127.0.0.1:8080
Dans un autre terminal :
docker ps
Le conteneur doit afficher :
127.0.0.1:8080->80/tcp
docker exec cve-2021-41773-lab httpd -v
Résultat attendu :
Server version: Apache/2.4.49 (Unix)
curl http://127.0.0.1:8080/
La page de test Apache doit être renvoyée.
Le PoC se trouve dans :
exploit/exploit.py
Exécutez :
python3 exploit/exploit.py
La cible par défaut est :
http://127.0.0.1:8080
Le fichier de preuve par défaut est :
/lab/secret.txt
Une exécution réussie produit :
[+] Vulnerability reproduced.
[+] Controlled file disclosure confirmed.
Le PoC affiche ensuite le contenu du fichier contrôlé du laboratoire.
Le PoC vérifie d'abord que la cible est une adresse locale :
localhost
127.0.0.1
::1
Il construit ensuite un chemin contenant des composants de traversée encodés :
/cgi-bin/.%2e/.%2e/.%2e/.%2e/lab/secret.txt
La requête est envoyée à l'aide du module socket standard de Python. Cela donne au PoC un contrôle direct sur le chemin de la requête HTTP.
Le serveur Apache 2.4.49 vulnérable traite le chemin forgé et renvoie le contenu de :
/lab/secret.txt
La récupération de ce fichier confirme la traversée de chemin et la divulgation contrôlée de fichiers.
CVE : CVE-2021-41773
Produit : Apache HTTP Server
Version affectée démontrée : 2.4.49
Type de vulnérabilité : Traversée de chemin / Divulgation de fichiers
CVE-2021-41773 est une vulnérabilité de traversée de chemin dans Apache HTTP Server 2.4.49. Une URL spécialement conçue peut contourner les restrictions de chemin prévues et permettre l'accès à des fichiers en dehors du répertoire attendu.
Dans certaines configurations, la vulnérabilité peut avoir des conséquences plus graves. Ce projet démontre délibérément la divulgation contrôlée de fichiers dans un environnement Docker isolé.
Les captures d'écran collectées lors des tests sont stockées dans :
evidence/
Les preuves comprennent :
La principale mesure d'atténuation consiste à mettre à niveau Apache HTTP Server vers une version corrigée.
Des mesures défensives supplémentaires incluent :
Avis de sécurité Apache HTTP Server : https://httpd.apache.org/security/vulnerabilities_24.html
Base nationale de données sur les vulnérabilités NIST : https://nvd.nist.gov/vuln/detail/CVE-2021-41773
Avis de sécurité CERT-EU : https://cert.europa.eu/publications/security-advisories/2021-054/
Ce projet est destiné uniquement à l'éducation à la sécurité autorisée et aux tests de laboratoire contrôlés.
L'environnement Docker et le PoC sont conçus pour des tests locaux. N'utilisez pas le PoC contre des systèmes que vous ne possédez pas ou que vous n'avez pas l'autorisation explicite d'évaluer.