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 10:59]
yorin
web:injection_xpath [2016/04/15 10:10]
arkinar
Ligne 1: Ligne 1:
-__**1)Présentation de la Vulnérabilité ​**__+**Faille XPath Injection**
  
 +**1.Présentation de la Vulnérabilité **
  
-__**2)Exploit **__+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.1 XPATH Authentification**+**2.Exploit ​** 
 + 
 +__2.1 XPATH Authentification__
  
 **Le code :** **Le code :**
Ligne 12: 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 25: 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 38: 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.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 90: Ligne 93:
   * **Décédé**   * **Décédé**
  
-__**3)Remédiation ​de la Vulnérabilité **__+**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)