NOTÍCIAS

[ANONYMOUS][grids]

Ataques de Injeção XXE - Vulnerabilidade de Entidade Externa XML Com Exemplos

Ataques de Injeção XXE - Vulnerabilidade de Entidade Externa XML Com Exemplos

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.