Découvrir des points d'injection en parcourant un site web avec sqlmap

Kali LinuxBeginner
Pratiquer maintenant

Introduction

L'injection SQL est une vulnérabilité web courante qui permet aux attaquants d'interférer avec les requêtes qu'une application effectue à sa base de données. sqlmap est un outil de test d'intrusion open-source qui automatise le processus de détection et d'exploitation des failles d'injection SQL et de prise de contrôle des serveurs de bases de données.

Bien que sqlmap soit principalement connu pour ses capacités de test d'injection, il inclut également des fonctionnalités puissantes pour découvrir des points d'injection potentiels en parcourant un site web cible. Ceci est particulièrement utile lorsque vous n'avez pas d'URL ou de paramètre spécifique en tête, et que vous souhaitez que sqlmap explore le site et identifie tous les points d'entrée possibles pour l'injection.

Dans ce laboratoire, vous apprendrez à exploiter la fonctionnalité de parcours (crawling) de sqlmap pour découvrir automatiquement des URL et des formulaires sur un site web cible, puis à les tester pour des vulnérabilités d'injection SQL. Vous identifierez une URL racine, utiliserez l'option --crawl, définirez la profondeur du parcours, exécuterez l'opération, et enfin examinerez les points d'injection découverts.

Identifier une URL racine pour le site web cible

Dans cette étape, vous allez identifier l'URL racine du site web que sqlmap commencera à parcourir. C'est le point d'entrée pour que sqlmap commence à découvrir les liens et les formulaires. Pour ce laboratoire, nous utiliserons un serveur web simple fonctionnant localement.

Tout d'abord, assurons-nous que le serveur web est en cours d'exécution et accessible. Vous pouvez utiliser curl pour vérifier si le serveur répond.

curl http://127.0.0.1:8000

Vous devriez voir une sortie HTML, indiquant que le serveur est actif. L'URL racine pour notre site web cible sera http://127.0.0.1:8000.

Ensuite, nous utiliserons cette URL comme point de départ pour sqlmap.

Utiliser l'option --crawl pour découvrir des liens et des formulaires

Dans cette étape, vous apprendrez à utiliser l'option --crawl avec sqlmap. Cette option demande à sqlmap de parcourir le site web cible et de découvrir de nouvelles URL et de nouveaux formulaires à tester pour des vulnérabilités d'injection SQL. Sans cette option, sqlmap ne testerait que l'URL explicitement fournie.

La syntaxe de base pour utiliser --crawl est la suivante :

sqlmap -u < url_cible > --crawl

Essayons d'exécuter sqlmap avec l'option --crawl sur notre URL cible. Cette commande lancera le processus de parcours.

sqlmap -u http://127.0.0.1:8000 --crawl

Vous verrez sqlmap commencer à parcourir le site web, identifiant les liens et les formulaires. Il vous posera quelques questions pendant le processus. Dans le cadre de ce laboratoire, vous pouvez généralement accepter les options par défaut en appuyant sur Entrée ou en tapant y lorsque vous y êtes invité.

Par exemple, lorsqu'on vous demande "voulez-vous conserver les résultats dans un fichier CSV ?", vous pouvez taper n et appuyer sur Entrée. Lorsqu'on vous demande "voulez-vous tester d'autres vulnérabilités courantes ?", vous pouvez taper n et appuyer sur Entrée.

Définir la profondeur de parcours avec --crawl-depth=2

Dans cette étape, vous allez affiner le processus de parcours en définissant une profondeur de parcours spécifique à l'aide de l'option --crawl-depth. La profondeur de parcours détermine à combien de niveaux sqlmap descendra lors de la découverte de nouvelles URL. Une profondeur de 1 signifie qu'il ne visitera que les liens directement à partir de l'URL initiale. Une profondeur de 2 signifie qu'il visitera les liens à partir de l'URL initiale, puis les liens à partir de ces pages nouvellement découvertes, et ainsi de suite.

Pour notre petit site web cible, une profondeur de 2 sera suffisante pour découvrir toutes les pages disponibles.

La syntaxe pour définir la profondeur de parcours est la suivante :

sqlmap -u <url_cible> --crawl --crawl-depth=<valeur_profondeur>

Exécutons à nouveau sqlmap, en spécifiant cette fois une profondeur de parcours de 2.

sqlmap -u http://127.0.0.1:8000 --crawl --crawl-depth=2

