
xpath é um scanner de injeção XPath rápido e multitécnica escrito em Nim. Ele foca em detecção prática, comparação de respostas, extração visível e extração cega.
Scanner avançado de injeção XPath para testes de segurança autorizados.
Codificado por Chokri Hammedi (blue0x1) · Licença MIT
xpath é um scanner de injeção XPath rápido e com múltiplas técnicas, escrito em Nim. Ele se concentra em detecção prática, comparação de respostas, extração visível, extração cega e cobertura de payloads para aplicações reais baseadas em XML.
Não possui dependências de runtime externas além da biblioteca padrão do Nim.
nimble install xpath
Isso instala o pacote mais recente da lista oficial de pacotes Nim.
git clone https://github.com/blue0x1/xpath.git
cd xpath
make linux
make test
O binário Linux é gravado em:
dist/xpath-linux-amd64
sudo make install
Por padrão, isso instala:
/usr/local/bin/xpath
Para alterar o prefixo de instalação:
sudo make install PREFIX=/usr
make deb
sudo dpkg -i dist/xpath_1.0.0_amd64.deb
make windows
O binário Windows é gravado em:
dist/xpath-windows-amd64.exe
No Linux, a compilação para Windows requer MinGW:
sudo apt install mingw-w64
Escaneie um parâmetro GET:
xpath -u "http://target.local/search?q=test" -p q
Escaneie todos os parâmetros de consulta detectados:
xpath -u "http://target.local/search?q=test&id=1"
Escaneie um corpo POST:
xpath -u "http://target.local/login" -m POST -d "user=*&pass=test"
Execute todas as técnicas e extraia dados visíveis ou cegos quando possível:
xpath -u "http://target.local/search?q=test" -p q -t A -x
Use um proxy:
xpath -u "http://target.local/search?q=test" -p q --proxy http://127.0.0.1:8080
Salve a saída JSON:
xpath -u "http://target.local/search?q=test" -p q -t A -o report.json -f json
USAGE
xpath [OPTIONS] -u <URL>
TARGET
-u, --url <URL> Target URL
-m, --method <METHOD> HTTP method: GET or POST
-d, --data <DATA> POST body, use * to mark injection point
-p, --param <PARAM> Parameter(s) to test, comma-separated
-c, --cookie <COOKIE> Cookie string
-H, --header <HEADER> Extra header, repeatable
DETECTION
-t, --technique <FLAGS> E, B, T, U, P, or A
-l, --level <1-5> Payload thoroughness level
-x, --extract Extract data after confirming injection
--xpath <EXPR> XPath expression for extraction
OUTPUT
-o, --output <FILE> Save report
-f, --format <FMT> text or json
-v, --verbose Verbose output
Envia payloads XPath malformados e detecta assinaturas de erro específicas de frameworks a partir de códigos de erro Java, .NET, PHP, libxml2, Saxon, Xalan e W3C XQuery.
xpath -u "http://target.local/item?id=1" -p id -t E
Compara respostas pareadas de payloads TRUE/FALSE usando similaridade do corpo e deltas de tamanho. Isso é útil quando os resultados não são impressos diretamente, mas o comportamento da aplicação muda.
xpath -u "http://target.local/search?q=test" -p q -t B
Usa expressões XPath computacionalmente caras para criar diferenças mensuráveis no tempo de resposta quando sinais baseados em conteúdo não estão disponíveis.
xpath -u "http://target.local/search?q=test" -p q -t T --time-sec 3
Testa se um parâmetro semelhante a um seletor pode ser unido com caminhos XPath absolutos ou relativos, como //text(), ../../..//text(), //@*, e caminhos indexados.
xpath -u "http://target.local/search?q=INVALID&field=name" -p field -t U -x
Verifica payloads de quebra de predicado, payloads baseados em posição, payloads de substring de perfil, funções booleanas e formas de bypass sensíveis ao contexto.
xpath -u "http://target.local/login" -m POST -d "username=*&password=test" -t P
Quando a opção -x está habilitada, o xpath escolhe o melhor modo de extração disponível:
| Modo | Descrição |
|---|---|
Exemplo:
xpath -u "http://target.local/query?q=test" -p q -t A -x
Expressão personalizada:
xpath -u "http://target.local/query?q=test" -p q -x --xpath "name(/*[1])"
src/
xpath.nim
core/
analyzer.nim
crawler.nim
extractor.nim
http.nim
payloads.nim
reporter.nim
scanner.nim
utils/
cli.nim
config.nim
logger.nim
Licença MIT. Veja LICENSE.
Esta ferramenta é apenas para testes de segurança autorizados. Use-a apenas em sistemas que você possui ou para os quais tenha permissão explícita por escrito para testar.
| Área | Suporte |
|---|
| Detecção | Baseada em erros, cega baseada em booleano, cega baseada em tempo, bypass de autenticação, união/seleção de nós |
| Extração | Análise de HTML visível, extração por união de seletores, extração cega de dados XPath |
| Payloads | Clássicos, predicados, baseados em funções, escape de caminho, codificados, entidade, variantes com caixa mista |
| Descoberta | Detecção de parâmetros de URL e rastreamento de formulários HTML |
| Evasão | Indicadores de WAF/IDS, payloads de bypass codificados em URL e baseados em entidade |
| Saída | Relatório de terminal legível e exportação de relatório JSON |
| Transporte | Cookies, cabeçalhos, proxy, nova tentativa, timeout, User-Agent, controles de redirecionamento |
| Resposta de autenticação visível |
| Analisa novas linhas, links, redirecionamentos e valores renderizados de respostas de bypass bem-sucedidas |
| Caminhos de união visíveis | Extrai texto recém-renderizado de payloads de união/seleção de nós |
| Extração cega | Usa string-length(), substring(), name() e count() para inferir dados XML |
| Nível | Foco |
|---|
1 | Payloads clássicos rápidos |
2 | Quebras de predicado comuns no mundo real |
3 | Varredura balanceada padrão |
4 | Payloads codificados, de entidade e de escape de caminho |
5 | Cobertura máxima e variantes exóticas |
| Alvo | Saída |
|---|
make linux | dist/xpath-linux-amd64 |
make windows | dist/xpath-windows-amd64.exe |
make test | Executa a suíte de testes Nim |
make install | Instala em $(PREFIX)/bin/xpath |
make deb | dist/xpath_1.0.0_amd64.deb |
make clean | Remove build/ e dist/ |