
xpath è uno scanner per injection XPath veloce e multi-tecnica scritto in Nim. Si concentra su rilevamento pratico, confronto delle risposte, estrazione visibile, estrazione blind.
Scanner avanzato per XPath injection per test di sicurezza autorizzati.
Realizzato da Chokri Hammedi (blue0x1) · Licenza MIT
xpath è uno scanner per injection XPath veloce e multi-tecnica scritto in Nim. Si concentra sul rilevamento pratico, confronto delle risposte, estrazione visibile, estrazione blind e copertura dei payload per applicazioni reali basate su XML.
Non ha dipendenze runtime esterne oltre alla libreria standard di Nim.
nimble install xpath
Questo installa l'ultimo pacchetto dalla lista ufficiale dei pacchetti Nim.
git clone https://github.com/blue0x1/xpath.git
cd xpath
make linux
make test
Il binario Linux viene scritto in:
dist/xpath-linux-amd64
sudo make install
Di default installa:
/usr/local/bin/xpath
Per cambiare il prefisso di installazione:
sudo make install PREFIX=/usr
make deb
sudo dpkg -i dist/xpath_1.0.0_amd64.deb
make windows
Il binario Windows viene scritto in:
dist/xpath-windows-amd64.exe
Su Linux, la build Windows richiede MinGW:
sudo apt install mingw-w64
Scansione di un parametro GET:
xpath -u "http://target.local/search?q=test" -p q
Scansione di tutti i parametri query rilevati:
xpath -u "http://target.local/search?q=test&id=1"
Scansione di un corpo POST:
xpath -u "http://target.local/login" -m POST -d "user=*&pass=test"
Esegue tutte le tecniche ed estrae dati visibili o blind quando possibile:
xpath -u "http://target.local/search?q=test" -p q -t A -x
Utilizzo di un proxy:
xpath -u "http://target.local/search?q=test" -p q --proxy http://127.0.0.1:8080
Salvataggio output 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
Invia payload XPath malformati e rileva firme di errore specifiche del framework da Java, .NET, PHP, libxml2, Saxon, Xalan e codici di errore W3C XQuery.
xpath -u "http://target.local/item?id=1" -p id -t E
Confronta le risposte di coppie TRUE/FALSE utilizzando la somiglianza del corpo e le differenze di dimensione. È utile quando i risultati non vengono stampati direttamente ma il comportamento dell'applicazione cambia.
xpath -u "http://target.local/search?q=test" -p q -t B
Utilizza espressioni XPath computazionalmente costose per creare differenze misurabili nei tempi di risposta quando i segnali basati sul contenuto non sono disponibili.
xpath -u "http://target.local/search?q=test" -p q -t T --time-sec 3
Testa se un parametro simile a un selettore può essere unito con percorsi XPath assoluti o relativi, come //text(), ../../..//text(), //@* e percorsi indicizzati.
xpath -u "http://target.local/search?q=INVALID&field=name" -p field -t U -x
Verifica payload di rottura predicati, payload basati su posizione, payload di sottostringhe di ruolo, funzioni booleane e forme di bypass sensibili al contesto.
xpath -u "http://target.local/login" -m POST -d "username=*&password=test" -t P
Quando -x è abilitato, xpath sceglie la migliore modalità di estrazione disponibile:
| Modalità | Descrizione |
|---|
Esempio:
xpath -u "http://target.local/query?q=test" -p q -t A -x
Espressione personalizzata:
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
Licenza MIT. Vedi LICENSE.
Questo strumento è solo per test di sicurezza autorizzati. Usalo solo su sistemi di tua proprietà o per i quali hai esplicita autorizzazione scritta per eseguire test.
| Area | Supporto |
|---|
| Rilevamento | Basato su errori, blind basato su booleani, blind basato su tempo, bypass autenticazione, selezione union/nodo |
| Estrazione | Parsing HTML visibile, estrazione tramite union di selettori, estrazione dati XPath blind |
| Payload | Classici, predicati, basati su funzioni, breakout di percorso, codificati, entità, varianti mixed-case |
| Scoperta | Rilevamento parametri URL e crawling di form HTML |
| Evitamento | Indicatori WAF/IDS, payload bypass codificati in URL e basati su entità |
| Output | Report terminale leggibile ed export report JSON |
| Trasporto | Cookie, header, proxy, retry, timeout, User-Agent, controlli redirect |
| Risposta autenticazione visibile | Analizza nuove righe, link, redirect e valori renderizzati dalle risposte di bypass riuscite |
| Percorsi union visibili | Estrae testo appena renderizzato dai payload di union/selezione nodo |
| Estrazione blind | Utilizza string-length(), substring(), name() e count() per inferire dati XML |
| Livello | Focus |
|---|
1 | Payload classici veloci |
2 | Rotture predicati comuni nel mondo reale |
3 | Scansione bilanciata predefinita |
4 | Payload codificati, entità e breakout di percorso |
5 | Copertura massima e varianti esotiche |
| Obiettivo | Output |
|---|
make linux | dist/xpath-linux-amd64 |
make windows | dist/xpath-windows-amd64.exe |
make test | Esegue la suite di test Nim |
make install | Installa in $(PREFIX)/bin/xpath |
make deb | dist/xpath_1.0.0_amd64.deb |
make clean | Rimuove build/ e dist/ |