
Laboratorio de Python intencionalmente vulnerable que demuestra la deserialización insegura de YAML que conduce a la ejecución de código, con tres niveles de dificultad, scripts de explotación, pistas y una aplicación de comparación parcheada.
Un laboratorio de Python intencionalmente vulnerable y solo local para aprender cómo la deserialización insegura de YAML puede convertirse en una vía de ejecución de código. Incluye tres niveles de dificultad, una aplicación de comparación parcheada, scripts de explotación, pistas, write-ups y un pequeño marcador.
Seguridad: Ejecuta este proyecto solo en una máquina local desechable o en un entorno virtual aislado. No expongas las aplicaciones del reto a una red pública.
| Variante | Enfoque |
|---|
| Fácil | Endpoint vulnerable directo y ruta de explotación clara |
| Medio | Rutas señuelo y un sanitizador falso |
| Difícil | Ruta oculta, payloads codificados y flujo de flag en múltiples etapas |
El proyecto también incluye:
yaml.safe_load()python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
pytest -q
python3 challenge_runner.py start --variant easy
Usa los archivos README de cada variante para el flujo del reto previsto. Las aplicaciones se enlazan a localhost por defecto y no requieren Docker.
Las variantes vulnerables usan intencionalmente un cargador YAML capaz de crear objetos de Python sobre entrada controlada por el atacante:
yaml.load(data, Loader=yaml.Loader)
La implementación de comparación usa el cargador más seguro:
yaml.safe_load(data)
Nunca uses yaml.Loader para YAML no confiable en una aplicación real. Este laboratorio es solo para entrenamiento defensivo y pruebas autorizadas.
Publicado bajo la Licencia MIT.