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

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

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

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

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

Категории

Все категории
Loading categories
fastjson-jsontype-rce-lab — Docker-лаборатории + защитный сканер для RCE через удалённую загрузку классов fastjson. fastjson 1.2.66-1.2.83: ресурсный зонд @JSONType (CVE-2026-16723). fastjson2 2.0.57: @type атакующего достигает loadClass при ОТКЛЮЧЁННОМ autoType через полиморфные типы (@JSONType(seeAlso) / Jackson @JsonSubTypes). Только маркерные нагрузки; проверки safeMode + JDK17. | Kitploit
Инструменты/GitHubGitHub/dinosn/fastjson-jsontype-rce-lab
Статический анализДинамический анализ (песочница)Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubdinosn/fastjson-jsontype-rce-lab

fastjson-jsontype-rce-lab

Репозиторий
20392132 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →

Описание

Docker-лаборатории + защитный сканер для RCE через удалённую загрузку классов fastjson. fastjson 1.2.66-1.2.83: ресурсный зонд @JSONType (CVE-2026-16723). fastjson2 2.0.57: @type атакующего достигает loadClass при ОТКЛЮЧЁННОМ autoType через полиморфные типы (@JSONType(seeAlso) / Jackson @JsonSubTypes). Только маркерные нагрузки; проверки safeMode + JDK17.

Поделиться

Лаборатория remote-JAR/FD-цепочки Fastjson @JSONType и её детектирование

Этот репозиторий теперь содержит два независимых направления исследований Fastjson:

  • modern-fd/ — рекомендуемая реконструкция только с маркером цепочки remote-JAR/файловых дескрипторов Fastjson 1.2.83 в одном теле запроса на Spring Boot 3, обычном встроенном Tomcat и JDK 17. Она использует буквальный приёмник фиксированного DTO JSON.parseObject(body, BoundEnvelope.class) с отключённым AutoType.
  • Исходная корневая лаборатория на Docker Compose сохраняет более ранний маршрут прямого удалённого класса на JDK 8. Она способна исполнять команды, и её следует рассматривать как унаследованное изолированное доказательство, а не как метод для современных JDK.
  • scanner/ содержит пассивное детектирование запросов/логов, статическую инвентаризацию артефактов и неисполняющий зонд достижимости.

Суть бага: ParserConfig.checkAutoType проверяет каждое значение @type на наличие аннотации @JSONType, выполняя getResourceAsStream(typeName.replace('.','/') + ".class"). На современных комбинациях Linux/JDK удалённый зонд jar:http может оставить JAR закэшированным за открытым дескриптором; последующие зонды jar:file:/proc/self/fd/N в том же теле могут переоткрыть его под допустимыми именами классов и инициализировать аннотированный класс. Точная композиция 1.2.83 работает с отключённым AutoType и через фиксированный DTO, содержащий List<Object>. Поэтому одно лишь связывание не является смягчением. Полный разбор: docs/MECHANISM.md.

Результаты обзора безопасности

Сопутствующий обзор всего проекта охватил 2 041 строку вызываемых/статических инициализаторов во всех 193 производственных Java-файлах Fastjson 1.2.83. В таблице ниже приоритизированы результаты с наибольшим влиянием; это не утверждение, что каждое развёртывание Fastjson затронуто. Данный репозиторий напрямую воспроизводит F105. Остальные записи обобщают отдельно опечатанный обзор исходного кода и ограниченные лабораторные доказательства.

