
Автоматически выявляйте проблемы десериализации в приложениях Java и .NET с помощью активного и пассивного сканирования.
Расширение Burp Suite для помощи в обнаружении и эксплуатации библиотек/API сериализации.
Это полезное расширение изначально разработано Ником Блуром (@nickstadb) для NCC Group и в основном основано на работе Альваро Муньоса и Александра Мироша, Friday the 13th: JSON Attacks, которую они представили на Black Hat USA 2017 и DEF CON 25. В своей работе они рассмотрели ряд библиотек сериализации JSON и XML для Java и .NET и обнаружили, что многие из них поддерживают сериализацию произвольных объектов времени выполнения, и в результате уязвимы так же, как и многие технологии сериализации — фрагменты кода (гаджеты POP), которые выполняются во время или вскоре после десериализации, могут контролироваться с помощью свойств сериализованных объектов, что часто открывает возможность для выполнения произвольного кода или команд.
Также включены дополнительные модули, поддерживающие больше форматов, включая YAML и AMF, основанные на статье Java Unmarshaller Security - Turning your data into code execution и инструменте marshalsec автора Морица Бехлера.
Это расширение Burp Suite реализует как пассивное, так и активное сканирование для выявления и эксплуатации уязвимых библиотек.
Freddy может пассивно обнаруживать использование потенциально опасных библиотек и API сериализации, отслеживая спецификаторы типов или другие сигнатуры в HTTP-запросах и контролируя HTTP-ответы на наличие исключений, выдаваемых целевыми библиотеками. Например, библиотека использует JSON-поле для указания типа сериализованного объекта.
FastJson$typesFreddy включает функциональность активного сканирования, которая пытается как обнаружить, так и, где это возможно, эксплуатировать затронутые библиотеки.
Активное сканирование пытается обнаружить использование уязвимых библиотек тремя методами: на основе исключений, на основе времени и на основе Collaborator.
При активном сканировании на основе исключений Freddy вставляет в HTTP-запрос данные, которые должны вызвать известное целевое исключение или сообщение об ошибке. Если это сообщение об ошибке наблюдается в ответе приложения, то выдается проблема.
В некоторых случаях для обнаружения могут использоваться полезные нагрузки на основе времени, поскольку выполнение команд операционной системы запускается во время десериализации, и это действие блокирует выполнение до завершения выполнения команды ОС. Freddy использует полезные нагрузки, содержащие ping [-n|-c] 21 127.0.0.1, чтобы вызвать задержку по времени в этих случаях.
Полезные нагрузки на основе Collaborator работают либо путем выполнения команды nslookup для разрешения доменного имени, сгенерированного Burp Suite Collaborator, либо путем попытки загрузки удаленных классов из доменного имени в Java-приложение. Freddy проверяет новые проблемы Collaborator каждые 60 секунд и отмечает их в списке проблем как RCE (Collaborator).
В настоящее время поддерживаются следующие цели (курсивом выделены новые в версии 2.0):
Java
.NET
Выпущено под лицензией AGPL-3.0, см. LICENSE для получения дополнительной информации.
Freddy использует систему сборки gradle. Для сборки jar достаточно выполнить gradle jar в корневой папке. Это запустит тесты, и если все правильно, будет создан jar-файл в каталоге build/libs.