Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2023-25690 — Proof-of-Concept-Exploit für CVE-2023-25690 HTTP Request Smuggling in Apache mod_proxy. Enthält eine Laborumgebung mit Docker, BurpSuite-Walkthrough und Umgehung von Proxy-Zugriffskontrollen, um interne Admin-Endpunkte zu erreichen. | Kitploit
Tools/GitHubGitHub/thanhlam-attt/cve-2023-25690
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsLernen & Bildung
GitHubthanhlam-attt/cve-2023-25690

CVE-2023-25690

Proof-of-Concept-Exploit für CVE-2023-25690 HTTP Request Smuggling in Apache mod_proxy. Enthält eine Laborumgebung mit Docker, BurpSuite-Walkthrough und Umgehung von Proxy-Zugriffskontrollen, um interne Admin-Endpunkte zu erreichen.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
41vor 2 JahrenNoch nicht geprüft

CVE-2023-25690

Beschreibung von CVE-2023-25690:

  • Einige mod_proxy-Konfigurationen auf dem Apache HTTP Server von Version 2.4.0 bis 2.4.55 ermöglichen HTTP-Request-Smuggling-Angriffe (eine Angriffstechnik, die in den Prozess eingreift, mit dem eine Website die von einem oder mehreren Benutzern empfangenen HTTP-Anforderungssequenzen verarbeitet).
  • Diese Konfigurationen sind betroffen, wenn mod_proxy zusammen mit bestimmten Formen von RewriteRule oder ProxyPassMatch aktiviert ist, bei denen ein entfernter Angreifer diese Schwachstelle ausnutzen kann, um Zugriffskontrollen auf dem Proxy-Server zu umgehen und dadurch unerwünschte URLs an den Ursprungsserver weiterzuleiten.
  • Diese Schwachstelle ermöglicht es einem Angreifer, auf interne Anwendungen abzuzielen und zuzugreifen, die vom Proxy verborgen werden, was möglicherweise zu unbefugtem Zugriff, Datenlecks oder tiefergehender Ausnutzung des Systems führt.

Experimentelle Durchführung von CVE-2023-25690

  • Verwendung eines Windows-Rechners als Angreifer
  • Der Backend-Server und der Proxy-Server werden über Docker auf einer Kali-Linux-Maschine bereitgestellt

Struktur der Lab-Dateien:

image

Experimentelles Modell

image

  • IP-Adresse des Windows 10 Rechners: 192.168.1.177
  • IP-Adresse des Kali Linux Rechners: 192.168.27.139
  • IP-Adresse des Backend-Servers: 172.18.0.2
  • IP-Adresse des Proxy-Servers: 172.18.0.3
  • Wenn der Windows 10 Rechner auf den Apache HTTP Server zugreift, der auf der Kali-Maschine auf Port 80 gehostet wird, wird der Datenverkehr an Port 80 des Proxy-Servers weitergeleitet und von dort über Port 8080 an den Backend-Server weitergeleitet.

Systemanforderungen

  • Angreifer-Rechner:
    • Betriebssystem Windows 10
    • Installierte Tools: Pycharm, BurpSuite, VScode
    • Verwendung des Firefox-Browsers mit installierter FoxyProxy-Erweiterung zur Proxy-Konfiguration
  • Opfer-Rechner:
    • Installierte Tools und Dienste: Docker, Tcpdump
    • Konfiguration der Docker-Datei (siehe Anhang)

Ausbeutungsziel: Ausnutzung der Schwachstelle HTTP Request Smuggling, um die Einschränkungen des Proxy-Servers zu umgehen und auf eine versteckte Funktion auf der Seite admin.php zuzugreifen.

Experimentelle Durchführung:

  • Verwendung von BurpSuite Community als Proxy zum Abfangen und Bearbeiten von Requests
  • Im Browser die FoxyProxy-Erweiterung installieren und die Proxy-Informationen hinzufügen: image
  • FoxyProxy in der Symbolleiste (im Erweiterungsbereich des Browsers) aktivieren, von "Turn Off" auf "BurpSuite Commu" umschalten:
    image
  • In BurpSuite den Intercept auf "on" stellen, um Pakete abzufangen:
    image
  • Auf der Kali-Maschine mit dem Befehl cd in das Lab-Verzeichnis wechseln, das die Datei docker-composer.yml enthält, und Docker Compose mit dem Befehl ausführen: docker-composer up --build