ПриоритетНаходкаДоказанный результатВажная граница
1F105 — удалённое исполнение байткода через @JSONTypeИнициализация класса, предоставленного атакующим, через совместимые загрузчики Spring Boot, включая прямой маршрут JDK 8 и продолжение Linux/JDK 17 с удержанным JAR через /proc/self/fd/NТребуется достижимый для парсера носитель @type, совместимый загрузчик Boot/TCCL, исходящий доступ, отключённые SafeMode/IgnoreAutoType и точный JAR атакующего. Современный маршрут с фиксированным DTO дополнительно требует канал обобщённых значений (в лаборатории используется List<Object>), procfs в Linux, удержанный дескриптор и точное совпадение имён; не универсален для всех JDK, загрузчиков и ОС
2F1/F45 — исполнение команд через TemplatesImplМаркерное исполнение команд через API фиксированного DTO, включая игнорируемое свойство телаТребуется ослабленная политика сервера: допуск классов, AutoType и заполнение приватных полей или эквивалентные пути; неизменные настройки по умолчанию блокируют это
3F70/C016 — неограниченная буферизация и расширение GZIPТипизированные пути byte/InputStream и аннотированного DTO расширяются или буферизуются без ограничения вывода; воспроизведён OOME Java при ограниченной кучеТребуются достижимость конечной точки/схемы и байтов атакующего; массовый простой производства не установлен
4F18/C089 — исчерпание стека потока парсераГлубоко вложенные обычные значения объектов могут вызвать StackOverflowError при парсинге по умолчаниюВлияние на доступность потока запроса; не инвариантный сбой JVM или всего сервиса
5F120/C162 — HTTP SSRF/загрузка локальных ресурсов при фиксированной схемеУправляемый телом JEditorPane/JTextPane.page выполняет HTTP-запросы и может загружать ограниченное содержимое file: в состояние DocumentТребуется, чтобы приложение объявляло тип Swing; автоматическая эксфильтрация ответов или RCE не доказаны
6F118/C160 — сбой авторизации/целостности данных из-за коллизии хешаОтдельная коллизия Unicode FNV-1a-64 может привязаться к привилегированной константе перечисления или направить мутацию JSONPath не на тот сеттер бинаТребуются рабочая коллизия и доверие ниже по цепочке или открытая операция мутации JSONPath; допуск классов или RCE не требуются
7F121/C163 — достижимость JNDI через фиксированный JdbcRowSetТочный порядок сеттеров вызвал одно исходящее соединение JNDI/LDAP, выбранное теломДоказательства ограничиваются соединением: нет ответа именования, объектной фабрики, загрузки байткода или RCE
8F2/F45 — разрешение DNS по умолчаниюУправляемое атакующим разрешение имени хоста работает в конфигурации по умолчанию и через игнорируемое свойство фиксированного DTOТолько DNS/OOB-взаимодействие, не обобщённый HTTP SSRF или RCE

См. findings/FINDINGS.md с метками валидации, предварительными условиями, второстепенными находками, приоритетами устранения и явными отрицательными границами.

⚠️ Только авторизованное использование

Этот репозиторий предназначен для обучения, оборонительных исследований и авторизованного тестирования систем, которыми вы владеете или которые вам явно разрешено тестировать. Публикация хоста, когда она предусмотрена для внутренней сети современной лаборатории, допускается только на 127.0.0.1; его скрипты полностью выполняют тест внутри этой изолированной сети. В современной лаборатории нет примитива исполнения процессов — она устанавливает только фиксированный внутри-JVM маркер. Унаследованная лаборатория JDK 8 действительно исполняет id и записывает вывод в /tmp/PWNED; держите её изолированной. Не направляйте унаследованный эксплойт или активный зонд на неавторизованные системы.

Проверьте своё окружение

Каталог scanner/ содержит четыре инструмента на Python 3 без зависимостей (без установки через pip).

  • fjdetect.py — пассивно проверяет декодированные тела JSON-запросов или структурированные JSON-логи на наличие затравок remote-JAR и последовательностей /proc/self/fd или /dev/fd.
  • fjscan_static.py — инвентаризирует jars/wars/ears на предмет уязвимой комбинации (подтверждённая содержимым, проверенная по метаданным версия 1.2.83 × фактическое содержимое класса загрузчика Spring Boot). Релизы 1.2.48–1.2.82, несущие зонды, и кандидаты только по метаданным/имени файла сообщаются отдельно для рассмотрения. Удобен для CI-гейтов (код выхода 2 при EXPOSED).
  • fjscan_probe.py — активная безопасная проверка достижимости: отправляет @type на подконтрольный вам канареечный приёмник (встроенный слушатель или Burp Collaborator / interactsh) и коррелирует callback выборки ресурса. Его встроенный слушатель возвращает пустой 404; внешние слушатели настраивайте аналогично. Callback не доказывает загрузку класса или RCE.
  • fjpayload.py — генерирует тела выборки удалённых ресурсов для ручного тестирования; используйте только пустой слушатель или 404, если исполнение не предполагается.
# 1) passive request/log inspection
python3 scanner/fjdetect.py --ndjson gateway.jsonl

# 2) inventory build artifacts / unpacked images (parallel)
python3 scanner/fjscan_static.py /path/to/artifacts --threads 16
Скачать инструмент