OWASP WebGoat:Web Service SQL Injection

From aldeid
Jump to navigation Jump to search

Web Service SQL Injection

Description

Tout comme il est possible d'injecter du code JavaScript ou SQL dans un champ de formulaire non contrôlé, il est possible d'en faire de même avec le XML afin de modifier des requêtes de WebServices. C'est ce que propose cet exercice.

Première méthode : utilisation de WebScarab

Note
Pour pouvoir résoudre cet exercice avec WebScarab, il est nécessaire de posséder la version "self-contained" (webscarab-selfcontained-20070504-1631.jar) car la version standard ne propose pas nativement l'analyse des WebServices.
Warning
Afin que l'authentification soit demandée dans WebScarab au moment de la consultation du WebService, il est nécessaire d'activer la case à cocher "Ask when required" dans le menu Tools > Credentials.
  • Dans WebScarab, se rendre sur l'onglet "WebServices" puis, dans la liste déroulante "WSDL", sélectionner le WebService nommé "WsSqlInjection".
  • Dans le champ "Value" du noeud "id" de l'opération "getCreditCard", entrer "101 OR 1=1" (même logique que pour l'injection SQL).
  • Cliquer sur "Execute"
  • Lorsque l'authentification est demandée, saisir "guest" dans les champs "Username" et "Password" puis cliquer sur "OK".
  • La liste des cartes doit alors s'afficher au bout de quelques instants.

Deuxième méthode : utilisation de SOAPUI

Installer SOAPUI (soapUI-2.5.1-installer.exe sous Windows) puis suivre les étapes suivantes :

  • Sélectionner File > New soapUI Project

  • Renseigner le nom du projet et spécifier le chemin du fichier WSDL (ne pas placer l'authentification dans le chemin sans quoi vous aurez une erreur) puis cliquer sur "OK"


  • Renseigner l'authentification WebGoat ("guest" dans les champs "Username" et "Password"


  • Cliquer avec le bouton droit de la souris sur "getCreditCard" puis, dans le menu conteextuel, sélectionner "New request".


  • Donner un nom à la requête, par exemple "GetAllCreditCards".


  • Sélectionner "non" pour la création des éléments optionnels dans le schéma.


  • Modifier l'identifiant par défaut (?) dans la requête qui apparaît.
  • Renseigner les champs nécessaires à l'authentification
  • Exécuter la requête

Tous les numéros de compte appraissent. L'exercice est résolu.