Überprüfung von CRLF-Injection:

  • Zunächst senden wir einen Request mit Steuerzeichen (CRLF) an das System, wie folgt: HTTP/1.1\r\nFoo: baarr\r\r\n\n und URL-kodieren als: %20HTTP/1.1%0d%0aFoo:%20baarr
    image
    => Man sieht, dass der Server unseren Request verarbeitet, ohne Fehler oder Einschränkungen zurückzugeben, wenn wir CRLF-Zeichen (%0d%0a) einfügen. Das zeigt, dass wir problemlos CRLF-Zeichen einfügen können.

Überprüfung von HTTP Request Smuggling:

  • Als nächstes haben wir folgende URI: /categories/1 HTTP/1.1\r\nHost: Localhost\r\n\r\nGET /SMUGGLED, nach URL-Kodierung erhalten wir: /categories/1%20HTTP/1.1%0d%0aHost:%20localhost%0d%0a%0d%0aGET%20/SMUGGLED/
    image
  • Nach Anwendung der RewriteRule ist ersichtlich, dass die URL analysiert wird und der von uns gesendete Request nach Durchlaufen des Proxys in folgendes Format umgewandelt wird:
    image
  • Man sieht, dass ein von uns gesendeter Request vom Server empfangen wird und bis zu zwei Responses zurückgegeben werden, eine von GET /categories und eine von GET /SMUGGLED.
    image

Ausbeutung von HTTP Request Smuggling:

  • Angenommen, in der Datei httpd.conf konfigurieren wir den Proxy-Server so, dass der Zugriff auf die Seite /admin/ blockiert wird. image
  • Wir können HTTP Request Smuggling ausnutzen, um die Prüfung des Apache-Proxys mit folgendem Request zu umgehen:
    image
    • Bei der Log-Prüfung stellen wir fest, dass der Apache-Proxy erfolgreich umgangen wurde, der Request an /admin erfolgreich gesendet wurde und der Backend-Server den Statuscode 200 für GET /admin zurückgegeben hat.
      image
    • Angenommen, in der Datei admin.php gibt es eine Funktion, die den Systembefehl nslookup ausführt, um eine beliebige Domain abzufragen, wie folgt. Unser Ziel ist es, die Proxy-Mechanismen zu umgehen und auf diese versteckte Funktion zuzugreifen, um eine DNS-Abfrage an eine beliebige Domain zu senden, hier an unsere eigene Kali-Maschine.
      image
    • Wir haben den Ausbeutungscode (Datei CVE-2023-25690.py) und die Datei pre.txt (enthält den geschmuggelten Request, den wir am Proxy-Server vorbei senden möchten, hier /admin.php). Dieser Code erstellt einen geschmuggelten Request mit dem gewünschten Request aus pre.txt und sendet ihn an den Server. Gleichzeitig werden die Ergebnisse des Requests und der Response in die entsprechenden Dateien req.txt und res.txt geschrieben.
      image
    • Gleichzeitig verwenden wir auf der Kali-Maschine TCPDUMP, um DNS-Pakete auf Port 53 abzufangen.
      image
  • Man sieht, dass der von uns gesendete Request den Proxy erfolgreich umgehen konnte. Der Proxy betrachtet dies als gültigen Request. Auf dem Backend-Server wird der Request jedoch einschließlich der Steuerzeichen analysiert, so dass aus einem Request drei Requests werden: GET /categories.php?id=1, GET /admin.php?secret=192.168.1.194 und schließlich GET /abc.

Anhang

Konfiguration der DockerFile-Datei im Backend-Ordner

