Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cve-2024-4577-lab — # Docker-basiertes CTF-Labor zur Demonstration von CVE-2024-4577 PHP-CGI-Argumentinjektion, die zu RCE führt. Enthält verwundbares PHP 5.4.1 CGI, Exploit-Skripte und Flag-Abruf. | Kitploit
Tools/GitHubGitHub/khwajasaad267-coder/cve-2024-4577-lab
SchwachstellenanalyseExploitationWebanwendungs-ExploitationCTFPenetrationstestsLernen & BildungLabs & Praxis
GitHubkhwajasaad267-coder/cve-2024-4577-lab

cve-2024-4577-lab

# Docker-basiertes CTF-Labor zur Demonstration von CVE-2024-4577 PHP-CGI-Argumentinjektion, die zu RCE führt. Enthält verwundbares PHP 5.4.1 CGI, Exploit-Skripte und Flag-Abruf.

Repository anzeigen
24vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2024-4577 — PHP-CGI Argument Injection → RCE (Docker Lab / CTF)

Ein eigenständiges, von Grund auf aufgebautes Docker-Lab, das die echte Argument-Injection → Remote-Code-Execution-Primitive hinter CVE-2024-4577 demonstriert. Nutze es über http://localhost:8080 aus, öffne eine Shell und lies die Flagge aus dem Container.

Dies ist eine echte Schwachstelle, keine simulierte. Der Container kompiliert ein ungepatchtes PHP 5.4.1 CGI-Binary und verdrahtet es hinter Apache genau so, wie echte verwundbare Hosts konfiguriert sind. Es gibt keinen Fake-Check wie "if password == flag" — der einzige Weg zur Flagge ist, tatsächlich Code-Ausführung zu erreichen.


⚠️ Zuerst lesen — Linux vs. Windows (wichtig & ehrlich)

Der signature Payload von CVE-2024-4577 verwendet %AD (ein weiches Trennzeichen). Dieser Trick funktioniert nur unter Windows, weil die "Best-Fit"-Zeichenkodierung von Windows das Byte 0xAD in ein echtes - (0x2D) umwandelt, nachdem der CVE-2012-1823-Patch von PHP die Query-String bereits geprüft hat. Diese Kodierungsumwandlung wird von Windows selbst durchgeführt — sie passiert nicht in einem normalen Linux-Docker-Container.

Ein getreues, auf deinem Rechner lauffähiges Linux-Lab reproduziert also die exakt gleiche RCE-Primitive — php-cgi-Options-Injection über die URL → -d auto_prepend_file=php://input → Code-Ausführung — unter Verwendung der wörtlichen --Form (die der Eltern-Bug von CVE-2024-4577 ist, CVE-2012-1823). Der einzige Unterschied zu einem echten Windows-CVE-2024-4577-Ziel ist die %AD→--Encoding-Bypass-Schicht, die diese README vollständig dokumentiert (siehe Wie der Exploit funktioniert — Schritt für Schritt und poc.http).

Dieses Linux-LabEchtes CVE-2024-4577 (Windows)
Verwundbare Komponentephp-cgiphp-cgi
RCE-Primitive-d auto_prepend_file=php://inputidentisch
Trennzeichen in der URLwörtliches -%AD (Best-Fit → -)
Umgeht den 2012-Patch?N/A (PHP stammt aus der Zeit vor dem Patch)Ja, über Windows-Best-Fit
Läuft auf Win 11 Home + Docker Desktop✅❌ (benötigt Windows-Container)

Wenn du speziell die bit-genaue Windows-%AD-Reproduktion benötigst, brauchst du einen Docker-Host mit Windows-Container-Unterstützung (Windows Server / Win Pro + Hyper-V) — auf Windows 11 Home wird das nicht laufen. Der Windows-Payload ist in poc.http als Referenz enthalten.


1. CVE-Beschreibung

CVE-2024-4577 — PHP-CGI-Argument-Injection, die zu Remote Code Execution führt. Entdeckt von DEVCORE (Orange Tsai / Angelboy), veröffentlicht am 2024-06-06.

Wenn PHP im CGI-Modus bereitgestellt wird (oder das php-cgi.exe-Binary anderweitig erreichbar ist) unter Windows mit bestimmten System-Locales (Traditionelles/Vereinfachtes Chinesisch, Japanisch und andere), übergibt der Webserver die HTTP-Query-String als Kommandozeilenargumente an php-cgi. Ein Angreifer kann php-cgi-Kommandozeilenoptionen (-d ...) in diese Query-String schmuggeln. Die Best-Fit-Codepage-Konvertierung von Windows wandelt das Soft-Hyphen-Byte 0xAD (%AD) in ein ASCII-Hyphen - um, das an der CVE-2012-1823-Härtung vorbeischlüpft und dem Angreifer erlaubt, beliebige PHP-INI-Direktiven zu setzen — am nützlichsten auto_prepend_file=php://input mit allow_url_include=1, was den vom Angreifer gelieferten Request-Body als PHP ausführt. Ergebnis: unauthentifizierte Remote Code Execution. Es wurde innerhalb von Tagen in freier Wildbahn bewaffnet (z. B. TellYouThePass-Ransomware).

