
Laboratorio Python intenzionalmente vulnerabile che dimostra la deserializzazione YAML non sicura che porta all'esecuzione di codice, con tre livelli di difficoltà, script di exploit, suggerimenti e un'app di confronto corretta.
Un laboratorio Python intenzionalmente vulnerabile, solo locale, per imparare come una deserializzazione YAML non sicura possa diventare un percorso di esecuzione di codice. Include tre livelli di difficoltà, un'app di confronto con patch, script di exploit, suggerimenti, write-up e un piccolo scoreboard.
Sicurezza: Esegui questo progetto solo su una macchina locale usa e getta o in un ambiente virtuale isolato. Non esporre le app della sfida a una rete pubblica.
| Variante | Focus |
|---|
| Easy | Endpoint vulnerabile diretto e percorso di exploit chiaro |
| Medium | Route esca e un finto sanitizer |
| Hard | Route nascosta, payload codificati e flusso della flag a più stadi |
Il progetto include anche:
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 i file README delle varianti per il flusso di sfida previsto. Le app si legano a localhost per impostazione predefinita e non richiedono Docker.
Le varianti vulnerabili usano intenzionalmente un loader YAML in grado di gestire oggetti Python su input controllato dall'attaccante:
yaml.load(data, Loader=yaml.Loader)
L'implementazione di confronto usa il loader più sicuro:
yaml.safe_load(data)
Non usare mai yaml.Loader per YAML non attendibile in un'applicazione reale. Questo laboratorio è solo per formazione difensiva e test autorizzati.
Rilasciato sotto la MIT License.