Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cve-2024-4577-lab — # Laboratorio CTF basato su Docker che dimostra CVE-2024-4577, iniezione di argomenti PHP-CGI che porta a RCE. Include PHP 5.4.1 CGI vulnerabile, script di exploit e recupero della flag. | Kitploit
Strumenti/GitHubGitHub/khwajasaad267-coder/cve-2024-4577-lab
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebCTFPenetration TestingApprendimento e FormazioneLab e Pratica
GitHubkhwajasaad267-coder/cve-2024-4577-lab

cve-2024-4577-lab

# Laboratorio CTF basato su Docker che dimostra CVE-2024-4577, iniezione di argomenti PHP-CGI che porta a RCE. Include PHP 5.4.1 CGI vulnerabile, script di exploit e recupero della flag.

Vedi Repository
241 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2024-4577 — Iniezione di Argomenti PHP-CGI → RCE (Laboratorio Docker / CTF)

Un laboratorio Docker autonomo, creato da zero, che dimostra la primitiva reale di iniezione di argomenti → Esecuzione Remota di Codice alla base di CVE-2024-4577. Sfruttalo su http://localhost:8080, ottieni una shell e leggi la flag dall'interno del container.

Questa è una vulnerabilità genuina, non simulata. Il container compila un binario PHP 5.4.1 CGI non patchato e lo collega dietro Apache esattamente come sono configurati i host vulnerabili reali. Non c'è alcun falso controllo "if password == flag" da nessuna parte — l'unico modo per ottenere la flag è ottenere effettivamente l'esecuzione di codice.


⚠️ Leggi prima questo — Linux vs. Windows (importante e onesto)

Il payload caratteristico di CVE-2024-4577 usa %AD (un trattino morbido). Quel trucco funziona solo su Windows, perché la codifica dei caratteri "Best-Fit" di Windows converte il byte 0xAD in un vero - (0x2D) dopo che la patch di CVE-2012-1823 di PHP ha già controllato la stringa di query. Quella conversione di codifica viene eseguita da Windows stesso — non avviene all'interno di un normale container Docker Linux.

Quindi, un laboratorio Linux fedele e eseguibile sulla tua macchina riproduce la stessa identica primitiva RCE — iniezione di opzioni php-cgi tramite l'URL → -d auto_prepend_file=php://input → esecuzione di codice — usando la forma con - letterale (che è il bug padre di CVE-2024-4577, CVE-2012-1823). L'unica differenza rispetto a un vero target Windows CVE-2024-4577 è il livello di bypass di codifica %AD→-, che questo README documenta integralmente (vedi Come funziona e poc.http).

Questo laboratorio LinuxCVE-2024-4577 reale (Windows)
Componente vulnerabilephp-cgiphp-cgi
Primitiva RCE-d auto_prepend_file=php://inputidentica
Delimitatore nell'URL- letterale%AD (best-fit → -)
Bypassa la patch del 2012?N/D (PHP precede la patch)Sì, tramite best-fit di Windows
Funziona su Win 11 Home + Docker Desktop✅❌ (richiede container Windows)

Se hai specificamente bisogno della riproduzione bit-per-bit del %AD di Windows, ti serve un host Docker in grado di eseguire container Windows (Windows Server / Win Pro + Hyper-V) — non funzionerà su Windows 11 Home. Il payload Windows è incluso in poc.http come riferimento.


1. Descrizione della CVE

CVE-2024-4577 — Iniezione di Argomenti PHP CGI che porta a Esecuzione Remota di Codice. Scoperta da DEVCORE (Orange Tsai / Angelboy), divulgata 2024-06-06.

