TP : Exploration des Vulnérabilités d'Injection SQL sous Debian
Pré-requis
Avant de commencer, assurez-vous que vous avez :
- Une machine Kali linux ou Debian installée et configurée.
- Une connexion internet pour télécharger les paquets nécessaires.
- Des privilèges sudo sur votre machine.
1️⃣ Étape 1 : Préparation de l'Environnement de Travail
1.1 Installation des Pré-requis
Sur Kali linux ou Debian, nous allons installer Apache, MySQL, PHP, et Git, qui sont nécessaires pour faire fonctionner l'application web vulnérable DVWA.
sudo apt update && sudo apt upgrade -y
sudo apt install apache2 mariadb-server php php-mysqli git -y
sudo systemctl start apache2
sudo systemctl start mariadb
sudo systemctl enable apache2
sudo systemctl enable mariadb
1.2 Téléchargement et Installation de DVWA
Objectif : Installer DVWA dans le répertoire du serveur web.
sudo git clone https://github.com/digininja/DVWA.git /var/www/html/dvwa
sudo chown -R www-data:www-data /var/www/html/dvwa
sudo mysql -u root -p
CREATE DATABASE dvwa;
CREATE USER 'dvwauser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwauser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
sudo nano /var/www/html/dvwa/config/config.inc.php
Modifiez les lignes suivantes avec vos informations :
$_DVWA[ 'db_user' ] = 'dvwauser';
$_DVWA[ 'db_password' ] = 'password';
1.3 Configuration Finale et Accès à DVWA
sudo systemctl restart apache2
Ouvrez un navigateur web et accédez à DVWA via http://localhost/dvwa/setup.php
. Suivez les instructions à l'écran pour terminer la configuration.
Résultat attendu : Vous devriez maintenant voir l'interface de connexion de DVWA.
2️⃣ Étape 2 : Identification des Vulnérabilités
2.1 Comprendre l'Injection SQL
Objectif : Expliquer les bases de l'injection SQL.
Une injection SQL se produit lorsque des données fournies par l'utilisateur sont directement insérées dans une requête SQL sans être filtrées correctement, ce qui permet à un attaquant de manipuler la requête.
Exemple :
SELECT * FROM users WHERE username = '$username' AND password = '$password';
2.2 Tester l'Injection SQL
Objectif : Identifier une vulnérabilité dans DVWA.
Instructions :
- Connectez-vous à DVWA en utilisant
admin
comme nom d'utilisateur et password
comme mot de passe par défaut.
- Dans le menu, sélectionnez "SQL Injection".
- Testez une injection simple en entrant
' OR '1'='1
dans le champ de saisie.
- Cliquez sur "Submit" et observez le résultat.
Résultat attendu : Vous devriez voir une liste d'utilisateurs de la base de données, prouvant que l'injection SQL a réussi.
3️⃣ Étape 3 : Exploitation des Vulnérabilités
3.1 Exploiter une Injection SQL
Objectif : Extraire des informations sensibles en utilisant une injection SQL.
' UNION SELECT null, user, password FROM users --
Cliquez sur "Submit" et observez le résultat.
Résultat attendu : Les noms d'utilisateur et les mots de passe de la base de données doivent être affichés.
3.2 Analyser l'Impact
Discussion en Classe :
- Les injections SQL permettent de contourner l'authentification, voler des informations, et même modifier des données sensibles.
- Discutez d'exemples réels où des injections SQL ont causé des pertes importantes.
4️⃣ Étape 4 : Discussion et Sécurisation
4.1 Prévention des Injections SQL
Objectif : Apprendre à sécuriser les applications contre les injections SQL.
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
Discutez de l'importance de valider et de filtrer toutes les entrées utilisateur.
4.2 Rédiger un Rapport
Objectif : Documenter les vulnérabilités découvertes et les solutions proposées.
Rédigez un rapport en incluant :
- Description de la vulnérabilité : Type d'injection SQL, comment elle a été exploitée.
- Impact : Quel type de données a été compromis ?
- Recommandations : Quelles mesures doivent être prises pour sécuriser l'application ?
Conclusion du TP
À la fin de ce TP, vous avez appris à configurer un environnement de test sous Debian, à identifier et exploiter des vulnérabilités d'injection SQL, et à proposer des solutions pour sécuriser les applications contre ces attaques.
Continuez à pratiquer ces concepts dans des environnements contrôlés pour renforcer vos compétences en sécurité offensive.