
Docker-basiertes Labor für Apache CVE-2021-41773 Path Traversal und RCE-Ausnutzung mit Python-Exploit-Skript, das Schwachstellenanalyse und Minderungsstrategien demonstriert.
Dieses Repository reproduziert eine öffentlich bekanntgegebene und gepatchte Sicherheitslücke in einer kontrollierten Docker-Lab-Umgebung für Bildungs- und Forschungszwecke.
Die Umgebung ist absichtlich anfällig und darf nur in isolierten Testumgebungen eingesetzt werden. Versuchen Sie nicht, Systeme ohne ausdrückliche Genehmigung auszunutzen.
Das Ziel dieses Projekts ist es, Schwachstellenanalyse, Ausnutzung und Abwehrstrategien zu demonstrieren.
Path Traversal & Remote Code Execution
# Navigate to the project folder
cd Apache-CVE-2021-41773
# Validate compose syntax
docker compose config
# Start the lab
docker compose up -d --build
# Check that everything is running
docker compose ps
Apache 2.4.49 führte einen Fehler in der URL-Pfadnormalisierung ein. Kodierte Sequenzen wie .%2e (äquivalent zu ..) werden nicht ordnungsgemäß bereinigt, sodass ein Angreifer den Verzeichnisbaum über das DocumentRoot hinaus durchlaufen kann.
Wenn mod_cgi aktiviert ist und das Root-Verzeichnis (/) mit Require all granted konfiguriert ist, kann ein Angreifer:
/bin/sh-Interpreter (RCE)exploit.py)Keine externen Abhängigkeiten – verwendet nur die Python-Standardbibliothek.
Auto python exploit.py Überprüfe Schwachstelle + führe id als Demo aus
Read file python exploit.py -f /etc/shadow Lese beliebige Datei über RCE
RCE python exploit.py -c "whoami" Führe einen einzelnen Befehl aus
Shell python exploit.py -i Interaktive Pseudo-Shell
Custom target python exploit.py -u http://target:8888 Ziele auf einen entfernten Host
Zunächst überprüfen wir, ob die Umgebung anfällig ist.
Wie erwartet gibt der Befehl die ID uid=0(root) gid=0(root) groups=0(root) zurück.
Erstellen wir eine Reverse Shell :
Wir sind als root angemeldet.
Wie Sie sehen können, gibt es eine Fehlkonfiguration in /proc/1/environ; wir haben das SQL-Passwort erhalten. Dies zeigt offengelegte Geheimnisse, die durch eine unsichere Container-Konfiguration verursacht wurden.
Mit den extrahierten Anmeldeinformationen verbinden wir uns mit der MySQL-Datenbank und geben die gespeicherten Daten aus.

Reproduzieren Sie diese Konfigurationen niemals in einer Produktionsumgebung.