
xpath est un scanner d'injection XPath rapide et multi-techniques écrit en Nim. Il se concentre sur la détection pratique, la comparaison de réponses, l'extraction visible et l'extraction aveugle.
Scanner d'injection XPath avancé pour les tests de sécurité autorisés.
Codé par Chokri Hammedi (blue0x1) · Licence MIT
xpath est un scanner d'injection XPath rapide, multi-techniques, écrit en Nim. Il se concentre sur la détection pratique, la comparaison de réponses, l'extraction visible, l'extraction aveugle et la couverture des payloads pour les applications réelles adossées à du XML.
Il n'a aucune dépendance d'exécution externe en dehors de la bibliothèque standard Nim.
nimble install xpath
Ceci installe la dernière version du paquet depuis la liste officielle des paquets Nim.
git clone https://github.com/blue0x1/xpath.git
cd xpath
make linux
make test
Le binaire Linux est écrit dans :
dist/xpath-linux-amd64
sudo make install
Par défaut, ceci installe :
/usr/local/bin/xpath
Pour changer le préfixe d'installation :
sudo make install PREFIX=/usr
make deb
sudo dpkg -i dist/xpath_1.0.0_amd64.deb
make windows
Le binaire Windows est écrit dans :
dist/xpath-windows-amd64.exe
Sur Linux, la compilation pour Windows nécessite MinGW :
sudo apt install mingw-w64
Scanner un paramètre GET :
xpath -u "http://target.local/search?q=test" -p q
Scanner tous les paramètres de requête détectés :
xpath -u "http://target.local/search?q=test&id=1"
Scanner un corps de requête POST :
xpath -u "http://target.local/login" -m POST -d "user=*&pass=test"
Exécuter toutes les techniques et extraire les données visibles ou aveugles lorsque c'est possible :
xpath -u "http://target.local/search?q=test" -p q -t A -x
Utiliser un proxy :
xpath -u "http://target.local/search?q=test" -p q --proxy http://127.0.0.1:8080
Enregistrer la sortie 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
Envoie des payloads XPath malformés et détecte les signatures d'erreur spécifiques aux frameworks Java, .NET, PHP, libxml2, Saxon, Xalan et aux codes d'erreur XQuery W3C.
xpath -u "http://target.local/item?id=1" -p id -t E
Compare les réponses de paires de payloads TRUE/FALSE en utilisant la similarité du corps et les écarts de taille. Ceci est utile lorsque les résultats ne sont pas directement affichés mais que le comportement de l'application change.
xpath -u "http://target.local/search?q=test" -p q -t B
Utilise des expressions XPath coûteuses en calcul pour créer des différences mesurables de temps de réponse lorsque les signaux basés sur le contenu ne sont pas disponibles.
xpath -u "http://target.local/search?q=test" -p q -t T --time-sec 3
Teste si un paramètre de type sélecteur peut être combiné par union avec des chemins XPath absolus ou relatifs, tels que //text(), ../../..//text(), //@* et des chemins indexés.
xpath -u "http://target.local/search?q=INVALID&field=name" -p field -t U -x
Vérifie les payloads de cassure de prédicat, les payloads basés sur la position, les payloads de sous-chaîne de rôle, les fonctions booléennes et les formes de contournement tenant compte du contexte.
xpath -u "http://target.local/login" -m POST -d "username=*&password=test" -t P
Lorsque -x est activé, xpath choisit le meilleur mode d'extraction disponible :
| Mode | Description |
|---|
Exemple :
xpath -u "http://target.local/query?q=test" -p q -t A -x
Expression personnalisée :
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
Licence MIT. Voir LICENSE.
Cet outil est destiné uniquement aux tests de sécurité autorisés. Utilisez-le uniquement sur des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de test.
| Domaine | Prise en charge |
|---|
| Détection | Basée sur les erreurs, aveugle booléenne, aveugle temporelle, contournement d'authentification, union/sélection de nœuds |
| Extraction | Analyse HTML visible, extraction par union de sélecteurs, extraction de données XPath aveugle |
| Payloads | Classiques, prédicats, fonctions, sortie de chemin, encodés, entités, variantes avec casse mixte |
| Découverte | Détection de paramètres d'URL et exploration de formulaires HTML |
| Évasion | Indicateurs WAF/IDS, payloads de contournement encodés en URL et basés sur les entités |
| Sortie | Rapport terminal lisible et export JSON |
| Transport | Cookies, en-têtes, proxy, nouvelle tentative, délai d'attente, User-Agent, contrôles de redirection |
| Réponse d'authentification visible | Analyse les nouvelles lignes, liens, redirections et valeurs rendues à partir des réponses de contournement réussies |
| Chemins d'union visibles | Extrait le nouveau texte rendu à partir des payloads d'union/sélection de nœuds |
| Extraction aveugle | Utilise string-length(), substring(), name() et count() pour déduire les données XML |
| Niveau | Objectif |
|---|
1 | Payloads classiques rapides |
2 | Ruptures de prédicat courantes dans le monde réel |
3 | Analyse équilibrée par défaut |
4 | Payloads encodés, à entités et à sortie de chemin |
5 | Couverture maximale et variantes exotiques |
| Cible | Sortie |
|---|
make linux | dist/xpath-linux-amd64 |
make windows | dist/xpath-windows-amd64.exe |
make test | Exécute la suite de tests Nim |
make install | Installe vers $(PREFIX)/bin/xpath |
make deb | dist/xpath_1.0.0_amd64.deb |
make clean | Supprime build/ et dist/ |