• XCat: Explorações de Vulnerabilidades via XPath Injection

    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