Observez comment la sortie de sqlmap change, découvrant potentiellement plus de liens ou de formulaires à mesure qu'il descend plus profondément dans la structure du site. Encore une fois, vous pouvez accepter les invites par défaut en appuyant sur Entrée ou en tapant n pour des tests supplémentaires.

Exécuter l'opération de parcours et de test

Dans cette étape, vous allez exécuter l'opération complète de parcours et de test. Alors que les étapes précédentes ont démontré les options de parcours, sqlmap tentera par défaut de tester les points d'injection sur les URL découvertes. Pour rendre le test plus explicite et pour s'assurer que sqlmap effectue une vérification approfondie, nous pouvons ajouter l'option --batch pour automatiser les réponses aux invites et l'option --forms pour cibler spécifiquement les formulaires.

L'option --batch indique à sqlmap de s'exécuter en mode non interactif, en acceptant les réponses par défaut pour toutes les invites. Ceci est utile pour l'automatisation. L'option --forms demande spécifiquement à sqlmap d'analyser et de tester les formulaires HTML sur la cible.

Combinons ces options avec notre commande précédente :

sqlmap -u http://127.0.0.1:8000 --crawl --crawl-depth=2 --batch --forms

Cette commande va :

  1. Commencer le parcours à partir de http://127.0.0.1:8000.
  2. Descendre à deux niveaux de profondeur (--crawl-depth=2).
  3. Répondre automatiquement aux invites avec les valeurs par défaut (--batch).
  4. Rechercher et tester spécifiquement les formulaires HTML (--forms).

Observez la sortie. sqlmap listera les URL qu'il découvre et les paramètres qu'il teste. Il indiquera également s'il trouve des points d'injection potentiels.

Examiner les URL découvertes et les points d'injection potentiels

Dans cette dernière étape, vous allez examiner la sortie de sqlmap pour comprendre quelles URL et quels formulaires ont été découverts et si des points d'injection potentiels ont été identifiés.

Une fois que sqlmap aura terminé son exécution, il fournira un résumé de ses découvertes. Recherchez les lignes indiquant "parameter is vulnerable" (le paramètre est vulnérable) ou des messages similaires.

Même si sqlmap ne trouve pas de vulnérabilité d'injection SQL confirmée (ce qui est attendu pour notre simple site factice), il vous montrera quand même les URL et les paramètres qu'il a testés. Ces informations sont cruciales pour une analyse manuelle ou des tests automatisés supplémentaires.

Exemples d'extraits de sortie que vous pourriez voir :

...
[INFO] retrieved new form: 'http://127.0.0.1:8000/search.php' (GET)
...
[INFO] testing GET parameter 'id'
...
[INFO] testing GET parameter 'param'
...
[INFO] testing GET parameter 'query'
...

Le point essentiel est que sqlmap a réussi à parcourir le site, a identifié index.php, page.php et search.php (via le formulaire), puis a procédé à tester leurs paramètres respectifs (id, name, param, query). Cela démontre la puissance de la fonctionnalité de parcours de sqlmap pour cartographier automatiquement la surface d'attaque d'une application cible.

Vous pouvez également consulter les fichiers journaux de sqlmap (généralement dans ~/.sqlmap/output/) pour un rapport plus détaillé, bien que pour ce laboratoire, la sortie de la console soit suffisante.

Résumé

Dans ce laboratoire, vous avez appris avec succès à utiliser les puissantes capacités de parcours de sqlmap pour découvrir des points d'injection SQL potentiels sur un site web cible. Vous avez commencé par identifier une URL racine, puis utilisé l'option --crawl pour indiquer à sqlmap d'explorer le site. Vous avez affiné davantage le processus de parcours en définissant une profondeur spécifique avec --crawl-depth. Enfin, vous avez exécuté une opération de parcours et de test complète en utilisant --batch et --forms pour automatiser le processus et cibler spécifiquement les formulaires.

En terminant ce laboratoire, vous comprenez maintenant comment :

  • Identifier une URL de départ pour le parcours de sqlmap.
  • Utiliser l'option --crawl pour découvrir des liens et des formulaires.
  • Contrôler la profondeur du parcours avec --crawl-depth.
  • Exécuter une opération de parcours et de test automatisée avec --batch et --forms.
  • Interpréter la sortie de sqlmap pour identifier les URL découvertes, les paramètres et les points d'injection potentiels.

Cette compétence est fondamentale pour la reconnaissance en tests d'intrusion web, vous permettant de cartographier efficacement la surface d'attaque d'une application web avant de tenter d'exploiter des vulnérabilités spécifiques.