
Laboratorio de pentest de caja negra para la familia de corrupción de memoria del motor PHP2Shell (CVE-2026-109618 / CVE-2026-109619, CVSS 9.8/9.2). Cadena de ataque verificada con doble bandera, calibrada por agente. EN/JP/ZH.
Un objetivo de captura-la-bandera de caja negra construido en torno a PHP2Shell — la familia de corrupción de memoria del motor PHP de 2026 (CVE-2026-109618 / CVE-2026-109619, CVSS 9.8/9.2, corregida en PHP 8.4.27). La vulnerabilidad está en el motor, no en la aplicación: la diminuta capa de aplicación PHP está intencionadamente limpia de inyecciones. Debes identificar la huella del entorno de ejecución, correlacionar el aviso y elegir la balística correcta. ¿Atascado? Recorrido completo en docs/SOLUTION.md.
Requisitos previos: Docker Engine (o Docker Desktop en Windows/macOS) con Compose v2 — eso es todo. No se necesita ninguna cadena de herramientas PHP en el host. Funciona en Windows 10/11 (WSL2), Linux y macOS; consulta la nota de plataforma más abajo para saber qué cadena de explotación soporta tu 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
Abre http://localhost:18901 e inicia sesión como usuario demo (contraseña change-me-demo) para acceder a la aplicación. A partir de aquí la caja es de caja negra: averigua el resto.
¿Quieres tus propios valores de flag y contraseñas de cuenta? Edita private.ini y luego:
docker compose build \
--build-arg FLAG_LOCAL=flag{...} \
--build-arg FLAG_PROOF=flag{...}
Tareas de mantenimiento:
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
Las flags son al estilo OverTheWire:
| flag | ruta | legible por |
|---|---|---|
local.txt | /var/www/local.txt | www-data |
proof.txt | /root/proof.txt | solo root |
up.proof.txt con distintos grados de elegancia. Al menos una está verificada con fuego real; solo una escala a una flota real.Los exploits públicos de aterrizaje de RCE para PHP2Shell asumen un diseño del heap del kernel x86_64. En Apple Silicon (y otros hosts aarch64 como Windows-on-ARM) las primitivas de fuga aterrizan pero el aterrizaje de RCE no — lo verificamos en amd64 bajo emulación, arm64 nativo y la configuración de referencia de los autores del aviso (calif.io/php2shell, Linux x86_64). En hosts ARM la solución prevista es la cadena de divulgación, no la cadena de RCE — funciona en todas partes, incluido x86_64. Detalles: docs/PLATFORM-MATRIX.md.
Cadena de ataque completa, offsets y transcripciones de ataque por ronda: docs/SOLUTION.md — protegido contra spoilers por estar esta sección al final, lo prometo.
MIT — constrúyelo, hazle un fork, úsalo en formaciones (se agradece la atribución).