Injection SQL avec Kali Linux et sqlmap

Kali LinuxKali LinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à identifier et à exploiter les vulnérabilités d'injection SQL en utilisant Kali Linux et le puissant outil sqlmap. Grâce à une série d'étapes guidées, vous détecterez des URL potentiellement injectables, énumérerez des bases de données, extrairez des données de tables et enregistrerez les résultats pour analyse. Toutes les activités sont menées dans un environnement sécurisé de machine virtuelle (VM) LabEx en utilisant un conteneur Kali Linux. Ce laboratoire est conçu pour les débutants, offrant une expérience pratique dans le test de sécurité des applications web avec des techniques manuelles et automatisées. Lorsque vous ouvrirez le terminal, vous serez automatiquement connecté au shell du conteneur Kali Linux, prêt à commencer à vous exercer.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kali(("Kali")) -.-> kali/KaliGroup(["Kali"]) kali/KaliGroup -.-> kali/file_ctrl("File Management") kali/KaliGroup -.-> kali/pkg_ops("Package Management") kali/KaliGroup -.-> kali/web_ctrl("Web Services") kali/KaliGroup -.-> kali/sqlmap_ops("SQLmap Tool") kali/KaliGroup -.-> kali/bash_code("Bash Scripting") subgraph Lab Skills kali/file_ctrl -.-> lab-552300{{"Injection SQL avec Kali Linux et sqlmap"}} kali/pkg_ops -.-> lab-552300{{"Injection SQL avec Kali Linux et sqlmap"}} kali/web_ctrl -.-> lab-552300{{"Injection SQL avec Kali Linux et sqlmap"}} kali/sqlmap_ops -.-> lab-552300{{"Injection SQL avec Kali Linux et sqlmap"}} kali/bash_code -.-> lab-552300{{"Injection SQL avec Kali Linux et sqlmap"}} end

Configuration de l'environnement et installation de sqlmap

Dans cette première étape, vous configurerez votre environnement de travail à l'intérieur du conteneur Kali Linux et vous vous assurerez que sqlmap, l'outil principal de ce laboratoire, est installé. Il s'agit d'une étape fondamentale pour se préparer aux tests d'injection SQL.

Lorsque vous ouvrirez le terminal dans la VM LabEx, vous serez automatiquement connecté au shell du conteneur Kali Linux. Il n'est pas nécessaire de démarrer manuellement le conteneur ou d'entrer dans le shell ; l'environnement est déjà configuré pour vous.

Commençons par mettre à jour la liste des paquets et installer sqlmap, qui est un outil open-source utilisé pour automatiser les tests d'injection SQL. Exécutez les commandes suivantes dans le terminal pour mettre à jour le référentiel de paquets et installer sqlmap :

apt update
apt install -y sqlmap

Ces commandes actualiseront la liste des paquets et installeront sqlmap s'il n'est pas déjà présent. Ce processus peut prendre quelques instants, veuillez donc patienter jusqu'à ce qu'il soit terminé.

Après l'installation, vérifiez que sqlmap est correctement installé en vérifiant sa version. Exécutez la commande suivante :

sqlmap --version

Sortie attendue (exemple, la sortie réelle peut varier) :

sqlmap version 1.7.9

Voir un numéro de version confirme que sqlmap est installé et prêt à être utilisé. Cette étape garantit que votre environnement est préparé pour les tâches de test d'injection SQL dans les étapes suivantes. Maintenant que l'outil est installé, vous êtes prêt à passer à l'identification des vulnérabilités potentielles.

Comprendre et détecter les URL injectables

Maintenant que votre environnement est configuré avec sqlmap installé, passons à la compréhension de l'injection SQL et à la détection des URL qui pourraient être vulnérables. L'injection SQL est une vulnérabilité courante des applications web qui permet aux attaquants de manipuler une base de données en injectant du code SQL malveillant via des champs de saisie utilisateur, souvent dans les paramètres d'URL.

Pour les débutants, considérez l'injection SQL comme un moyen de tromper une application web pour qu'elle exécute des commandes de base de données non intentionnelles. Un point d'entrée typique est un paramètre d'URL comme id=1 dans http://example.com/page?id=1. Si l'application ne valide pas correctement cette entrée avant de l'utiliser dans une requête de base de données, elle pourrait être vulnérable. La détection de ces URL implique de tester ces paramètres en ajoutant des caractères spéciaux comme une apostrophe ' et en observant si l'application répond avec une erreur ou un comportement inhabituel.

Dans ce laboratoire, puisque nous sommes dans un environnement contrôlé, nous simulerons ce processus avec une URL factice. Vous allez créer un fichier pour stocker un exemple d'URL cible à des fins de démonstration. Exécutez la commande suivante pour créer un fichier nommé target_url.txt dans le répertoire /root à l'intérieur du conteneur Kali Linux :