image

  • Diese Konfigurationsdatei gibt an, dass der Backend-Server das Image PHP 7.4-apache verwendet, ein Image, das PHP 7.4 zusammen mit dem Apache-Webserver enthält.
  • Der zweite Befehl kopiert den gesamten Inhalt aus dem Verzeichnis src/ in das Verzeichnis /var/www/html – das ist das Standardverzeichnis, das Apache zum Aufbau von Webinhalten verwendet, auch Web-Root genannt.
  • Der dritte Befehl verwendet sed, um alle Vorkommen von 80 durch 8080 zu ersetzen. Dadurch wird der Standardport von Apache auf dem Backend-Server von 80 auf 8080 geändert.
  • Der vierte Befehl dient zum Aktualisieren von Paketen und zum Installieren des Pakets dnsutils – weitere Informationen zu diesem Paket finden Sie hier https://github.com/iagox86/dnsutils/blob/master/README.md
  • Und der letzte Befehl wird beim Ausführen des Containers ausgeführt, nämlich der Befehl zum Starten des Apache-Webservers mit apache.

Konfiguration der DockerFile-Datei im Frontend-Ordner

image

  • Diese Datei kopiert die Datei httpd.conf aus dem Frontend-Ordner in die Datei /tmp/httd.conf und fügt schließlich den Inhalt dieser httpd.conf-Datei in die Datei /usr/local/apache2/conf/httpd.conf ein.
  • Die Datei httpd.conf ist die Hauptkonfigurationsdatei des Apache HTTP-Servers. Diese Datei definiert Konfigurationseinstellungen oder Aktivitäten im Server – hier dem Proxy-Server.
  • Die Datei httpd.conf wird normalerweise unter dem Pfad /usr/local/apache2/conf/httpd.conf installiert. Daher müssen wir den Inhalt in den Pfad /usr/local/apache2/conf/httpd.conf einfügen, während eine httpd.conf-Datei im Frontend-Ordner erstellt wird, um Apache flexibler konfigurieren zu können (ohne in den tiefen Pfad wechseln zu müssen, um die Datei httpd.conf neu zu schreiben).

Konfiguration der Datei docker-compose.yml:

image

  • Hier werden die notwendigen Services, Netzwerke usw. definiert, um die Anwendung auszuführen.
  • Hier deklarieren wir zwei Hauptservices: apache-proxy und backend-server:
    • Apache-Proxy: basiert auf der Datei ./frontend/DockerFile und dem Netzwerk backend-network (Bridge). Außerdem ist depends_on: backend-server konfiguriert, um anzugeben, dass Apache-Proxy erst nach dem erfolgreichen Start des Backend-Servers gestartet wird. Schließlich ports: "80:80" zur Angabe des Port-Forwardings, wobei der Datenverkehr, der auf Port 80 des Hosts ankommt, an Port 80 des Containers weitergeleitet wird.
    • Backend-Server: basiert auf der Datei ./backend/DockerFile mit dem Netzwerk backend-network zusammen mit dem Proxy, damit sie miteinander kommunizieren können. Die Konfiguration expose öffnet Port 8080, damit Apache-Proxy den Datenverkehr über diesen Port an den Backend-Server weiterleiten kann. Schließlich werden einige Sicherheitsfunktionen aktiviert, wie das Verhindern der Berechtigungserweiterung durch Benutzer (Hinzufügen, Ändern, Löschen von Dateien, Hinzufügen von Berechtigungen für Prozesse oder Netzwerke usw.) und das Filtern von Systemaufrufen, die von einem Programm ausgeführt werden.

Konfiguration der Datei httpd.conf

image

  • Zuerst die Konfiguration der Log-Speicherung unter den beiden Pfaden /use/local/apache2/logs/error.log und /use/local/apache2/logs/access.log.
  • Als nächstes das Laden der notwendigen Module, um RewriteRule anwenden zu können.
  • Dann die Angabe des DocumentRoot: die Datei, die den Parameter in der Apache-Konfigurationsdatei definiert, der festlegt, wo sich die Daten des Servers befinden.
  • Als nächstes die Anwendung der Rewrite-Regel für die Pfade zu /categories/ und /admin/.
  • Und schließlich das Blockieren des Sendens von Requests an /admin/ -> Zweck ist es, dass wir das Lab zum Umgehen des Proxys und zum Zugriff auf diese Seite durchführen können.
Tool herunterladen

image
  • Somit haben wir erfolgreich einen Request an /admin.php gesendet, wohin der Proxy uns das Senden von Requests nicht erlaubt.
    image
    => Die Überprüfung von TCPDUMP zeigt, dass TCPDUMP die an uns gesendeten DNS-Pakete abgefangen hat -> die versteckte Funktion in /admin.php wurde erfolgreich ausgeführt.