Intégrer sqlmap avec un proxy comme Burp Suite

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à intégrer sqlmap, un puissant outil open-source de test d'intrusion qui automatise le processus de détection et d'exploitation des failles d'injection SQL, avec un proxy d'interception comme Burp Suite.

L'utilisation d'un proxy avec sqlmap est une compétence cruciale pour les professionnels de la sécurité. Elle vous permet de voir les charges utiles exactes que sqlmap envoie, de comprendre sa logique de test, de déboguer les problèmes potentiels et même de modifier les requêtes à la volée. Cette visibilité est inestimable pour comprendre le fonctionnement des attaques par injection SQL et pour effectuer des évaluations de sécurité plus avancées et personnalisées.

À la fin de ce laboratoire, vous serez en mesure de router le trafic de sqlmap via Burp Suite, d'observer les requêtes générées et d'analyser les modèles d'attaque automatisés.

Configuration de Burp Suite pour écouter sur un port local

Dans cette étape, vous allez lancer Burp Suite et vérifier que son écouteur proxy est actif. Burp Suite agit comme un serveur proxy web, se plaçant en homme du milieu (man-in-the-middle) entre votre navigateur (ou dans ce cas, sqlmap) et l'application cible. Par défaut, il écoute les connexions entrantes sur le port 8080 de la machine locale (127.0.0.1).

Tout d'abord, lançons Burp Suite. Vous pouvez le trouver dans le menu des applications.

  1. Cliquez sur le Menu des Applications (l'icône dans le coin supérieur gauche de l'écran).
  2. Naviguez vers Web -> Burp Suite Community Edition.
  3. Une boîte de dialogue apparaîtra. Vous pouvez laisser les paramètres par défaut et cliquer sur Next.
  4. Une autre boîte de dialogue vous demandera de sélectionner un projet. Choisissez Use Burp defaults et cliquez sur Start Burp.

Une fois Burp Suite chargé, vous devez vérifier ses paramètres proxy.

  1. Cliquez sur l'onglet Proxy.
  2. Cliquez sur le sous-onglet Options dans l'onglet Proxy.
  3. Recherchez la section "Proxy Listeners". Vous devriez voir une entrée avec l'interface 127.0.0.1:8080 et la case à cocher "Running" cochée.

Cela confirme que Burp Suite écoute activement le trafic sur le port local 8080. Toute application configurée pour envoyer du trafic à cette adresse et à ce port verra ses requêtes interceptées et enregistrées par Burp Suite.

Configuration de sqlmap pour utiliser le proxy avec --proxy=http://127.0.0.1:8080

Dans cette étape, vous apprendrez à indiquer à sqlmap d'envoyer son trafic réseau via le proxy Burp Suite que nous venons de configurer.

sqlmap fournit un argument de ligne de commande simple, --proxy, pour spécifier un proxy HTTP. Vous devez fournir l'adresse du proxy au format http://<hôte>:<port>.

Étant donné que Burp Suite écoute sur 127.0.0.1:8080, l'argument correct à utiliser est :

--proxy=http://127.0.0.1:8080

Lorsque vous ajoutez cet argument à votre commande sqlmap, au lieu d'envoyer les requêtes directement au serveur web cible, sqlmap les enverra à http://127.0.0.1:8080. Burp Suite recevra alors ces requêtes, les enregistrera et les transmettra à la destination finale.

Dans l'étape suivante, nous combinerons cet argument proxy avec une URL cible pour effectuer un scan. Pour l'instant, il est important de comprendre que ce seul paramètre est tout ce qui est nécessaire pour intégrer les deux outils.

Exécution d'un scan sqlmap de base

Dans cette étape, vous allez exécuter un scan sqlmap de base contre l'application web de test, en acheminant le trafic via Burp Suite. Nous allons demander à sqlmap d'énumérer les bases de données sur le serveur.

Ouvrez un terminal. Nous allons construire une commande qui inclut :

  • L'URL cible : -u "http://127.0.0.1/index.php?id=1"
  • La configuration du proxy : --proxy=http://127.0.0.1:8080
  • L'action à effectuer : --dbs (pour énumérer les bases de données)
  • Un indicateur non interactif : --batch (pour répondre automatiquement 'oui' à toutes les questions)

Exécutez maintenant la commande complète dans votre terminal :

sqlmap -u "http://127.0.0.1/index.php?id=1" --proxy=http://127.0.0.1:8080 --dbs --batch

Vous verrez la sortie de sqlmap dans le terminal lorsqu'il commencera à tester la cible. Il confirmera d'abord que le paramètre id est vulnérable, puis listera les bases de données disponibles.