echo "http://example.com/page?id=1" > /root/target_url.txt

Maintenant, vérifiez le contenu du fichier pour vous assurer qu'il a été créé correctement. Exécutez la commande suivante :

cat /root/target_url.txt

Sortie attendue :

http://example.com/page?id=1

Ce fichier stocke l'URL factice que nous utiliserons tout au long du laboratoire. Dans un scénario réel, vous testeriez cette URL en ajoutant des caractères comme ' au paramètre (par exemple, id=1') et en utilisant des outils comme curl pour vérifier la réponse du serveur à la recherche d'erreurs SQL. Puisqu'il s'agit d'une simulation, nous nous concentrerons sur le processus plutôt que sur les tests réels. Le point essentiel est que l'identification des URL injectables est la première étape des tests d'injection SQL, et qu'elle implique la recherche de messages d'erreur ou de comportements inattendus dans la réponse de l'application.

Avec l'URL cible préparée, vous êtes prêt à passer à l'étape suivante où vous utiliserez sqlmap pour automatiser le processus de détection et d'exploitation.

Énumération des bases de données avec sqlmap

Après avoir préparé une URL cible, utilisons maintenant sqlmap pour simuler l'énumération des bases de données sur un système vulnérable. L'énumération des bases de données est le processus d'identification des bases de données présentes sur une cible, ce qui constitue une étape cruciale pour comprendre la structure du stockage de données backend lors d'une évaluation de sécurité.

Pour les débutants, sqlmap automatise la tâche fastidieuse de tester manuellement les vulnérabilités d'injection SQL. Il envoie diverses charges utiles (payloads) conçues à l'URL cible et analyse les réponses pour déterminer si une vulnérabilité existe et quelles informations peuvent être extraites, telles que les noms de bases de données. Dans un scénario réel, vous pointeriez sqlmap vers une URL vulnérable, mais comme nous utilisons une URL factice, nous simulerons la sortie.

Commencez par exécuter la commande suivante pour simuler l'énumération des bases de données à l'aide de sqlmap. Cette commande crée un fichier avec des résultats simulés dans le répertoire /root :

echo "Simulating sqlmap database enumeration..." > /root/sqlmap_dbs.txt
echo "Available databases: [information_schema, test_db]" >> /root/sqlmap_dbs.txt

Maintenant, vérifiez le contenu du fichier pour voir les résultats simulés de l'énumération des bases de données. Exécutez la commande suivante :

cat /root/sqlmap_dbs.txt

Sortie attendue :

Simulating sqlmap database enumeration...
Available databases: [information_schema, test_db]

Dans un test réel, si sqlmap détecte une vulnérabilité, il listerait les bases de données comme indiqué dans cette sortie simulée. Les bases de données courantes comme information_schema dans MySQL contiennent des métadonnées sur les autres bases de données du système. Cette étape vous aide à comprendre comment sqlmap peut extraire des informations de haut niveau sur la structure de la base de données d'une cible.

Avec les bases de données identifiées, vous êtes prêt à approfondir l'extraction de données spécifiques à partir de l'une de ces bases de données à l'étape suivante.

Vidage des données de table avec sqlmap

En nous appuyant sur l'énumération des bases de données de l'étape précédente, vous allez maintenant simuler l'utilisation de sqlmap pour vider les données de table d'une base de données spécifique. Ce processus implique de lister les tables au sein d'une base de données et d'extraire leur contenu, ce qui peut révéler des informations sensibles si une vulnérabilité existe.

Pour les débutants, considérez une base de données comme un ensemble de tables, similaires à des feuilles de calcul avec des lignes et des colonnes de données. sqlmap peut exploiter les vulnérabilités d'injection SQL pour lister ces tables et vider leurs données, telles que les informations d'identification des utilisateurs ou d'autres informations critiques. Puisque nous utilisons une URL factice, nous simulerons ce processus avec une sortie simulée.

Simulons l'extraction des informations de table de la base de données test_db identifiée précédemment. Exécutez la commande suivante pour créer un fichier avec des résultats simulés d'énumération de tables dans le répertoire /root :

echo "Simulating sqlmap table enumeration for test_db..." > /root/sqlmap_tables.txt
echo "Tables in test_db: [users, orders, products]" >> /root/sqlmap_tables.txt

Ensuite, vérifiez le contenu du fichier pour confirmer la liste simulée des tables. Exécutez la commande suivante :

cat /root/sqlmap_tables.txt

Sortie attendue :

Simulating sqlmap table enumeration for test_db...
Tables in test_db: [users, orders, products]

Maintenant, simulez le vidage des données de la table users. Exécutez la commande suivante pour créer un fichier avec des données simulées dans le répertoire /root :

echo "Simulating sqlmap data dump for users table..." > /root/sqlmap_users_data.txt
echo "Data in users table:" >> /root/sqlmap_users_data.txt
echo "ID | Username | Password" >> /root/sqlmap_users_data.txt
echo "1  | admin    | pass123" >> /root/sqlmap_users_data.txt
echo "2  | user1    | test456" >> /root/sqlmap_users_data.txt

Vérifiez le contenu de ce fichier pour voir les données simulées vidées. Exécutez la commande suivante :

cat /root/sqlmap_users_data.txt

Sortie attendue :

Simulating sqlmap data dump for users table...
Data in users table:
ID | Username | Password
1  | admin    | pass123
2  | user1    | test456

Dans un scénario réel, sqlmap extrairait les données réelles de la base de données cible si une vulnérabilité est présente. Cette étape démontre comment des informations détaillées peuvent être récupérées, soulignant l'importance de sécuriser les applications web contre les attaques par injection SQL. Avec les données extraites, l'étape suivante se concentrera sur l'organisation et la sauvegarde de ces résultats.

Sauvegarde et organisation des résultats de sqlmap

Dans cette dernière étape, vous apprendrez comment sauvegarder et organiser les résultats de vos simulations sqlmap. La sauvegarde des résultats est une partie cruciale des tests d'intrusion car elle vous permet de documenter les découvertes, de les examiner ultérieurement ou de les partager dans un rapport de sécurité.

Pour les débutants, considérez cela comme la création d'un résumé de votre travail. Au lieu de perdre la sortie dans le terminal, vous la stockez dans des fichiers pour un accès facile. Dans un scénario réel, sqlmap peut enregistrer la sortie directement dans des fichiers, mais comme nous simulons le processus, vous consoliderez manuellement les résultats dans un seul fichier de rapport.

Combinons le contenu des fichiers créés lors des étapes précédentes dans un rapport complet nommé sqlmap_report.txt dans le répertoire /root. Exécutez les commandes suivantes pour créer ce rapport étape par étape :

echo "SQL Injection Test Report" > /root/sqlmap_report.txt
echo "=========================" >> /root/sqlmap_report.txt
echo "" >> /root/sqlmap_report.txt
echo "Target URL:" >> /root/sqlmap_report.txt
cat /root/target_url.txt >> /root/sqlmap_report.txt
echo "" >> /root/sqlmap_report.txt
echo "Database Enumeration Results:" >> /root/sqlmap_report.txt
cat /root/sqlmap_dbs.txt >> /root/sqlmap_report.txt
echo "" >> /root/sqlmap_report.txt
echo "Table Enumeration Results:" >> /root/sqlmap_report.txt
cat /root/sqlmap_tables.txt >> /root/sqlmap_report.txt
echo "" >> /root/sqlmap_report.txt
echo "Dumped Data from Users Table:" >> /root/sqlmap_report.txt
cat /root/sqlmap_users_data.txt >> /root/sqlmap_report.txt

Maintenant, vérifiez le contenu du fichier sqlmap_report.txt pour voir le rapport consolidé. Exécutez la commande suivante :

cat /root/sqlmap_report.txt

Sortie attendue (exemple) :

SQL Injection Test Report
=========================

Target URL:
http://example.com/page?id=1

Database Enumeration Results:
Simulating sqlmap database enumeration...
Available databases: [information_schema, test_db]

Table Enumeration Results:
Simulating sqlmap table enumeration for test_db...
Tables in test_db: [users, orders, products]

Dumped Data from Users Table:
Simulating sqlmap data dump for users table...
Data in users table:
ID | Username | Password
1  | admin    | pass123
2  | user1    | test456

Ce rapport combine toutes les découvertes simulées en un seul fichier, ce qui facilite l'examen des résultats de votre processus de test d'injection SQL. Cette étape souligne l'importance de la documentation dans les tests de sécurité, garantissant que les informations critiques sont conservées à des fins d'analyse ou de reporting.

Résumé

Dans ce laboratoire, vous avez appris à explorer les vulnérabilités d'injection SQL en utilisant Kali Linux et sqlmap dans un environnement VM sécurisé LabEx. Vous avez commencé par configurer l'environnement et installer sqlmap, puis vous êtes passé à la compréhension et à la détection des URL injectables. Grâce à des exercices simulés, vous avez énuméré les bases de données, vidé les données des tables et, enfin, enregistré et organisé les résultats dans un rapport complet. Ces étapes ont fourni une compréhension fondamentale des techniques manuelles et automatisées pour les tests de sécurité des applications web, vous préparant à un apprentissage plus approfondi en cybersécurité.