Identificar XXE
O primeiro passo para identificar potenciais vulnerabilidades XXE é encontrar páginas da web que aceitem uma entrada XML do usuário.
Se preenchermos o formulário de contato e clicarmos em
Send Data, então interceptamos a solicitação HTTP com Burp
Lendo arquivos confidenciais
Vamos agora enviar a solicitação modificada e ver se o valor da nossa entidade XML externa é definido para o arquivo ao qual fazemos referência:
<!DOCTYPE email [
<!ENTITY company SYSTEM "file:///etc/passwd">
]>
Execução Remota de Código com XXE
O método mais eficiente para transformar XXE em RCE é buscar um web shell do nosso servidor e escrevê-lo no aplicativo web, e então podemos interagir com ele para executar comandos. Para fazer isso, podemos começar escrevendo um web shell PHP básico e iniciando um servidor web python, como segue:
Agora, podemos usar o seguinte código XML para executar um
curlcomando que baixa nosso shell da web no servidor remoto:
Last updated