🧪 Laboratorio Docker aislado para reproducir y estudiar PHP2Shell (CVE-2026-109618 / CVE-2026-109619), RCE no autenticado en PHP ≤8.5.11. Incluye exploit unificado en Python, verificación automática y documentación fase a fase con fines defensivos.
# PHP2Shell Lab — CVE-2026-109618 & CVE-2026-109619
Laboratorio Docker **totalmente automatizado** para reproducir y verificar las
vulnerabilidades críticas de PHP conocidas como **PHP2Shell** (CVSS v4.0 **9.2**,
RCE no autenticado), divulgadas el 21 de octubre de 2026. **Dos puntos de
entrada**: `p2s.sh` despliega/detiene el lab automáticamente, y `php2shell.py`
es la herramienta unificada de explotación (versión, check de vulnerabilidad,
leak, RCE e IOCs en un solo script Python).
> ⚠️ **USO EXCLUSIVO EN ENTORNO AISLADO DE LABORATORIO.** Todo lo que levanta
> este lab escucha **solo en loopback (127.0.0.1)**. Apuntar estas herramientas
> a sistemas de terceros es ilegal. Estas vulnerabilidades se están explotando
> activamente en la wild.
>
> 📚 Documentación: **[`EXPLOTACION.md`](EXPLOTACION.md)** (la cadena de
> explotación fase a fase) · [`DEMO.md`](DEMO.md) (guion de grabación) ·
> [`ANATOMIA.md`](ANATOMIA.md) (el bug desde cero) · [`WRITEUP.md`](WRITEUP.md)
> (análisis técnico).
---
## TL;DR
```bash
git clone https://github.com/D1se0/php2shell_lab && cd php2shell_lab
./p2s.sh up # descarga las imágenes si faltan, despliega TODO y verifica salud
python3 php2shell.py version http://localhost:8081/ # fingerprint pasivo
python3 php2shell.py check http://localhost:8081/ # ¿vulnerable? VULN/NO VULN
python3 php2shell.py rce "id" # 💥 RCE completo (uid=33)
./p2s.sh test all # contraste vulnerable ✔ / parcheado ✔
./p2s.sh iocs # IOCs en los logs (lo que meterías en tu SIEM)
./p2s.sh rce-canonical # 💥 RCE canónico del autor (determinista)
./p2s.sh down # detiene y elimina TODO (automático)
```
Requisitos: Docker + Docker Compose, Python 3.10+, bash. Para la ruta RCE
canónica además `sudo` y `gdb` (calibra direcciones con el debugger, tal como
hicieron los autores).
---
## ¿Qué es PHP2Shell y por qué es vulnerable?
**En 30 segundos:** el parser de `multipart/form-data` de