
Um POC para a vulnerabilidade CVE-2025-66516 do Apache Tika apenas para fins educacionais.
Somente para Testes Educacionais/Autorizados | Licença | Política de Segurança
Este repositório contém um exploit de prova de conceito (POC) para CVE-2025-66516, uma vulnerabilidade de injeção de Entidade Externa XML (XXE) no Apache Tika em versões anteriores à 3.2.2. A vulnerabilidade afeta o parser XFA (XML Forms Architecture) no componente tika-parser-pdf-module, permitindo que atacantes leiam arquivos locais e exfiltrem dados sensíveis por meio de documentos PDF maliciosamente elaborados.
CVE-2025-66516 é uma vulnerabilidade de segurança crítica na funcionalidade de parsing de PDF do Apache Tika. Ao processar arquivos PDF com formulários XFA incorporados, as versões do Tika anteriores à 3.2.2 não restringem adequadamente o processamento de entidades externas nos parsers XML. Isso permite que atacantes:
Este repositório inclui:
Apache Tika XXE, exploit CVE-2025-66516, vulnerabilidade de segurança do Tika, ataque de Entidade Externa XML, injeção XXE em PDF, vulnerabilidade do Tika 3.2.1, XXE fora de banda, OOB XXE, pesquisa de segurança, teste de penetração, exploit POC, divulgação de vulnerabilidade, vulnerabilidade do parser XFA, tika-parser-pdf-module, vulnerabilidade de divulgação de arquivos, exfiltração de dados, ataque SSRF, codificação segura, análise de vulnerabilidade, teste de segurança, hacking ético, infosec, pesquisa em cibersegurança, código de exploit do Apache Tika, payload XXE, segurança de PDF, vulnerabilidade de parser de documentos
Nota: Este POC foi testado e verificado em:
Primeiro, crie um diretório dedicado para o POC para manter todos os arquivos organizados.
mkdir apache_tika_poc
cd apache_tika_poc
Antes de prosseguir com o POC, verifique se o seu ambiente possui as dependências necessárias. Esses comandos exibirão as versões do compilador/ambiente de execução Java e os detalhes do SO, que são importantes para reproduzir a vulnerabilidade.
# Check Java version
java -version
javac -version
# Check OS version
lsb_release -a
Saída Esperada: Você deve ver as informações da versão do Java (ex.: OpenJDK 17.x.x) e os detalhes da versão do Ubuntu (24.04.3 LTS).
Baixe as versões vulnerável (3.2.1) e corrigida (3.2.2) do Apache Tika. Precisamos de ambas as versões para demonstrar que a vulnerabilidade XXE existe na 3.2.1 e foi corrigida na 3.2.2. O JAR tika-app é um executável all-in-one que inclui todos os parsers e dependências do 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
Saída Esperada: Dois arquivos JAR serão baixados - tika-app-3.2.1.jar (~75MB) e tika-app-3.2.2.jar (~75MB).
Verifique as versões exatas inspecionando os arquivos de manifesto dos JARs. Isso confirma que temos as versões vulnerável e corrigida corretas antes do teste.
# 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
Saída Esperada: Arquivos de manifesto mostrando Implementation-Version: 3.2.1 e 3.2.2 respectivamente, juntamente com carimbos de data/hora da compilação e outros metadados.
Se observarmos os Project Object Models (as propriedades POM do Maven definem as dependências, a configuração de build e os metadados de um projeto), vemos que não há um tika-parsers separado, como mencionado nos avisos de segurança - pode ser algo relacionado à versão, e a suposição é que nas versões 3.2.1 e 3.2.2, que fazem parte do POC, o módulo tika-parsers foi substituído por módulos de parser individuais.
# 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
Saída Esperada: Uma lista de todos os módulos de componentes do Tika, incluindo tika-core, tika-parser-pdf-module, tika-xmp, etc. Você notará módulos de parser individuais em vez de um único módulo tika-parsers.
Extraia e exiba as informações de versão dos componentes principais do Tika. Isso nos ajuda a entender a estrutura interna dos módulos e a confirmar que tanto a biblioteca principal quanto o módulo parser de PDF estão nas versões 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
# 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