
Laboratório Python intencionalmente vulnerável que demonstra desserialização YAML insegura levando à execução de código, com três níveis de dificuldade, scripts de exploit, dicas e um aplicativo de comparação corrigido.
Um laboratório Python intencionalmente vulnerável, apenas local, para aprender como a desserialização insegura de YAML pode se tornar um caminho de execução de código. Ele inclui três níveis de dificuldade, um aplicativo de comparação corrigido, scripts de exploração, dicas, write-ups e um pequeno placar.
Segurança: Execute este projeto apenas em uma máquina local descartável ou ambiente virtual isolado. Não exponha os aplicativos de desafio a uma rede pública.
| Variante | Foco |
|---|
| Fácil | Endpoint vulnerável direto e caminho de exploração claro |
| Médio | Rotas de isca e um sanitizador falso |
| Difícil | Rota oculta, payloads codificados e fluxo de flag em múltiplos estágios |
O projeto também inclui:
yaml.safe_load()python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
pytest -q
python3 challenge_runner.py start --variant easy
Use os arquivos README das variantes para o fluxo de desafio pretendido. Os aplicativos se vinculam a localhost por padrão e não exigem Docker.
As variantes vulneráveis usam intencionalmente um carregador YAML capaz de objetos Python em entrada controlada pelo atacante:
yaml.load(data, Loader=yaml.Loader)
A implementação de comparação usa o carregador mais seguro:
yaml.safe_load(data)
Nunca use yaml.Loader para YAML não confiável em uma aplicação real. Este laboratório é apenas para treinamento defensivo e testes autorizados.
Lançado sob a Licença MIT.