
POC-эксплойт для уязвимости CVE-2025-66516 в Apache Tika только в образовательных целях
Только для образовательных целей и авторизованного тестирования | Лицензия | Политика безопасности
Этот репозиторий содержит эксплойт типа «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 — это критическая уязвимость безопасности в функции разбора PDF в Apache Tika. При обработке PDF-файлов со встроенными XFA-формами версии Tika до 3.2.2 не ограничивают должным образом обработку внешних сущностей в XML-парсерах. Это позволяет злоумышленникам:
Этот репозиторий включает:
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 протестирован и подтверждён на:
Сначала создайте отдельный каталог для POC, чтобы все файлы были организованы.
mkdir apache_tika_poc
cd apache_tika_poc
Прежде чем приступить к POC, убедитесь, что в вашем окружении есть необходимые зависимости. Эти команды покажут версии компилятора/среды выполнения Java и сведения об ОС, что важно для воспроизведения уязвимости.
# Check Java version
java -version
javac -version
# Check OS version
lsb_release -a
Ожидаемый результат: Вы должны увидеть информацию о версии Java (например, OpenJDK 17.x.x) и сведения о версии Ubuntu (24.04.3 LTS).
Загрузите как уязвимую (3.2.1), так и исправленную (3.2.2) версии Apache Tika. Обе версии нужны, чтобы продемонстрировать, что XXE-уязвимость существует в 3.2.1 и устранена в 3.2.2. JAR-файл tika-app — это исполняемый файл «всё в одном», включающий все парсеры Tika и зависимости.
# 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. Это подтверждает, что у нас есть корректные уязвимая и исправленная версии перед тестированием.
# 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 соответственно, а также временные метки сборки и другие метаданные.
Если посмотреть на Project Object Models (свойства POM Maven определяют зависимости проекта, конфигурацию сборки и метаданные), мы видим, что нет отдельного модуля tika-parsers, как упоминалось в бюллетенях безопасности — это может быть связано с версиями, и предполагается, что в версиях 3.2.1 и 3.2.2, используемых в POC, модуль tika-parsers был заменён отдельными модулями парсеров.
# 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. Это помогает понять внутреннюю структуру модулей и подтвердить, что и базовая библиотека, и модуль PDF-парсера имеют ожидаемые версии.
# 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) должны соответствовать общей версии.