{{Modèle:Testing Guide}} # Résumé # On parle de tests d'injection XML lorsque on essaye d'injecter un document XML dans l'application: si l'analyseur XML ne parvient pas à faire une validation des données le test sera positif. # Description # Dans cette section, nous décrivons un exemple pratique d'injection XML: en premier lieu, un style de communication XML sera défini, et ses principes de fonctionnement expliqués. Puis, nous décrirons la méthode de découverte dans lequel on cherche à insérer les métacaractères XML. Une fois que la première étape est accomplie, le testeur devra récupérer les informations sur la structure XML, de sorte qu'il sera possible d'essayer d'injecter des données XML et les balises (Tag injection). # Test boîte noire # Supposons qu'il y ait une application web en utilisant un style de communication XML afin de pouvoir procéder à l'enregistrement de l'utilisateur. Cela se fait en créant et en ajoutant un nœud dans un fichier XMLDB. Supposons que le fichier XMLDB est comme ce qui suit: gandalf !c3 0 gandalf@middleearth.com Stefan0 w1s3c 500 Stefan0@whysec.hmm Lorsqu'un utilisateur s'enregistre lui-même en remplissant un formulaire HTML, l'application reçoit des données de l'utilisateur dans des requêtes standards, qui, pour des raisons de simplicité, seront censées être envoyées dans une requête GET. Par exemple, les valeurs suivantes: Username: tony Password: Un6R34kb!e E-mail: s4tan@hell.com produira la demande: http://www.example.com/addUser.php?username=tony&password=Un6R34kb!e&email=s4tan@hell.com L'application construit le nœud suivant: tony Un6R34kb!e 500 s4tan@hell.com qui sera ajoutée à la XMLDB: gandalf !c3 0 gandalf@middleearth.com Stefan0 w1s3c 500 Stefan0@whysec.hmm tony Un6R34kb!e 500 s4tan@hell.com ## Découverte ## La première étape dans le but de tester une application pour la présence d'une vulnérabilité d'injection XML consiste à essayer d'insérer des métacaractères XML. Les métacaractères XML sont les suivants: * **Simple quote :' **- Quand il n'est pas filtré, ce caractère peut lever une exception lors de l'analyse XML, si la valeur injectée fait partie d'une valeur d'attribut dans une balise. A titre d'exemple, supposons que il y a l'attribut suivant: Donc, si: inputValue = foo' est instancié, puis est inséré en tant que valeur attrib: alors, le document XML résultant ne sera pas bien formé. * **Double quote: "**- ce caractère a la même signification que la simple quote et il pourrait donc être utilisé si la valeur de l'attribut est entre doubles quotes. Donc, si: $inputValue = foo" Est substitué: le document XML résultant sera invalide. * **Signes supérieur et inférieur :> et <**- En ajoutant un signe inférieur ou un signe supérieur dans une entrée d'utilisateur comme suit: Username = foo< l'application va construire un nouveau nœud: foo< Un6R34kb!e 500 s4tan@hell.com mais, à cause de la présence de l'ouverture "<", le document XML est valide. * **Balises de Commentaire: <__yamdwe_nowiki>2. **- La chaîne de caractères est interprété comme le début / fin d'un commentaire Ainsi, en injectant une d'entre elles dans le paramètre Nom d'utilisateur: Username = foo