OWASP WebScarab:Onglets

From aldeid
Jump to navigation Jump to search
This article needs to be translated
This article has been copied from the old wiki and is in french. It needs to be translated into english. If you wish to participate, please send a mail to (click to reveal email)

Onglets

Summary

Si le navigateur est paramétré avec le proxy WebScarab, ce dernier analysera tout le contenu qui le traverse et l'affichera dans l'onglet Summary.

Messages

Cet onglet permet d'analyser tous les messages, dont les messages d'erreur.

Proxy

Listeners

Cet écran permet de modifier les paramètres du proxy WebScarab. En sélectionnant l'occurence dans la liste des listeners puis en cliquant sur "Stop", il est possible d'éditer les paramètres du proxy (adresse, port, limitation de bande passante).

Manual Edit

Note
Lorsque la version "lite" est activée (voir menu View), cet onglet est nommé "Intercept".

Cet onglet permet de spécifier si l'on souhaite intercepter les requêtes entrantes (Intercept responses) et sortantes (intercept requests) afin d'en analyser, voire modifier leur contenu. Il est possible de filtrer le type de requêtes à intercepter en sélectionnant les méthodes dans la liste "Methods".

Si WebScarab est paramétré pour intercepter les requêtes, celles-ci sont présentées dans une nouvelle fenêtre comme suit :

Lorsque la requête contient des paramètres, ceux-ci sont présentés dans un tableau de valeur. Il est possible de modifier toute ou partie de la requête directement dans cette fenêtre. Le bouton "Accept changes" permet d'appliquer les éventuelles modifications.

Note
Cette fonctionnalité est certainement l'une des plus intéressantes de WebScarab dans la mesure où elle permet par exemple de modifier des valeurs de variables et donc d'outre-passer les contrôles JavaScript d'un formulaire dont seraient issues ces variables.

Bean Shell

Cet onglet permet de définir du code Java pour les opérations complexes sur les requêtes et les réponses.

Miscellaneous

Cet onglet permet d'activer les options suivantes :

  • Reveal hidden fields in HTML pages : modifie dynamiquement les pages HTML afin de mettre en évidence les éventuels champs cachés (champs de type "hidden"). Il est alors possible de modifier leur valeur dans la page HTML directement.
  • Prevent browser from caching content : force le navigateur à ne pas mettre les pages en cache
  • Inject known cookies into requests : Insère dans toutes les requêtes l'ensemble des cookies connus
  • Get cookies from responses : Intercepte les éventuels cookies afin d'en afficher le contenu dans les pages interceptées.

Manual Request

Cette fonctionnalité permet d'analyser les requêtes a posteriori (liste déroulante "Previous Requests"), de les modifier ainsi que de les rejouer (bouton "Fetch Response").

WebServices

Cette fonctionnalité permet d'analyser un fichier WSDL (Web Service Description Language) afin d'en présenter les fonctions (opérations) et les paramètres. La valeur de ces derniers peut alors être modifiée avant l'envoi de la requête au serveur.

Note
Cette fonctionnalité sera abandonnée dans la prochaine version de WebScarab dans la mesure où il existe des outils gratuits tels que SOAPUI, permettant de réaliser les mêmes opérations.

Spider

Lorsqu'une page traverse WebScarab, son code est analysé. Ce plugin stocke tous les liens qu'elle contient et dresse une liste de tous ceux qui n'ont pas été visités. Il permet de télécharger une page sélectionnée (bouton "Fetch Selection" ou une arborescence sélectionnée (bouton "Fetch Tree"). Les éléments téléchargés apparaissent ensuite dans l'onglet "Summary".

Extensions

Ce plugin permet, lorsque les pages sont parcourues à travers WebScarab, de filtrer le contenu en fonction d'extensions de fichiers spécifiés (.bak, ~, etc.). Par exemple, si une page nommée login.jsp est parcourue, ce plugin recherchera l'éventuelle existence d'un fichier login.jsp.bak ou login.jsp~. Le bouton "Check" permet de lancer la recherche.

XSS/CRLF

Ce plugin permet de tester si les pages qui traversent WebScarab sont vulnérables à des attaques dites de Cross-Site-Scripting (XSS) ou d'injection Carriage Return Line Feed (CRLF).

Le bouton "Edit Test Strings" permet de spécifier les masques à appliquer pour déterminer si les pages sont vulnérables tandis que le bouton "Check" permet de lancer les tests.

SessionID Analysis

Ce plugin collecte et analyse les données contenues dans les cookies de session afin d'en déterminer leur fiabilité statistique quant à la génération des identifiants de session.

Collection

