Об этом проекте
ysoserial — это концептуальный инструмент безопасности для генерации сериализованных Java-нагрузок, эксплуатирующих небезопасную десериализацию объектов. Первоначально он был выпущен в рамках доклада «Marshalling Pickles: how deserializing objects will ruin your day» на конференции AppSecCali 2015 года и включал начальные цепочки гаджетов для Apache Commons Collections (3.x и 4.x), Spring Beans/Core (4.x) и Groovy (2.3.x). Позднее проект был расширен цепочками для JRE 1.7u21 и многих других библиотек.
Основная программа-драйвер принимает команду, указанную пользователем, оборачивает её в цепочку гаджетов, также указанную пользователем, — последовательность объектно-ориентированного программирования, собранную из классов, присутствующих в распространённых Java-библиотеках, — и сериализует полученные объекты в стандартный вывод. Когда приложение, имеющее необходимые гаджеты в своём classpath, небезопасно десериализует эти данные, цепочка автоматически запускается и команда выполняется на хосте приложения. Проект подчёркивает, что уязвимость заключается в том, что приложение выполняет небезопасную десериализацию, а не в самом присутствии библиотек гаджетов в classpath.
Инструмент поставляется с более чем тридцатью типами нагрузок, предоставленными многочисленными исследователями. Среди них семь вариантов CommonsCollections, охватывающих commons-collections 3.x и commons-collections4 4.x, а также цепочки для CommonsBeanutils, Spring (два варианта), Groovy, Hibernate (два варианта), C3P0, BeanShell, Jython, Clojure, Mozilla Rhino (два варианта), ROME, JSON-lib, MyFaces (два варианта), Click, FileUpload, Vaadin, Wicket, Javassist/Weld, JBoss interceptors, AspectJWeaver, Jdk7u21, URLDNS (не имеющего зависимостей) и JRMPClient/JRMPListener. В примерах показан встроенный вспомогательный модуль ysoserial.exploit.RMIRegistryExploit для доставки нагрузки в RMI-реестр.
Использование сводится к одной команде, например: java -jar ysoserial.jar CommonsCollections1 calc.exe. Сгенерированная нагрузка может быть передана напрямую целевому объекту или сохранена в файл, как показано с использованием netcat в README. Готовые jar-файлы доступны в релизах на GitHub, а проект можно собрать из исходного кода с помощью Java 1.7+ и Maven 3.x+ командой «mvn clean package -DskipTests».
Разработчики прямо указывают, что программное обеспечение создано исключительно для академических исследований и разработки эффективных защитных мер и не предназначено для атак на системы, за исключением случаев, когда это явно разрешено. Пользователей просят использовать инструмент ответственно. В README упоминаются связанные проекты: marshalsec (смежный проект, охватывающий другие форматы и библиотеки Java-десериализации), ysoserial.net (аналог для .NET) и Java-Deserialization-Cheat-Sheet, который собирает связанные уязвимости, инструменты и описания.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.