2. Grundursache

  1. CGI übergibt die Query-String als argv. Gemäß RFC 3875: Wenn die Query-String einer CGI-Anfrage kein unkodiertes = enthält, teilt der Server sie an + auf, URL-dekodiert jedes Wort und übergibt die Wörter als Kommandozeilenargumente an das CGI-Programm. php-cgi erhält daher angreiferkontrolliertes argv.

  2. php-cgi parst diese argv als Optionen. Historisch interpretierte php-cgi -d key=value, -T usw. aus diesem argv. Das Einspeisen von -d allow_url_include=1 -d auto_prepend_file=php://input bringt PHP dazu, den Request-Body als Code auszuführen → CVE-2012-1823.

  3. Der CVE-2012-1823-Fix ist unter Windows unvollständig. Der Patch von 2012 fügte in sapi/cgi/cgi_main.c eine Absicherung hinzu: grob gesagt "wenn die (rohe) Query-String mit - beginnt und kein = enthält, überspringe die Options-Parsing (skip_getopt)." Ein Angreifer, der ein wörtliches - sendet, wird nun blockiert.

  4. Best-Fit-Kodierung schlägt die Absicherung (der Bug von 2024). Unter Windows konvertiert PHP die Kommandozeile mit der Locale-Codepage und aktiviertem Best-Fit-Mapping. Der Angreifer sendet %AD (Byte 0xAD, Soft-Hyphen). Zum Zeitpunkt der Prüfung der Absicherung ist das erste Byte 0xAD, nicht -, also wird skip_getopt nicht gesetzt. Später, wenn PHP tatsächlich das argv aufbaut, mappt Windows per Best-Fit 0xAD → -, sodass getopt nun -d sieht. Die Options-Injection feuert nach der Prüfung, die sie hätte stoppen sollen. Diese Prüfe-dann-Konvertiere- Reihenfolge ist die gesamte Schwachstelle.

In diesem Linux-Lab werden die Schritte 1–2 exakt mit einem php-cgi reproduziert, das aus der Zeit vor dem Patch aus Schritt 3 stammt, sodass die wörtliche --Form funktioniert und die identische RCE demonstriert. Schritt 4 ist die Windows-only-Schicht, dokumentiert, aber nicht ausgeführt (Linux hat keine Best-Fit-Konvertierung).

3. Betroffene Versionen (echtes CVE-2024-4577)

Behoben in 8.3.8, 8.2.20, 8.1.29. Daher verwundbar:

  • PHP 8.3.0 – 8.3.7
  • PHP 8.2.0 – 8.2.19
  • PHP 8.1.0 – 8.1.28
  • PHP 8.0.x, 7.x, 5.x — End-of-Life, ungepatcht, ebenfalls betroffen

Bedingungen: Windows-Betriebssystem; PHP läuft als CGI oder php-cgi.exe ist exponiert (die Standard-XAMPP-auf-Windows-Konfiguration ist verwundbar); ein betroffenes Locale für den Best-Fit-Pfad. (Der Eltern-Bug CVE-2012-1823 — die Primitive, die dieses Lab ausführt — betrifft jedes Betriebssystem, das ein php-cgi vor dem 2012er-Fix in dieser Konfiguration ausführt.)

4. Projektstruktur```

cve-2024-4577-lab/ ├── Dockerfile # builds the lab: compiles unpatched PHP 5.4.1 CGI + Apache ├── Dockerfile.vulhub # fallback: prebuilt vulnerable base image (if compile fails) ├── docker-compose.yml # one-command build+run, maps localhost:8080 -> 80 ├── start.sh # container entrypoint (Apache foreground) ├── exploit.sh # one-shot RCE PoC (bash + curl) ├── poc.http # raw HTTP requests (Linux payload + real Windows %AD payload) ├── app/ │ └── index.php # ordinary web page (NOT itself vulnerable) ├── config/ │ ├── apache-vhost.conf # the vulnerable Apache <-> php-cgi wiring │ └── php.ini # minimal php.ini (cgi.force_redirect=0, etc.) ├── flag.txt # the flag (copied to /flag.txt in the container) └── README.md # this file

## 5. Voraussetzungen

- **Docker Desktop** (Windows/macOS) oder Docker Engine (Linux).
  Windows 11 Home: Docker Desktop mit dem **WSL 2**-Backend installieren (Standard).
  → https://www.docker.com/products/docker-desktop/
- `curl` für die Ausnutzung (`curl.exe` ist in Windows 10/11 integriert; auch in
  Git Bash / WSL / macOS / Linux).
- Internetzugang **während des Builds** (lädt den PHP-5.4.1-Quellcode herunter).

## 6. Build-Anleitung

Öffnen Sie ein Terminal im Ordner `cve-2024-4577-lab/`.

### Option A — docker compose (empfohlen)```bash
docker compose up --build -d

Option B — einfaches Docker

Tool herunterladen