La sortie devrait ressembler à ceci (les numéros de version et certains détails peuvent varier) :

        ___
       __H__
 ___ ___[.]_____ ___ ___  {1.x.x#dev}
|_ -| . [.]     | .'| . |
|___|_  [.]_|_|_|__,|  _|
      |_|V...       |_|   http://sqlmap.org

[INFO] starting @ ...
...
[INFO] GET parameter 'id' is 'MySQL >= 5.0 boolean-based blind' injectable
[INFO] GET parameter 'id' is 'MySQL >= 5.0.12 stacked queries' injectable
[INFO] GET parameter 'id' is 'MySQL >= 5.0.12 time-based blind' injectable
...
[INFO] fetching database names
[INFO] the following databases are available [4]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] sys

[INFO] fetched data logged to text files under '/home/labex/.sqlmap/output/127.0.0.1'

Pendant que sqlmap s'exécute, il envoie des centaines de requêtes via Burp Suite.

Observer le trafic généré par sqlmap dans l'historique HTTP de Burp Suite

Dans cette étape, vous reviendrez à Burp Suite pour voir le trafic que sqlmap a généré pendant son scan.

Amenez la fenêtre Burp Suite au premier plan.

  1. Assurez-vous d'être dans l'onglet Proxy.
  2. Cliquez sur le sous-onglet HTTP history.

Vous verrez maintenant un tableau rempli de requêtes HTTP. Toutes ces requêtes ont été envoyées par sqlmap au serveur cible via le proxy Burp.

Prenez un moment pour observer la liste :

  • Host : Toutes les requêtes sont dirigées vers 127.0.0.1.
  • Method : La plupart des requêtes sont des requêtes GET.
  • URL : L'URL est toujours /index.php, mais le paramètre id dans la chaîne de requête change à chaque requête.

Cette vue fournit un journal complet de l'activité de sqlmap. Vous pouvez constater le volume de requêtes qu'un outil automatisé génère pour tester une seule classe de vulnérabilité. C'est le principal avantage de l'utilisation d'un proxy : il rend visibles les opérations de "boîte noire" de l'outil.

Analyser les charges utiles (payloads) envoyées par sqlmap via le proxy

Dans cette étape, vous examinerez de plus près les requêtes individuelles pour comprendre les charges utiles spécifiques que sqlmap utilise pour détecter et exploiter les vulnérabilités d'injection SQL.

Dans l'onglet HTTP history de Burp Suite, cliquez sur n'importe quelle requête dans la liste. Lorsque vous sélectionnez une requête, deux nouveaux panneaux apparaîtront sous la liste : Request et Response.

Cliquez sur le panneau Request pour afficher la requête HTTP brute envoyée par sqlmap. Portez une attention particulière au paramètre id dans l'URL. Vous verrez diverses charges utiles être testées.

Par exemple, vous pourriez trouver une charge utile de type "boolean-based blind" comme celle-ci :

GET /index.php?id=1%20AND%208003=8003 HTTP/1.1
Host: 127.0.0.1
...

Ici, sqlmap teste si l'application répond différemment lorsqu'une condition vraie (AND 8003=8003) est injectée. Le %20 est la représentation encodée en URL d'un espace.

Vous pourriez également trouver une charge utile de type "time-based blind" :

GET /index.php?id=1%20AND%20(SELECT%202079%20FROM%20(SELECT(SLEEP(5)))IImL) HTTP/1.1
Host: 127.0.0.1
...

Avec cette charge utile, sqlmap injecte une commande SLEEP(5). Si le serveur met 5 secondes de plus à répondre, sqlmap sait que l'injection a réussi et que la base de données est vulnérable.

En analysant ces requêtes, vous acquérez une compréhension beaucoup plus approfondie du fonctionnement des scanners automatisés. Vous pouvez voir la logique qu'ils utilisent pour confirmer les vulnérabilités, ce qui est beaucoup plus instructif que de simplement voir le résultat final dans le terminal.

Résumé

Dans ce laboratoire, vous avez réussi à intégrer l'outil de scan automatisé sqlmap avec le proxy d'interception Burp Suite.

Vous avez appris à :

  • Lancer Burp Suite et confirmer que son écouteur proxy est actif sur 127.0.0.1:8080.
  • Utiliser l'argument --proxy dans sqlmap pour router tout son trafic via Burp Suite.
  • Exécuter un scan avec le proxy activé pour générer du trafic.
  • Observer la liste complète des requêtes HTTP dans l'onglet HTTP history de Burp Suite.
  • Analyser les requêtes individuelles pour comprendre les charges utiles spécifiques d'injection SQL basées sur des booléens et basées sur le temps que sqlmap utilise pour identifier les vulnérabilités.

Cette technique est fondamentale pour tout testeur de sécurité web, car elle fournit un aperçu critique du comportement des outils automatisés et permet un plus grand contrôle et une meilleure analyse lors d'un test d'intrusion.