
Универсальный плагин для Burp Suite для обнаружения и эксплуатации уязвимостей десериализации Java
Java Deserialization Scanner — это плагин для Burp Suite, предназначенный для обнаружения и эксплуатации уязвимостей десериализации Java. Он был написан Федерико Доттой, ведущим аналитиком безопасности в HN Security.
Плагин состоит из трёх различных компонентов:
Краткая статья, содержащая мини-руководство по использованию различных компонентов плагина, доступна по следующему URL: https://web.archive.org/web/20201130104913/https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/
Java Deserialization Scanner использует специализированные пейлоады, созданные с помощью модифицированной версии «ysoserial» — инструмента, созданного frohoff и gebl, для обнаружения уязвимостей десериализации Java. Оригинальный инструмент (https://github.com/frohoff/ysoserial) генерирует пейлоады для выполнения команд в системе с помощью функции Runtime.exec. Однако обычно невозможно увидеть вывод команды, и, следовательно, непросто написать сканер, основанный на такой функции. По этой причине используется модифицированная версия ysoserial для генерации различных типов пейлоадов, полезных для обнаружения проблемы, а не для эксплуатации:
В настоящее время пассивные проверки Java Deserialization Scanner сообщают о наличии сериализованных Java-объектов в HTTP-запросах, а активные проверки активно ищут наличие слабых функций десериализации совместно с наличием следующих слабых библиотек:
Кроме того, был представлен пейлоад URLSNDS для активного обнаружения Java-десериализации без каких-либо уязвимых библиотек. Если плагин обнаруживает только проблему URLDNS (и нет уязвимых библиотек), атакующий, вероятно, может выполнять DoS-атаки, но для достижения удалённого выполнения кода потребуется больше усилий. Подробнее см. эту ссылку.
Все компоненты плагина поддерживают следующие кодировки:
В папке test находятся несколько простых Java-серверных приложений, которые можно использовать для тестирования плагина. Каждое приложение использует различную уязвимую Java-библиотеку.
Плагин предлагает выделенную вкладку для запуска обнаружения с помощью sleep- и DNS-пейлоадов в пользовательских точках вставки, чтобы проверять уязвимости десериализации Java в особых ситуациях, когда нестандартные точки входа не позволяют выполнить обнаружение сканером. Результаты ручного тестера могут быть вставлены в результаты сканера Burp Suite.
Ручной тестер предлагает дополнительный метод обнаружения: CPU-детекция. Метод обнаружения CPU основан на работе Wouter Coekaerts по SerialDOS (https://gist.github.com/coekie/a27cc406fc9f3dc7a70d) и позволяет обнаруживать проблемы десериализации без наличия какой-либо уязвимой библиотеки, используя объект, который затрачивает много циклов CPU на задачу десериализации, и проверяя время ответа. Метод обнаружения CPU по умолчанию не включён в проверки активного сканирования, поскольку его нужно использовать с осторожностью: отправка огромного количества «лёгких» пейлоадов SerialDOS может вызвать проблемы на старых или сильно загруженных системах.
После того как уязвимость десериализации Java найдена, можно активно эксплуатировать проблему с помощью выделенной вкладки «Exploiting». Вкладка «Exploiting» предлагает удобный интерфейс для эксплуатации уязвимостей десериализации. Эта вкладка использует инструмент ysoserial для генерации векторов эксплуатации и включает сгенерированный пейлоад в HTTP-запрос. ysoserial принимает в качестве аргументов уязвимую библиотеку и команду и генерирует сериализованный объект в бинарном виде, который можно отправить уязвимому приложению для выполнения команды на целевой системе (очевидно, если целевое приложение уязвимо). Вкладка Exploiting поддерживает те же форматы кодирования, что и разделы обнаружения плагина.

Чтобы улучшить это расширение, пожалуйста, сообщайте о любых найденных проблемах в плагине. Кроме того, если вы хотите сообщить мне о какой-либо раскрытой Java-библиотеке, полезной для эксплуатации этой слабости, и если у меня будет время, я добавлю активную проверку для неё в свой плагин.
Это программное обеспечение создано исключительно для целей академических исследований и разработки эффективных защитных методов и не предназначено для использования при атаках на системы, за исключением случаев явного разрешения. Сопровождающие проекта не несут ответственности за неправильное использование программного обеспечения. Используйте ответственно.
Copyright (c) 2020 Java Deserialization Scanner
Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию этого программного обеспечения и связанных файлов документации (далее — «Программное обеспечение»), использовать Программное обеспечение без ограничений, включая, без ограничений, права использовать, копировать, изменять, объединять, публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставлено Программное обеспечение, делать это, при соблюдении следующих условий:
Вышеуказанное уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или значительные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО КАКИМ-ЛИБО ИСКАМ, ЗА УЩЕРБ ИЛИ ПО ИНЫМ ТРЕБОВАНИЯМ, БУДЬ ТО В РАМКАХ ДОГОВОРА, ДЕЛИКТА ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКШИМ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМ ОБРАЗОМ СВЯЗАННЫМ С НИМ.