
Автоматически выявляйте проблемы десериализации в приложениях 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-ответы на наличие исключений, выдаваемых целевыми библиотеками. Например, библиотека FastJson использует JSON-поле $types для указания типа сериализованного объекта.
Freddy включает функциональность активного сканирования, которая пытается как обнаружить, так и, где это возможно, эксплуатировать затронутые библиотеки.
Активное сканирование пытается обнаружить использование уязвимых библиотек тремя методами: на основе исключений, на основе времени и на основе 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.