
Laboratorio di pentest black-box per la famiglia di corruzione della memoria del motore PHP2Shell (CVE-2026-109618 / CVE-2026-109619, CVSS 9.8/9.2). Catena di attacco verificata a doppio flag, calibrata sull'agente. EN/JP/ZH.
Un target capture-the-flag black-box costruito attorno a PHP2Shell — la famiglia di corruzione della memoria del motore PHP del 2026 (CVE-2026-109618 / CVE-2026-109619, CVSS 9.8/9.2, corretta in PHP 8.4.27). La vulnerabilità è nel motore, non nell'applicazione: il minuscolo livello applicativo PHP è intenzionalmente privo di injection. Devi fare fingerprinting del runtime, correlare l'advisory e scegliere la balistica giusta. Bloccato? Walkthrough completo in docs/SOLUTION.md.
Prerequisiti: Docker Engine (o Docker Desktop su Windows/macOS) con Compose v2 — tutto qui. Nessun toolchain PHP necessario sull'host. Funziona su Windows 10/11 (WSL2), Linux e macOS; vedi la nota sulla piattaforma qui sotto per quale catena di exploit supporta la tua CPU.
git clone https://github.com/taniungou/php2shell-lab.git
cd php2shell-lab
docker compose up -d --build # first build pulls the pinned base image
Apri http://localhost:18901 e accedi come utente demo
(password change-me-demo) per raggiungere l'app. Da qui il box è
black-box: scopri il resto.
Vuoi i tuoi valori di flag e password degli account? Modifica private.ini, poi:
docker compose build \
--build-arg FLAG_LOCAL=flag{...} \
--build-arg FLAG_PROOF=flag{...}
Manutenzione:
docker compose logs -f # watch the target
docker compose down -v && docker compose up -d --build # full reset (re-arms the leak window)
docker compose down # stop and free resources
Le flag sono in stile OverTheWire:
| flag | percorso | leggibile da |
|---|---|---|
local.txt | /var/www/local.txt | www-data |
proof.txt | /root/proof.txt | solo root |
up.proof.txt con diversi gradi di eleganza. Almeno
uno è verificato in live-fire; solo uno scala su un vero fleet.Gli exploit pubblici di RCE-landing per PHP2Shell presuppongono un layout dell'heap del kernel x86_64. Su Apple Silicon (e altri host aarch64 come Windows-on-ARM) le primitive di leak funzionano ma il landing RCE no — l'abbiamo verificato su amd64-sotto-emulazione, arm64-nativo e la configurazione di riferimento degli autori dell'advisory (calif.io/php2shell, x86_64 Linux). Su host ARM la soluzione prevista è la catena di disclosure, non la catena RCE — funziona ovunque, incluso x86_64. Dettagli: docs/PLATFORM-MATRIX.md.
Kill chain completa, offset e trascrizioni degli attacchi per round: docs/SOLUTION.md — protetto dagli spoiler grazie a questa sezione posizionata in fondo, promesso.
MIT — costruiscici sopra, forkalo, usalo nei training (attribuzione gradita).