
Безопасная учебная симуляция CVE-2025-27520 с уязвимым сервисом на Flask и сканером PoC на Python для демонстрации уязвимостей десериализации и нарушенного контроля доступа.
⚠️ Важно: Это безопасная учебная симуляция уязвимости CVE-2025-27520.
В проект включён имитационный сервис (Flask) и безопасный PoC-сканер (Python).
Симуляция создаёт файл-доказательство вdata/при получении тестового маркера, вместо выполнения произвольных команд.
CVE-2025-27520-final/
├── 📄 README_ru.md # Этот файл документации
├── 🐳 Dockerfile # Образ стенда (Flask)
├── 🐳 docker-compose.yml # Конфигурация для запуска контейнера
├── 📊 result.json # Пример результата сканера
├── ⚙️ setup.cfg # Конфигурация flake8
├── 📁 app/ # Исходные коды сервиса
│ ├── 🐍 app.py # Симуляционный сервис на Flask
│ └── 📦 requirements.txt # Зависимости сервиса
├── 📁 src/ # Исходные коды сканера
│ ├── 🐍 scanner.py # PoC / сканер (Python)
│ └── 📦 requirements.txt # Зависимости сканера
├── 📁 data/ # Монтируемая папка для доказательств
---
## 🎯 Краткое описание уязвимости
**CVE-2025-27520 (симуляция)** — демонстрация уязвимой десериализации / broken access control
**В реальном продукте это могло бы приводить к:**
- Эскалации привилегий
- Удалённому выполнению кода
- Раскрытию конфиденциальных данных
**В этой учебной версии мы:**
- Безопасно подтверждаем уязвимость через создание файла-доказательства
- Предоставляем легковесный стенд для локального тестирования
- Соблюдаем принципы ответственного раскрытия
---
## 🛠 Требования к системе
- **ОС:** Linux
- **Docker:** Docker
- **Python:** 3.11 или новее
---
## 🚀 Быстрый старт
### 1. Запуск сервиса
```bash
docker-compose up -d
curl http://127.0.0.1:5000/health
Ожидаемый ответ: {"status":"ok"} или HTTP 200
python3 -m venv venv
source venv/bin/activate
pip install -r src/requirements.txt
python3 src/scanner.py --url http://127.0.0.1:5000
cat result.json
ls -l data/
cat data/EVIDENCE_LANG_BENTO_SIM.txt
# В корне проекта
docker-compose build --no-cache
docker-compose up -d
docker ps
docker-compose ps
docker logs bento-sim --tail 100
Ожидаемый результат: контейнер bento-sim в статусе Up с пробросом портов 0.0.0.0:5000->5000/tcp
--urlsource venv/bin/activate
python3 src/scanner.py --url http://127.0.0.1:5000
[
{
"ip": "http://127.0.0.1:5000",
"vuln": true
}
]
Основные endpoint'ы:
POST /simulate_deserialize - принимает JSON с ключом payloadGET /evidence - проверяет наличие файла-доказательстваGET /health - проверка работоспособности сервисаЛогика работы:
EVIDENCE_TRIGGER создаёт файл-доказательство0.0.0.0:5000data/EVIDENCE_LANG_BENTO_SIM.txt - файл-доказательство, создаётся при успешной симуляцииresult.json - результаты сканирования, формируется PoC-скриптомvuln: falsedocker ps
curl http://127.0.0.1:5000/health
curl -v -X POST http://127.0.0.1:5000/simulate_deserialize \
-H "Content-Type: application/json" \
-d '{"payload":"Hello EVIDENCE_TRIGGER"}'
Ожидаемый ответ: {"result":"evidence created"}
docker logs bento-sim --tail 200
sudo ss -ltnp | grep 5000
sudo iptables -L -n -v
pip install black autopep8
black src/scanner.py
# или
autopep8 --in-place --aggressive --aggressive src/scanner.py
7z a -v3g -m0=Copy "CVE-2025-27520-stand.7z" "file.ova"
tar -tf file.ova | head -n 20
File → Import в VMware Workstation / VirtualBoxCVE-2025-27520-final/
├── 📄 README_ru.md
├── 🐳 Dockerfile
├── 🐳 docker-compose.yml
├── 📁 app/
├── 📁 src/
├── 📊 result.json
├── 📁 data/
zip -r CVE-2025-27520-final.zip CVE-2025-27520-final
sha256sum CVE-2025-27520-final.zip > CVE-2025-27520-final.zip.sha256
# Для ZIP
unzip -t CVE-2025-27520-final.zip
---