Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2017-5638-Attack-and-Defense — Лаборатория безопасности на основе Docker, демонстрирующая эксплуатацию и защиту Apache Struts2 S2-045 (CVE-2017-5638), включая уязвимые и пропатченные приложения с защитой WAF для практического обучения. | Kitploit
Инструменты/GitHubGitHub/acharaf06/cve-2017-5638-attack-and-defense
Оборонительные ИнструментыАнализ уязвимостейЭксплуатация веб-приложенийОбход WAFТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHub

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
acharaf06/cve-2017-5638-attack-and-defense

CVE-2017-5638-Attack-and-Defense

Лаборатория безопасности на основе Docker, демонстрирующая эксплуатацию и защиту Apache Struts2 S2-045 (CVE-2017-5638), включая уязвимые и пропатченные приложения с защитой WAF для практического обучения.

Репозиторий
1159 месяцев назадЕщё не проверено
Поделиться

Лаборатория защиты и эксплуатации Apache Struts2 S2-045

Лаборатория безопасности на основе Docker, демонстрирующая как эксплуатацию, так и защиту от уязвимости Apache Struts2 S2-045 (CVE-2017-5638). Лаборатория включает:

  1. Уязвимое приложение: Struts 2.3.31 (уязвимый к S2-045) для демонстрации эксплуатации
  2. Лаборатория защиты: Struts 6.3.x (исправленный) с защитой WAF для тренировки по защите

⚠️ Предупреждение безопасности: Эта лаборатория содержит работающие эксплойты и уязвимый код. Используйте только в изолированных средах. НЕ выставляйте в публичные сети.

Обзор архитектуры

┌─────────────────────────────────────────────────────────────┐
│                     Host (127.0.0.1 only)                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────┐    ┌─────────────────┐              │
│  │   Simulator     │───▶│  Nginx Proxy    │              │
│  │  (curl-based)   │    │  + WAF Rules    │              │
│  └─────────────────┘    └────────┬────────┘              │
│                                  │                        │
│                          ┌───────┴────────┐              │
│                          │                │                │
│                  ┌───────▼──────┐ ┌───────▼──────┐        │
│                  │  Defense App │ │ Vulnerable   │        │
│                  │ (Struts 6.3) │ │ App (2.3.31) │        │
│                  │ Port: 8080  │ │ Port: 8081  │        │
│                  └──────────────┘ └──────────────┘        │
│                                                             │
│  ┌─────────────────┐                                      │
│  │  Exploit        │───▶ Vulnerable App (8081)            │
│  │  Container      │                                      │
│  └─────────────────┘                                      │
│                                                             │
│  Logs mounted to: ./logs/nginx/, ./logs/app/,             │
│                   ./logs/app-vulnerable/                  │
└─────────────────────────────────────────────────────────────┘

Компоненты

КонтейнерНазначениеПорт
nginxОбратный прокси с правилами WAF, ограничением скорости127.0.0.1:8080
appTomcat 9 + Struts 6.3.x (исправленный, лаборатория защиты)Только внутренний
app-vulnerableTomcat 9 + Struts 2.3.31 (уязвимый, для эксплуатации)127.0.0.1:8081
exploitКонтейнер для демонстрации эксплуатацииН/Д
simulatorОтправляет тестовые запросы (безвредные + подозрительные шаблоны)Н/Д

Начало работы

Предварительные требования

  • Docker (версия 20.10 или новее)
  • Docker Compose (версия 2.0 или новее)
  • Python 3 (опционально, для прямого запуска скриптов эксплойтов)
  • curl (опционально, для ручного тестирования)

Установка

1. Клонирование репозитория

# Клонирование репозитория
git clone https://github.com/ACharaf06/cybersec.git
cd cybersec

2. Сборка и запуск

# Сборка всех контейнеров (при первом запуске может занять несколько минут)
docker compose build

# Запуск лаборатории защиты (nginx + исправленное приложение)
docker compose up -d nginx app

# Запуск уязвимого приложения (для демонстрации эксплуатации)
docker compose up -d app-vulnerable

# Проверка, что службы работают
docker compose ps

# Ожидание готовности служб (около 60 секунд)
sleep 60

# Проверка конечных точек здоровья
curl http://127.0.0.1:8080/struts-lab/health  # Лаборатория защиты
curl http://127.0.0.1:8081/struts-lab/health  # Уязвимое приложение

Ожидаемый результат:

  • Лаборатория защиты: JSON-ответ с "status":"healthy" и "strutsVersion":"6.3.0.2 (patched - not vulnerable to S2-045)"
  • Уязвимое приложение: JSON-ответ с "status":"healthy" и "strutsVersion":"2.3.31 (VULNERABLE to S2-045)"

