
This script is intended to validate Apache Struts 2 vulnerability (CVE-2017-5638), AKA Struts-Shock.
Этот скрипт предназначен для проверки уязвимости Apache Struts 2 (CVE-2017-5638), также известной как Struts-Shock. Он полностью безвреден, так как не внедряет вредоносную нагрузку, а лишь добавляет HTTP-заголовок с именем 'STRUTS2-VALIDATION', чтобы определить, уязвима ли система.
Благодаря многопоточности он способен просканировать 2,5+ тысяч приложений по всему миру менее чем за 10 минут. Это делает его очень удобным для масштабной проверки корпоративных приложений.
cve-2017-5638 Пример уязвимого сайта
Этот проект предназначен для демонстрации эксплуатации CVE-2017-5638 в образовательных целях. Дополнительная информация: https://cwiki.apache.org/confluence/display/WW/S2-045
Этот проект создан исключительно для образовательного и этического тестирования. Атака целей без предварительного взаимного согласия незаконна. Ответственность за соблюдение всех применимых местных, государственных и федеральных законов лежит на конечном пользователе. Разработчики не несут никакой ответственности и не отвечают за любое неправомерное использование или ущерб, причинённый этой программой.
docker run -d -p 8080:8080 jrrdev/cve-2017-5638:latest
Скачайте скрипт эксплуатации на машину атакующего здесь
Запустите скрипт на Python с машины атакующего:
python exploit.py http://<DOCKER_HOST>:8080/hello "ls -l"
Существует два способа запуска скрипта: с многопоточностью и без неё. Разница заключается только во времени выполнения. Для включения многопоточности достаточно передать параметр thread.
Первым параметром должен быть TXT-файл, содержащий все целевые URL-адреса, по одному на строку. Обратите внимание, что эти URL-адреса должны быть полными, например, https://target.com/admin/myStrutsPage.action
Вот пример использования без многопоточности:
struts-shock-validation.py target_urls.txt
Теперь с многопоточностью:
struts-shock-validation.py target_urls.txt thread
http://struts.apache.org/docs/s2-016.html https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017
Модуль эксплойта Metasploit Framework для эксплуатации Apache Struts через Content-Type Не тестировался на Windows-сервере, но был протестирован на Linux-сервере с использованием полезной нагрузки generic/shell_bind_tcp
Пример PoC-кода для CVE-2017-5638 | Apache Struts Exploit | DORK: ext:action
ИСПОЛЬЗОВАНИЕ: python struts.py https://victim.site dir
Изначально опубликованный Python-скрипт неправильно форматировал заголовок Content-Type. Я переписал заголовок Content-Type для правильного форматирования: Content-Type:%20{Exploit}. Также добавил логирование и Requests, после чего вывел свойства объекта в stdout.
SAMPLE OUTPUT
Check for CVE-2017-5638 by XSS.Cx
Volume in drive D has no label. Volume Serial Number is 2A7B-A245 Directory of d:\Program Files\Apache Software Foundation\Tomcat 9.0
Этот проект является доказательством концепции уязвимости Apache Struts. Целью было создание программного обеспечения, способного генерировать и проверять случайные IP-адреса на описанную уязвимость.
Используйте этот проект на свой страх и риск и только в образовательных целях.
cURL
Nmap
Сгенерируйте случайные IP-адреса и сохраните их в текстовый файл.
./get_ip.sh [Количество хостов для сканирования] [Какой порт сканировать] [Имя файла для записи вывода]
./get_ip.sh 10000 80 output.txt
Проверьте конкретный IP-адрес на уязвимость.
./struts_check.sh [ip address] [port]
./struts_check.sh 127.0.0.1 80
Проверьте список IP-адресов на уязвимость.
./main.sh [Text file containing IP adresses] [Port]
./main.sh output.txt 443
Выполните команду на сервере без установленного патча уязвимости Apache Struts.
./struts_attack.sh [IP Adres] [Command]
./struts_attack.sh https://127.0.0.1 whoami
# CVE-2017-5638 PoC Code in Python | DORK: ext:action
Пример PoC-кода для CVE-2017-5638 | Apache Struts Exploit | DORK: ext:action
ИСПОЛЬЗОВАНИЕ: python struts.py https://victim.site dir
Изначально опубликованный Python-скрипт неправильно форматировал заголовок Content-Type.
Я переписал заголовок Content-Type для правильного форматирования: Content-Type:%20{Exploit}.
Также добавил логирование и Requests, после чего вывел свойства объекта в stdout.
SAMPLE OUTPUT
Check for CVE-2017-5638 by XSS.Cx
Volume in drive D has no label.
Volume Serial Number is 2A7B-A245
Directory of d:\Program Files\Apache Software Foundation\Tomcat 9.0
## Результаты
Будет автоматически создана папка с именем results, и при каждом выполнении будет создаваться папка с датой, содержащая результат выполнения. Если включена многопоточность, будет создаваться один файл на поток с именем thread_<номер>, который можно игнорировать, так как по завершении все результаты потоков будут объединены в единый TXT-файл с тем же именем (дата/временная метка), что и папка выполнения.