Quando PHP è distribuito in modalità CGI (o il binario php-cgi.exe è altrimenti raggiungibile) su Windows con determinate impostazioni locali di sistema (cinese tradizionale/semplificato, giapponese e altre), il server web passa la stringa di query HTTP a php-cgi come argomenti della riga di comando. Un attaccante può introdurre di nascosto opzioni della riga di comando di php-cgi (-d ...) in quella stringa di query. La conversione della tabella codici best-fit di Windows trasforma il byte del trattino morbido 0xAD (%AD) in un trattino ASCII -, che elude l'indurimento di CVE-2012-1823 e consente all'attaccante di impostare direttive INI PHP arbitrarie — la più utile è auto_prepend_file=php://input con allow_url_include=1, che esegue il corpo della richiesta fornito dall'attaccante come PHP. Risultato: esecuzione remota di codice non autenticata. È stato armato nel mondo reale entro pochi giorni (ad es. ransomware TellYouThePass).

2. Causa principale

  1. CGI passa la stringa di query come argv. Secondo RFC 3875, se la stringa di query di una richiesta CGI non contiene = non codificato, il server la divide su +, decodifica ogni parola dall'URL e passa le parole al programma CGI come argomenti della riga di comando. php-cgi riceve quindi un argv controllato dall'attaccante.

  2. php-cgi interpreta quegli argv come opzioni. Storicamente php-cgi interpretava -d chiave=valore, -T, ecc. da quell'argv. Fornire -d allow_url_include=1 -d auto_prepend_file=php://input fa sì che PHP esegua il corpo della richiesta come codice → CVE-2012-1823.

  3. La correzione di CVE-2012-1823 è incompleta su Windows. La patch del 2012 ha aggiunto un controllo in sapi/cgi/cgi_main.c: approssimativamente "se la stringa di query (grezza) inizia con - e non ha =, salta l'analisi delle opzioni (skip_getopt)." Un attaccante che invia un - letterale ora viene bloccato.

  4. La codifica best-fit sconfigge il controllo (il bug del 2024). Su Windows, PHP converte la riga di comando usando la tabella codici della locale con mapping best-fit abilitato. L'attaccante invia %AD (byte 0xAD, trattino morbido). Al momento del controllo, il primo byte è 0xAD, non -, quindi skip_getopt non viene impostato. Successivamente, quando PHP costruisce effettivamente l'argv, Windows mappa best-fit 0xAD → -, quindi getopt ora vede -d. L'iniezione di opzioni scatta dopo il controllo che avrebbe dovuto fermarla. Quell'ordine controllo-poi-conversione è l'intera vulnerabilità.

In questo laboratorio Linux, i passaggi 1–2 sono riprodotti esattamente con un php-cgi che precede la patch del passaggio 3, quindi la forma con - letterale funziona e dimostra la RCE identica. Il passaggio 4 è il livello solo-Windows, documentato ma non eseguito (Linux non ha conversione best-fit).

3. Versioni interessate (CVE-2024-4577 reale)

Corretta in 8.3.8, 8.2.20, 8.1.29. Pertanto vulnerabili:

  • 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 — fine vita, non patchate, anch'esse interessate

Condizioni: sistema operativo Windows; PHP eseguito come CGI o php-cgi.exe esposto (la configurazione predefinita XAMPP su Windows è vulnerabile); una locale interessata per il percorso best-fit. (Il bug padre CVE-2012-1823 — la primitiva che questo laboratorio esegue — interessa qualsiasi sistema operativo che esegue un php-cgi precedente alla correzione del 2012 in questa configurazione.)

4. Struttura del progetto```

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. Prerequisiti

- **Docker Desktop** (Windows/macOS) o Docker Engine (Linux).
  Windows 11 Home: installa Docker Desktop con il backend **WSL 2** (predefinito).
  → https://www.docker.com/products/docker-desktop/
- `curl` per lo sfruttamento (`curl.exe` è integrato in Windows 10/11; disponibile anche in
  Git Bash / WSL / macOS / Linux).
- Accesso a Internet **durante la build** (scarica il sorgente di PHP 5.4.1).

## 6. Istruzioni di build

Apri un terminale nella cartella `cve-2024-4577-lab/`.

### Opzione A — docker compose (consigliata)```bash
docker compose up --build -d

Opzione B — docker semplice

Scarica lo strumento