Outils¶
SQLmap¶
SQLmap est un outil open-source d'automatisation de la détection et de l'exploitation des vulnérabilités d'injection SQL. Il prend en charge de nombreux SGBD (MySQL, PostgreSQL, MSSQL, Oracle, SQLite…) et permet, une fois une injection confirmée, d'extraire des données, lire/écrire des fichiers ou même obtenir un shell sur le serveur.
Bonne pratique : Capturer la requête HTTP avec Burp Suite et la sauvegarder dans un fichier
request.txt. SQLmap peut la rejouer directement avec-r request.txt, ce qui évite de reconstituer les headers/cookies à la main et garantit une requête authentique.
Syntaxe de base¶
Options principales¶
| Option | Description |
|---|---|
-r <fichier> |
Requête HTTP depuis un fichier (Burp) |
-u <URL> |
URL cible (alternative à -r) |
-p <param> |
Paramètre à tester spécifiquement |
--level <1-5> |
Profondeur des tests (défaut : 1) |
--risk <1-3> |
Risque des payloads (défaut : 1) |
--technique <BEUSTQ> |
Forcer un type d'injection (voir ci-dessous) |
--dbms <dbms> |
Forcer le SGBD cible |
--batch |
Répondre automatiquement aux questions |
--threads <n> |
Nombre de threads parallèles |
--proxy <url> |
Proxy (ex : Burp Suite) |
--dbs |
Lister les bases de données |
--tables |
Lister les tables |
--columns |
Lister les colonnes |
--dump |
Extraire les données |
--os-shell |
Tenter d'obtenir un shell OS |
Lettres pour --technique :
| Lettre | Type |
|---|---|
B |
Boolean-based blind |
E |
Error-based |
U |
Union-based |
S |
Stacked queries |
T |
Time-based blind |
Q |
Inline queries |
Types d'injection¶
Error-Based
L'application retourne des messages d'erreur SQL visibles dans la réponse. Ces erreurs révèlent des informations sur la structure de la base. C'est la technique la plus directe : le résultat de la requête injectée remonte dans le corps de la réponse HTTP via l'erreur elle-même.
Union-Based
La clause UNION permet d'accoler une requête supplémentaire à la requête originale. Si le nombre de colonnes et les types de données correspondent, le résultat s'affiche directement dans la page. Prérequis : la page doit afficher au moins une valeur issue de la requête SQL.
Boolean-Based Blind
Aucun résultat ni erreur n'est visible — mais le comportement de la page change selon que la condition injectée est vraie ou fausse (ex : page normale vs page vide). SQLmap reconstruit les données bit par bit en posant des questions binaires à la base (AND 1=1, AND 1=2…). Lent mais très fiable.
Time-Based Blind
Similaire au boolean-based, mais sans différence visible dans la réponse : SQLmap induit des délais conditionnels (SLEEP(5) IF ...) et mesure le temps de réponse pour déduire si la condition est vraie ou fausse. Technique de dernier recours — très lente, augmenter --time-sec si le réseau est instable.
Stacked Queries
Certains SGBD (MSSQL, PostgreSQL, parfois MySQL selon le connecteur) permettent d'enchaîner plusieurs requêtes séparées par ;. Cela permet d'exécuter des commandes arbitraires au-delà du simple SELECT : INSERT, UPDATE, EXEC… Technique particulièrement puissante pour pivoter vers un RCE.
Enumération et extraction¶
Une fois l'injection confirmée, enchaîner les étapes :