jeudi 19 mars 2009

[STANDARD] OWASP - Episode 9

A grand pas, nous arrivons à la fin de notre étude sur la méthodologie OWASP. Dans ce neuvième épisode, nous traitons des Web Services. Mine de rien, c'est fou tout ce qu'ils peuvent nous permettre de faire ! Mais comme toujours, tout dépend de la sécurité de leur implémentation. Alors, prêt à tester ?


1 - Avant-propos

Dans la norme OWASP, il s'agit de la section 4.10. Nommée Web Services Testing - WS, elle aborde les grands axes d'attaques des services en question de leur découverte à leur exploitation en sept points.


2 - Phase de tests actifs 8 - tests sur les Web Services


2.1 - Collecte d'information sur les Web Services

Si nous ne connaissons pas la localisation des Web Services sur le serveur WEB hôte et que celle-ci n'est pas triviale, il nous faudra la trouver. Pour cela, plusieurs moyens s'offrent à nous :
  • grâce à notre ami Google avec un requête du type :

inurl:wsdl site:nom_cible


Sinon, nous pouvons tenter de les trouver avec les chemins, nom et extensions bien connus Pour cela, prendre les URLs connues et ajouter (combiner) :
  • /services/
  • nom_services
  • wsdl, uddi, disco, etc. Essayer aussi en les précédant d'un "?"

2.2 - Tests des WSDL

Une fois repérés les WSDLs, nous aurons accès à leur description. Ce qui nous intéresse alors, ce sont :
  • les noms des opérations (avec éventuellement leurs paramètres) ;
  • les URLs et/ou adresses IP fournies (adresses externes ou internes ...).

Pour cela, deux outils peuvent nous être utilise : WebScarab (en version complète) et WSDigger.


2.3 - Structure des fichiers XML

La description des WSDL est enregistrée au format XML. Le présent paragraphe s'attache à la bonne constitution de ces fichiers XML. Pour cela, nous allons vérifier les points suivants :
  • Le fichier est-il correctement formé ? Les balises sont-elles correctement fermées ?
  • Des éléments permettent-ils d'injecter des données larges ?
  • Des éléments permettent-ils d'injecter des binaires (éventuellement en base64) ?
  • Des éléments permettent-ils de lancer des injections malicieuses (voir Épisode 8) ?


2.4 - Attaque XML Content-Level

Suite à l'analyse effectuée dans l'étape précédente, nous allons tenter d'exploiter les vulnérabilités potentielles repérées. Le but est de s'amuser avec les paramètres et de les transformer à notre guise pour tester le comportement du serveur et/ ou de mener des attaques. Cela suppose néanmoins de pouvoir intéragir avec les WSDL.
Nous allons illustrer nos propos avec le screenshot suivant (avec WebScarab) :


Pour commencer, nous choisissons le WSDL que nous voulons tester (WSDL :). Puis, on choisit l'opération qui nous intéresse (1). Ensuite, On change la valeur du paramètre souhaité (2). Nous chargeons l'outil de créer la requête SOAP associée en cliquant simplement sur "Execute" (3). Le résultat est fourni en (4).


2.5 - Requête HTTP GET

Cette fois, nous tentons de modifier les paramètres via l'URL directement. indirectement, notre but est d'agir sur le WSDL. Alors, dans les paramètres, nous modifierons les valeurs fournies dans les requêtes en GET ou mieux, d'exécuter des commandes précédées du séparateur approprié (e.g. & ' ; ou |). Par exemple, la commande pourrait être lancée par la procédure master..xp_cmdshell d'un MSSQL :

' exec master..xp_cmdshell + commande


2.6 - Requête SOAP avec attachement

Un peu plus complexe que l'étape 2.4, il s'agit ici de forger une requête SOAP aussi à destination du WSDL cible à la différence près que nous cherchons à incorporer un attachement dans la requête. L'objectif est - par exemple - d'uploader sur le serveur WEB un programme nous permettant de prendre la main. Comme le suggère la méthodologie, le test peut consister en un test EICAR.


2.7 - Attaque de rejeu

Nous travaillons cette fois en local et après avoir lancé une attaque de type MItM. Alors, notre but est de récupérer les éléments valides d'une session (credentials, cookie, etc ...) pour pouvoir nous approprier les requêtes passées par d'autres utilisateurs en les rejouant. Nous aurons besoin d'outils pour sniffer le trafic (ex : wireshark) + TCPReplay et/ou Webscarab.

Aucun commentaire:

Locations of visitors to this page