2. Тестирование лаборатории защиты

# Запуск контейнера симулятора (тестирует механизмы защиты)
docker-compose run --rm simulator

# Или запуск отдельных тестов вручную:
# Легитимная загрузка
curl -X POST -F "[email protected]" http://127.0.0.1:8080/struts-lab/upload

# Подозрительный Content-Type (будет заблокирован WAF)
curl -v -X POST \
  -H "Content-Type: multipart/form-data; boundary=----SUSPICIOUS" \
  http://127.0.0.1:8080/struts-lab/upload

3. Демонстрация эксплуатации

# Запуск контейнера эксплойта (демонстрирует эксплуатацию S2-045)
docker-compose --profile exploit run --rm exploit

# Или прямое использование скрипта эксплойта на Python
python3 exploit/exploit.py http://127.0.0.1:8081/struts-lab 'whoami'

# Или использование bash-скрипта
./exploit/demo_exploit.sh

⚠️ Предупреждение: Уязвимое приложение намеренно эксплуатируемо. Запускайте только в изолированных средах.

4. Просмотр журналов

# Журналы лаборатории защиты
tail -f logs/nginx/access.log      # Журналы доступа Nginx
tail -f logs/nginx/error.log       # Блокировки WAF
tail -f logs/app/struts-lab.log    # Журналы приложения защиты

# Журналы уязвимого приложения
tail -f logs/app-vulnerable/struts-lab.log  # Журналы уязвимого приложения

# Все журналы вместе
docker-compose logs -f

Что наблюдать

Лаборатория защиты (Порт 8080)

Легитимный запрос:

  • Журнал доступа Nginx: ответ 200
  • Журнал приложения: сообщение об обработке загрузки уровня INFO
  • Запрос выполняется успешно

Подозрительный/некорректный запрос:

  • Журнал доступа Nginx: 403 Forbidden или 400 Bad Request
  • Журнал ошибок Nginx: сообщение о срабатывании правила WAF
  • Журнал приложения: может отображать ошибку парсинга, если запрос достиг приложения
  • Запрос блокируется или санируется

Уязвимое приложение (Порт 8081)

Успешная эксплуатация:

  • HTTP 200 или 500 ответ
  • Вывод команды виден в теле ответа
  • Выражения OGNL вычисляются
  • Системные команды выполняются

Примеры журналов:

Блокировка подозрительного Content-Type Nginx (Лаборатория защиты):

[WAF] Blocked suspicious Content-Type pattern - Request ID: abc123

Журналирование метаданных запроса приложением (Лаборатория защиты):

[REQUEST] ID=abc123 Content-Type=multipart/form-data Method=POST URI=/upload
[UPLOAD] Processing file upload for request abc123

Успешная эксплуатация (Уязвимое приложение):

HTTP/1.1 200 OK
...
root
(Command output appears in response body)

Сравнение: Уязвимое приложение vs Лаборатория защиты

ФункцияУязвимое приложение (Порт 8081)Лаборатория защиты (Порт 8080)
Версия Struts2.3.31 (уязвимая)6.3.0.2 (исправленная)
Защита WAF❌ Нет✅ Правила WAF Nginx
Ограничение скорости❌ Нет✅ 10 запросов/с
Лимиты размера запроса❌ Нет✅ 10 МБ тело, 8 КБ заголовки
Журналирование безопасности⚠️ Минимальное✅ Всестороннее
Внедрение OGNL✅ Эксплуатируемо❌ Заблокировано/Исправлено
Возможность RCE✅ Да❌ Нет
НазначениеДемонстрация эксплуатацииТренировка защиты

Заметки по безопасности

Изоляция

  • Все службы привязаны только к 127.0.0.1 (нет внешнего доступа)
  • Внутренняя сеть Docker для связи контейнеров
  • Нет открытия портов на 0.0.0.0
  • Уязвимое приложение НИКОГДА не должно быть выставлено в публичные сети

Уровни защиты (Лаборатория защиты)

  1. Правила WAF Nginx: Блокировка подозрительных шаблонов Content-Type до достижения приложения
  2. Ограничение скорости: 10 запросов/секунду на IP
  3. Лимиты размера запроса: макс. тело 10 МБ, макс. заголовки 8 КБ
  4. Исправленный Struts: Используется Struts 6.3.x (не уязвим к S2-045)
  5. Всестороннее журналирование: Вся подозрительная активность регистрируется
Скачать инструмент