As vulnerabilidades de Injeção de XXE ou as vulnerabilidades de Entidades Externas XML são um tipo específico de ataque de Solicitação de Pedido de Servidor ou ataque SSRFrelacionado a abusar de recursos dentro de analisadores de XML.
As características que esses ataques seguem são amplamente disponíveis, mas raramente usadas e quando desencadeadas podem causar um ataque DoS (Denial of Service) e, em alguns casos, uma escalada muito mais grave, como a extração de dados sensíveis ou, no pior caso, os cenários RCE ou Remote Code Execution.
O que é XML
Na computação, Extensible Markup Language (XML) é uma linguagem de marcação que define um conjunto de regras para codificar documentos em um formato que seja legível por humanos e legível por máquina.
Ele foi substituído por muitas APIs modernas da JSON, mas muitos aplicativos ainda usam XML e / ou têm analisadores XML dentro, por isso é bom estar ciente de ataques XXE como um vetor.
Os analisadores XML validam os dados de duas maneiras principais, o XXE cai no método DTD ou Data Type Definition.
O que é um ataque XXE
A coisa é que as entidades XML podem ser definidas em qualquer lugar, incluindo externamente, é onde o XXE entra e pode ser abusado por um invasor usando entidades XML para solicitar a execução de determinados arquivos ou mesmo para retornar o conteúdo dos arquivos se eles conhecem o estrutura do seu aplicativo web, por exemplo.
Também vale a pena mencionar que, com alguns analisadores XML, é possível obter listagens de diretórios além do conteúdo de um arquivo.
Exemplo de ataque do XXE
Um exemplo seria assim:
Pedido
POST http://example.com/xml HTTP/1.1 <!DOCTYPE foo [ <!ELEMENT foo ANY> <!ENTITY bar SYSTEM "file:///etc/lsb-release"> ]> <foo> &bar; </foo>
Resposta
HTTP/1.0 200 OK DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS"
Obviamente, este é um exemplo simples, mas pode ser usado para ecoar
/etc/passwd
, obter segredos de reposição de código fonte ou executar código malicioso (como um shell da web ) se o atacante conseguiu fazer o upload de algo.