Cet onglet permet de récolter les données. Pour analyser un cookie, sélectionnez la page appropriée (type POST) dans la liste déroulante "Previous Requests" puis cliquez sur le bouton "Test". Si WebScarab a identifié un cookie avec succès, ses caractéristiques apparaîssent dans une popup. Dans le cas contraire, un message d'erreur apparaît.

Une fois un cookie identifié, le champ "Samples" permet de générer une suite d'identifiants. Saisissez par exemple "50" puis cliquez sur Fetch. Les résultats peuvent être analysés dans l'onglet "Analysis".

Analysis

Cet onglet permet d'analyser une suite d'identifiants générés par la fonction "Fetch" de l'onglet "Collection".

Sélectionnez le cookie à analyser dans la liste déroulante "Session Identifier" pour faire apparaître les résultats de la génération.

Visualisation

Cet onglet permet un rendu graphique de l'analyse effectuée sur les deux précédents onglets.

La capture suivante montre une génération tout à fait "linéaire", c'est à dire prévisible. Dans ce cas, il est aisé de déterminer les identifiants d'une session (Voir cas pratique dans WebGoat Hijack a session).

A contrario, lorsqu'un cookie intègre une notion d'aléa, la capture obtenue est plutôt du style suivant :

Scripted

Ce plugin offre la possibilité de créer des scripts de tests en utilisant les fonctionnalités de WebScarab. Le language de script est supporté par le Bean Scripting Framework (BSF), qui est language proche de Java. Pour plus d'informations, visitez le site http://www.beanshell.org/.

Fragments

Ce plugin permet de parcourir les commentaires et scripts contenus dans les réponses HTML transitant dans WebScarab.

Choisir le type (COMMENTS ou SCRIPTS) dans la liste déroulante afin de filtrer une page.

Fuzzer

Ce plugin de WebScarab permet d'effectuer du brute-force afin de forcer par exemple une authentification. Dans l'exemple qui suit, un formulaire simple programmé en PHP permet de vérifier que le couple "identifiant/mot de passe" correspond à "admin/password" :

<?php
if(isset($_POST["u"]) && isset($_POST["p"])) {
  if($_POST["u"]=="admin" && $_POST["p"]=="password") {
    header("Location: success.php");
  } else {
    echo("<div>No or incorrect value</div>");
  }
}
?>
<html>
<body>
<form method="post" action="index.php">
  <div><b>Username: </b><input type="text" name="u" /></div>
  <div><b>Password: </b><input type="password" name="p" /></div>
  <div><input type="submit" /></div>
</form>
</body>
</html>

Sur l'onglet "Fuzzer" de WebScarab, s'il est possible de remplir les champs manuellement, il est plus simple, à partir de l'onglet Summary, de sélectionner la page comme template pour le fuzzing (clic droit sur la requête POST, puis sélection de "Use as fuzz template" dans le menu contextuel) :

De retour à l'onglet "Fuzzer", on constate que les champs de celui-ci sont pré-remplis automatiquement :

Remplir la fenêtre "Sources" en suivant les indications suivantes :

En cliquant sur "Close", vous retournez sur l'écran principal. Utilisez la source précédemment définie pour les champs "u" (username) et "p" (password) puis saisissez des priorités différentes pour ces deux champs.

Note
Le fait de spécifier des priorités différentes pour les deux champs permet de les rendre indépendants. En effet, chaque élément du dictionnaire sera testé avec toutes les combinaisons possibles (nombre d'enregistrements du dictionnaire au carré). Dans le cas où vous spécifiez la même priorité, les champs "u" et "p" prennent la même source au même moment, offrant ainsi un nombre de combinaisons égal au nombre d'enregistrements du dictionnaire.

Vous auriez alors la possibilité de consulter les enregistrements un à un en double-cliquant dessus. Le plus simple est de se rendre à l'onglet "Compare", de sélectionner la dernière requête "POST", de trier les résultats par ordre de distance décroissante, puis de récupérer l'identifiant de la requête dont la distance est positive (ici #275).

Retournez maintenant à l'onglet "Fuzzer" afin de consulter la requête associée à l'identifiant retenu (double cliquez sur l'identifiant dans la liste des résultats). Nous connaissons maintenant la combinaison :

Compare

Ce plugin permet de calculer la distance d'édition entre deux requêtes, en comparant le nombre de différences (ou plutôt de "mots" différents) entre un corps de réponse de requête et une requête de base (référence), sélectionnée dans la liste déroulante des requêtes disponibles.

Search

Ce plugin permet de filtrer la liste des pages qui traversent WebScarab, en fonction d'un masque de recherche.