
의도적으로 취약하게 설계된 Python 실습 환경으로, 안전하지 않은 YAML 역직렬화가 코드 실행으로 이어지는 과정을 보여주며, 세 가지 난이도, 익스플로잇 스크립트, 힌트, 그리고 패치된 비교 앱을 포함합니다.
| Variant | Focus |
|---|
| Easy | 직접적인 취약 엔드포인트와 명확한 익스플로잇 경로 |
| Medium | 미끼 라우트와 가짜 새니타이저 |
| Hard | 숨겨진 라우트, 인코딩된 페이로드, 다단계 플래그 흐름 |
이 프로젝트에는 다음도 포함됩니다:
yaml.safe_load() 비교를 위한 patched_app.pypython3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
pytest -q
python3 challenge_runner.py start --variant easy
의도된 챌린지 흐름을 위해 각 변형의 README 파일을 사용하세요. 앱은 기본적으로 localhost에 바인딩되며 Docker가 필요하지 않습니다.
취약한 변형은 공격자가 제어하는 입력에 대해 의도적으로 Python 객체를 지원하는 YAML 로더를 사용합니다:
yaml.load(data, Loader=yaml.Loader)
비교 구현은 더 안전한 로더를 사용합니다:
yaml.safe_load(data)
실제 애플리케이션에서는 신뢰할 수 없는 YAML에 절대 yaml.Loader를 사용하지 마세요. 이 실습은 방어 교육 및 승인된 테스트 전용입니다.
MIT License에 따라 배포됩니다.