Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
web:injection_xpath [2016/03/15 09:02] yorin |
web:injection_xpath [2016/03/16 09:49] yorin |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | __**1) XPATH Authentification**__ | + | **Faille XPath Injection** |
+ | |||
+ | **1.Présentation de la Vulnérabilité ** | ||
+ | |||
+ | Le principe d'une injection XPath est proche de celui d'une injection SQL. Cela arrive lorsqu'un site utilises des informations que l'utilisateur entre pour construire une requête de donnée XML. En envoyant des informations mal formées (de façon intentionnelle) il est possible de bypasser des authentifications ou atteindre des données normalement inaccessible. | ||
+ | |||
+ | **2.Exploit ** | ||
+ | |||
+ | __2.1 XPATH Authentification__ | ||
**Le code :** | **Le code :** | ||
Ligne 33: | Ligne 41: | ||
<code> username=admin' or '1'='1' or ''='&password= </code> | <code> username=admin' or '1'='1' or ''='&password= </code> | ||
- | + | __2.2 Injection string:__ | |
- | __**2) Injection string:**__ | + | |
Ce type d'injection est possible sur un champs de recherche d'utilisateur par exemple. | Ce type d'injection est possible sur un champs de recherche d'utilisateur par exemple. | ||
Ligne 85: | Ligne 92: | ||
* **Carlos@decede.fr** | * **Carlos@decede.fr** | ||
* **Décédé** | * **Décédé** | ||
+ | |||
+ | **3.Comment s'en protéger** | ||
+ | |||
+ | Tout comme les injections SQL il faut echapper les inputs utilisateurs et "reconstruire" la requête après envoie. Il faut donc échapper la quote (') afin d'empêcher la fermeture de notre requête. Ici, toutes les ' seront remplacé par la version XML encoded à savoir "'". | ||
+ | |||
+ | <code> | ||
+ | VB: | ||
+ | Dim FindUserXPath as String | ||
+ | FindUserXPath = "//Employee[UserName/text()='" & Request("Username").Replace("'", "'") & "' And | ||
+ | Password/text()='" & Request("Password").Replace("'", "'") & "']" | ||
+ | |||
+ | C#: | ||
+ | String FindUserXPath; | ||
+ | FindUserXPath = "//Employee[UserName/text()='" + Request("Username").Replace("'", "'") + "' And | ||
+ | Password/text()='" + Request("Password").Replace("'", "'") + "']"; | ||
+ | </code> | ||
+ | |||
+ | source : [[https://www.owasp.org/index.php/XPATH_Injection]] |