
xpath ist ein schneller XPath-Injection-Scanner mit mehreren Techniken, geschrieben in Nim. Er konzentriert sich auf praxisnahe Erkennung, Antwortvergleich, sichtbare Extraktion und blinde Extraktion.
Fortschrittlicher XPath-Injektionsscanner für autorisierte Sicherheitstests.
Programmiert von Chokri Hammedi (blue0x1) · MIT-Lizenz
xpath ist ein schneller XPath-Injektionsscanner mit mehreren Techniken, geschrieben in Nim. Er konzentriert sich auf praktische Erkennung, Antwortvergleich, sichtbare Extraktion, blinde Extraktion und Payload-Abdeckung für reale XML-basierte Anwendungen.
Er hat keine externen Laufzeitabhängigkeiten über die Nim-Standardbibliothek hinaus.
nimble install xpath
Dies installiert das neueste Paket aus der offiziellen Nim-Paketliste.
git clone https://github.com/blue0x1/xpath.git
cd xpath
make linux
make test
Die Linux-Binärdatei wird geschrieben nach:
dist/xpath-linux-amd64
sudo make install
Standardmäßig wird installiert:
/usr/local/bin/xpath
Um das Installationspräfix zu ändern:
sudo make install PREFIX=/usr
make deb
sudo dpkg -i dist/xpath_1.0.0_amd64.deb
make windows
Die Windows-Binärdatei wird geschrieben nach:
dist/xpath-windows-amd64.exe
Unter Linux erfordert der Windows-Build MinGW:
sudo apt install mingw-w64
Einen GET-Parameter scannen:
xpath -u "http://target.local/search?q=test" -p q
Alle erkannten Abfrageparameter scannen:
xpath -u "http://target.local/search?q=test&id=1"
Einen POST-Body scannen:
xpath -u "http://target.local/login" -m POST -d "user=*&pass=test"
Alle Techniken ausführen und sichtbare oder blinde Daten extrahieren, wenn möglich:
xpath -u "http://target.local/search?q=test" -p q -t A -x
Einen Proxy verwenden:
xpath -u "http://target.local/search?q=test" -p q --proxy http://127.0.0.1:8080
JSON-Ausgabe speichern:
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> Ziel-URL
-m, --method <METHOD> HTTP-Methode: GET oder POST
-d, --data <DATA> POST-Body, * zur Markierung der Injektionsstelle verwenden
-p, --param <PARAM> Zu testende Parameter, durch Komma getrennt
-c, --cookie <COOKIE> Cookie-Zeichenkette
-H, --header <HEADER> Zusätzlicher Header, wiederholbar
DETECTION
-t, --technique <FLAGS> E, B, T, U, P oder A
-l, --level <1-5> Gründlichkeitsgrad der Payloads
-x, --extract Daten nach bestätigter Injektion extrahieren
--xpath <EXPR> XPath-Ausdruck für die Extraktion
OUTPUT
-o, --output <FILE> Bericht speichern
-f, --format <FMT> text oder json
-v, --verbose Ausführliche Ausgabe
Sendet fehlerhafte XPath-Payloads und erkennt frameworkspezifische Fehlersignaturen von Java, .NET, PHP, libxml2, Saxon, Xalan und W3C-XQuery-Fehlercodes.
xpath -u "http://target.local/item?id=1" -p id -t E
Vergleicht gepaarte TRUE/FALSE-Payload-Antworten anhand von Body-Ähnlichkeit und Größenunterschieden. Dies ist nützlich, wenn Ergebnisse nicht direkt ausgegeben werden, sich das Anwendungsverhalten aber ändert.
xpath -u "http://target.local/search?q=test" -p q -t B
Verwendet rechenintensive XPath-Ausdrücke, um messbare Antwortzeitunterschiede zu erzeugen, wenn inhaltsbasierte Signale nicht verfügbar sind.
xpath -u "http://target.local/search?q=test" -p q -t T --time-sec 3
Testet, ob ein selektorartiger Parameter mit absoluten oder relativen XPath-Pfaden wie //text(), ../../..//text(), //@* und indizierten Pfaden verbunden (unioniert) werden kann.
xpath -u "http://target.local/search?q=INVALID&field=name" -p field -t U -x
Prüft prädikatbrechende Payloads, positionsbasierte Payloads, Rollen-Teilstring-Payloads, boolesche Funktionen und kontextbewusste Bypass-Formen.
xpath -u "http://target.local/login" -m POST -d "username=*&password=test" -t P
Wenn -x aktiviert ist, wählt xpath den besten verfügbaren Extraktionsmodus:
| Modus | Beschreibung |
|---|---|
Beispiel:
xpath -u "http://target.local/query?q=test" -p q -t A -x
Benutzerdefinierter Ausdruck:
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
MIT-Lizenz. Siehe LICENSE.
Dieses Tool ist ausschließlich für autorisierte Sicherheitstests bestimmt. Verwenden Sie es nur auf Systemen, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben.
| Bereich | Unterstützung |
|---|
| Erkennung | Fehlerbasiert, boolesche blinde, zeitbasierte blinde, Auth-Bypass, Union/Knotenauswahl |
| Extraktion | Sichtbares HTML-Parsing, Selector-Union-Extraktion, blinde XPath-Datenextraktion |
| Payloads | Klassisch, Prädikat, funktionsbasiert, Pfadausbruch, kodiert, Entity, gemischte Groß-/Kleinschreibung |
| Entdeckung | URL-Parametererkennung und HTML-Formular-Crawling |
| Umgehung | WAF/IDS-Indikatoren, URL-kodierte und entitätsbasierte Bypass-Payloads |
| Ausgabe | Menschlich lesbarer Terminalbericht und JSON-Berichtsexport |
| Transport | Cookies, Header, Proxy, Wiederholung, Timeout, User-Agent, Redirect-Steuerung |
| Sichtbare Auth-Antwort |
| Parst neue Zeilen, Links, Weiterleitungen und gerenderte Werte aus erfolgreichen Bypass-Antworten |
| Sichtbare Union-Pfade | Extrahiert neu gerenderten Text aus Union-/Knotenauswahl-Payloads |
| Blinde Extraktion | Verwendet string-length(), substring(), name() und count(), um XML-Daten abzuleiten |
| Ebene | Schwerpunkt |
|---|
1 | Schnelle klassische Payloads |
2 | Häufige reale Prädikatbrüche |
3 | Standard ausgewogener Scan |
4 | Kodierte, Entitäts- und Pfadausbruch-Payloads |
5 | Maximale Abdeckung und exotische Varianten |
| Ziel | Ausgabe |
|---|
make linux | dist/xpath-linux-amd64 |
make windows | dist/xpath-windows-amd64.exe |
make test | Führt die Nim-Testsuite aus |
make install | Installiert nach $(PREFIX)/bin/xpath |
make deb | dist/xpath_1.0.0_amd64.deb |
make clean | Entfernt build/ und dist/ |