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

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

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

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

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

Категории

Все категории
Loading categories
marshalsec — Инструмент для эксплуатации уязвимостей десериализации в Java с генераторами полезных нагрузок для нескольких маршаллеров (Jackson, XStream, SnakeYAML) и косвенными ссылками JNDI для удалённого выполнения кода. | Kitploit
Инструменты/GitHubGitHub/mbechler/marshalsec
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеСтатьи и ИсследованияОбучение и ОбразованиеRed TeamingРазработка Полезной Нагрузки
GitHubmbechler/marshalsec

marshalsec

Инструмент для эксплуатации уязвимостей десериализации в Java с генераторами полезных нагрузок для нескольких маршаллеров (Jackson, XStream, SnakeYAML) и косвенными ссылками JNDI для удалённого выполнения кода.

3.7k6781 год назадПроверено Kitploit

Популярное

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

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

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

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

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

Java Unmarshaller Security - Превращение ваших данных в выполнение кода

Если вы попали сюда из-за Log4Shell/CVE-2021-44228, возможно, вам стоит прочитать о векторах эксплуатации и затронутых версиях Java runtime: https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/

Статья

Прошло более двух лет с тех пор, как Крис Фрохофф и Габриэль Лоуренс представили свои исследования уязвимостей десериализации объектов Java, которые в итоге привели к тому, что можно смело назвать самой большой волной ошибок удалённого выполнения кода в истории Java.

Исследования в этой области показали, что эти уязвимости не ограничиваются такими выразительными механизмами, как Java-сериализация или XStream, но некоторые из них могут быть применимы и к другим механизмам.

Эта статья представляет анализ, включая детали эксплуатации, различных Java-библиотек маршалинга с открытым исходным кодом, которые позволяют (или позволяли) выполнять анмаршалинг произвольных типов, предоставленных атакующим, и показывает, что независимо от того, как выполняется этот процесс и какие неявные ограничения действуют, он подвержен похожим техникам эксплуатации.

Полная статья находится в marshalsec.pdf

Отказ от ответственности

Вся информация и код предоставлены исключительно в образовательных целях и/или для тестирования ваших собственных систем на наличие этих уязвимостей.

Использование

Требуется Java 8. Сборка через maven mvn clean package -DskipTests. Запуск:

root@kitploit:~
java -cp target/marshalsec-[VERSION]-SNAPSHOT-all.jar marshalsec.<Marshaller> [-a] [-v] [-t] [<gadget_type> [<arguments...>]]

где

  • -a - генерирует/тестирует все payload'ы для данного маршалера
  • -t - запуск в тестовом режиме, анмаршалинг сгенерированных payload'ов после их генерации.
  • -v - подробный режим, например, также показывает сгенерированный payload в тестовом режиме.
  • gadget_type - Идентификатор конкретного гаджета; если не указан, будут показаны доступные для данного маршалера.
  • arguments - Аргументы, специфичные для гаджета

Генераторы payload'ов для следующих маршалеров включены:

Аргументы и дополнительные предусловия

Выполнение системных команд

  • cmd - команда для выполнения
  • args... - дополнительные параметры, передаваемые как аргументы

Предусловий нет.

Удалённая загрузка классов (обычная)

  • codebase - URL удалённого codebase
  • class - Класс для загрузки

Предусловия:

  • Настройте веб-сервер, размещающий Java classpath по некоторому пути.
  • Скомпилированные файлы классов для загрузки должны обслуживаться в соответствии с соглашениями Java classpath.

Удалённая загрузка классов (ServiceLoader)

  • service_codebase - URL удалённого codebase

Загружаемый сервис в настоящее время жёстко задан как javax.script.ScriptEngineFactory.

Предусловия:

  • То же, что и для обычной удалённой загрузки классов.
  • Также требуется файл provider-configuration по адресу /META-INF/javax.script.ScriptEngineFactory, содержащий имя целевого класса в виде обычного текста.
  • Указанный там целевой класс должен реализовывать интерфейс сервиса javax.script.ScriptEngineFactory.

Перенаправление через JNDI Reference

  • jndiUrl - JNDI URL для инициирования lookup

Предусловия:

  • Настройте удалённый codebase, как при удалённой загрузке классов.
  • Запустите сервис перенаправления JNDI reference, указывающий на этот codebase: включены две реализации: marshalsec.jndi.LDAPRefServer и RMIRefServer.
    root@kitploit:~
    java -cp target/marshalsec-[VERSION]-SNAPSHOT-all.jar marshalsec.jndi.(LDAP|RMI)RefServer <codebase>#<class> [<port>]
    
  • Используйте (ldap|rmi)://host:port/obj в качестве jndiUrl, указывающего на адрес прослушивания этого сервиса.

Запуск тестов

Существует несколько системных свойств, управляющих аргументами при запуске тестов (через maven или при использовании -a)

  • exploit.codebase, по умолчанию http://localhost:8080/
  • exploit.codebaseClass, по умолчанию Exploit
  • exploit.jndiUrl, по умолчанию ldap://localhost:1389/obj
  • exploit.exec, по умолчанию /usr/bin/gedit

Тесты выполняются с установленным SecurityManager, который проверяет выполнение системных команд, а также выполнение кода из удалённых codebase. Для этого загружаемый класс должен инициировать какую-либо проверку security manager.

Скачать инструмент
MarshallerGadget Impact
BlazeDSAMF(0|3|X)JDK only escalation to Java serialization
various third party libraries RCEs
Hessian|Burlapvarious third party RCEs
Castordependency library RCE
Jacksonpossible JDK only RCE, various third party RCEs
Javayet another third party RCE
JsonIOJDK only RCE
JYAMLJDK only RCE
Kryothird party RCEs
KryoAltStrategyJDK only RCE
Red5AMF(0|3)JDK only RCE
SnakeYAMLJDK only RCEs
XStreamJDK only RCEs
YAMLBeansthird party RCE