
Un POC para la vulnerabilidad CVE-2025-66516 de Apache Tika únicamente con fines educativos.
Solo pruebas educativas/autorizadas | Licencia | Política de seguridad
Este repositorio contiene un exploit de prueba de concepto (PoC) para CVE-2025-66516, una vulnerabilidad de inyección de entidad externa XML (XXE) en versiones de Apache Tika anteriores a 3.2.2. La vulnerabilidad afecta al analizador XFA (XML Forms Architecture) en el componente tika-parser-pdf-module, permitiendo a los atacantes leer archivos locales y exfiltrar datos sensibles mediante documentos PDF manipulados maliciosamente.
CVE-2025-66516 es una vulnerabilidad de seguridad crítica en la funcionalidad de análisis de PDF de Apache Tika. Al procesar archivos PDF con formularios XFA incrustados, las versiones de Tika anteriores a 3.2.2 no restringen adecuadamente el procesamiento de entidades externas en los analizadores XML. Esto permite a los atacantes:
Este repositorio incluye:
Apache Tika XXE, exploit de CVE-2025-66516, vulnerabilidad de seguridad de Tika, ataque de entidad externa XML, inyección XXE en PDF, vulnerabilidad de Tika 3.2.1, XXE fuera de banda, OOB XXE, investigación de seguridad, pruebas de penetración, exploit PoC, divulgación de vulnerabilidades, vulnerabilidad del analizador XFA, tika-parser-pdf-module, vulnerabilidad de divulgación de archivos, exfiltración de datos, ataque SSRF, codificación segura, análisis de vulnerabilidades, pruebas de seguridad, hacking ético, infosec, investigación en ciberseguridad, código de exploit de Apache Tika, carga útil XXE, seguridad de PDF, vulnerabilidad del analizador de documentos
Nota: Este PoC ha sido probado y verificado en:
Primero, cree un directorio dedicado para el PoC con el fin de mantener todos los archivos organizados.
mkdir apache_tika_poc
cd apache_tika_poc
Antes de continuar con el PoC, verifique que su entorno tenga las dependencias requeridas. Estos comandos mostrarán las versiones de su compilador/entorno de ejecución de Java y los detalles del sistema operativo, lo cual es importante para reproducir la vulnerabilidad.
# Check Java version
java -version
javac -version
# Check OS version
lsb_release -a
Salida esperada: Debería ver la información de la versión de Java (por ejemplo, OpenJDK 17.x.x) y los detalles de la versión de Ubuntu (24.04.3 LTS).
Descargue tanto la versión vulnerable (3.2.1) como la parcheada (3.2.2) de Apache Tika. Necesitamos ambas versiones para demostrar que la vulnerabilidad XXE existe en 3.2.1 y está corregida en 3.2.2. El JAR tika-app es un ejecutable todo-en-uno que incluye todos los analizadores y dependencias de 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
Salida esperada: Se descargarán dos archivos JAR - tika-app-3.2.1.jar (~75MB) y tika-app-3.2.2.jar (~75MB).
Verifique las versiones exactas inspeccionando los archivos de manifiesto de los JAR. Esto confirma que tenemos las versiones vulnerables y parcheadas correctas antes de realizar las pruebas.
# 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
Salida esperada: Archivos de manifiesto que muestran Implementation-Version: 3.2.1 y 3.2.2 respectivamente, junto con marcas de tiempo de compilación y otros metadatos.
Si observamos los Modelos de Objeto de Proyecto (las propiedades POM de Maven definen las dependencias, la configuración de construcción y los metadatos de un proyecto), vemos que no hay tika-parsers separados como se menciona en los avisos de seguridad; podría ser algo relacionado con la versión, y la suposición es que en las versiones 3.2.1 y 3.2.2, que son parte del PoC, el módulo tika-parsers fue reemplazado por módulos de analizadores individuales.
# 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
Salida esperada: Una lista de todos los módulos de componentes de Tika, incluyendo tika-core, tika-parser-pdf-module, tika-xmp, etc. Notará módulos de analizadores individuales en lugar de un único módulo tika-parsers.
Extraiga y muestre la información de versión de los componentes principales de Tika. Esto nos ayuda a comprender la estructura interna de los módulos y a confirmar que tanto la biblioteca central como el módulo analizador de PDF están en las versiones esperadas.
# 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