Outils pour utilisateurs

Outils du site


web:injection_xpath

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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/04/15 10:10]
arkinar
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 utilise 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 intentionnelleil est possible de bypasser des authentifications ou atteindre des données normalement inaccessible. 
 + 
 +**2.Exploit ** 
 + 
 +__2.1 XPATH Authentification__
  
 **Le code :** **Le code :**
Ligne 7: Ligne 15:
 Maintenant, notre but est d'​utiliser un tweak sur les valeurs username et password pour renvoyer une réponse **TRUE** et bypasser l'​authentification. Maintenant, notre but est d'​utiliser un tweak sur les valeurs username et password pour renvoyer une réponse **TRUE** et bypasser l'​authentification.
  
-Une partie ​découvrir, c'est le noeud courant. Pour rappel la sémantique d'une Xpath est Un axe, un noeud, des prédicats. Ici notre noeud est username:+Une partie ​à découvrir, c'est le noeud courant. Pour rappel la sémantique d'une Xpath est Un axe, un noeud, des prédicats. Ici notre noeud est username:
 Pour tester : Pour tester :
 <​code>​ username='​ or '​1'​='​1 </​code>​ <​code>​ username='​ or '​1'​='​1 </​code>​
Ligne 20: Ligne 28:
  
 Se connecter avec le premier utilisateur : <​code>​ username='​ or '​1'​='​1&​password='​ or '​1'​='​1 </​code>​ Se connecter avec le premier utilisateur : <​code>​ username='​ or '​1'​='​1&​password='​ or '​1'​='​1 </​code>​
-Cette requête renverra TRUE, nous serons donc loggé avec la première ​utilisateur de la liste, ici FrankyVincent. ​+Cette requête renverra TRUE, nous serons donc loggé avec le premier ​utilisateur de la liste, ici FrankyVincent. ​
 Si vous suivez un peu, vous voyez déjà que l'on peut bypasser le password par une fermeture en plus ! Voici: Si vous suivez un peu, vous voyez déjà que l'on peut bypasser le password par une fermeture en plus ! Voici:
  
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:__
-__**2Injection 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 envoi. Il faut donc échapper la quote (') afin d'​empêcher la fermeture de notre requête. Ici, toutes les ' seront remplacées par la version XML encoded à savoir "&​apos;"​.
 +
 +<​code>​
 +VB:
 +Dim FindUserXPath as String
 +FindUserXPath = "//​Employee[UserName/​text()='"​ & Request("​Username"​).Replace("'",​ "&​apos;"​) & "'​ And 
 +        Password/​text()='"​ & Request("​Password"​).Replace("'",​ "&​apos;"​) & "'​]"​
 +
 +C#:
 +String FindUserXPath;​
 +FindUserXPath = "//​Employee[UserName/​text()='"​ + Request("​Username"​).Replace("'",​ "&​apos;"​) + "'​ And 
 +        Password/​text()='"​ + Request("​Password"​).Replace("'",​ "&​apos;"​) + "'​]";​
 +</​code>​
 +
 +source : [[https://​www.owasp.org/​index.php/​XPATH_Injection]]
web/injection_xpath.txt · Dernière modification: 2016/07/04 08:38 (modification externe)