Objectif
Déployer Mutillidae, une application web intentionnellement vulnérable développée par l'OWASP, afin de s'entraîner à détecter et exploiter des failles de sécurité web dans un environnement légal et contrôlé.
Cette plateforme permet d'étudier les vulnérabilités du TOP 10 OWASP : injection SQL, XSS, CSRF, etc.
Prérequis
- Stack LAMP installée et fonctionnelle (voir procédure 01-LAMP)
- Serveur Debian 11 / Ubuntu
- Git installé
- Accès root ou sudo
- Connexion réseau (pour cloner le dépôt GitHub)
- Réseau isolé (VLAN de test ou réseau local uniquement)
Mutillidae est une application VOLONTAIREMENT VULNÉRABLE.
- JAMAIS exposer sur Internet
- JAMAIS en production
- Uniquement en environnement de LAB isolé
- Uniquement à des fins pédagogiques (BTS SIO)
- Détruire l'environnement après les tests
Procédure Complète
Étape 1 : Vérification de la stack LAMP
Avant de commencer, s'assurer que Apache, PHP et MariaDB fonctionnent :
systemctl status apache2 systemctl status mariadb php -v
Étape 2 : Installation de Git
Git est nécessaire pour cloner le dépôt Mutillidae :
apt install git -y
Vérifier l'installation :
git --version
Étape 3 : Clonage de Mutillidae
Se placer dans le répertoire web et cloner le dépôt officiel :
cd /var/www/html git clone https://github.com/webpwnized/mutillidae.git
/var/www/html: répertoire racine par défaut d'Apache- Le clone crée un dossier
mutillidae/contenant tous les fichiers de l'application - Le dépôt GitHub officiel garantit l'obtention de la dernière version
Étape 4 : Configuration des permissions
Attribuer les permissions au serveur web Apache :
chown -R www-data:www-data /var/www/html/mutillidae chmod -R 755 /var/www/html/mutillidae
www-data: utilisateur et groupe utilisé par Apache sur Debianchown -R: change le propriétaire de manière récursive755: propriétaire = lecture/écriture/exécution, autres = lecture/exécution
Étape 5 : Création de la base de données
Se connecter à MariaDB en tant que root :
mysql -u root -p
Saisir le mot de passe root MySQL/MariaDB
Créer la base de données et l'utilisateur dédié :
CREATE DATABASE mutillidae; CREATE USER 'mutillidae'@'localhost' IDENTIFIED BY 'P@ssw0rd_Mutillidae2024'; GRANT ALL PRIVILEGES ON mutillidae.* TO 'mutillidae'@'localhost'; FLUSH PRIVILEGES; EXIT;
- CREATE DATABASE : crée la base nommée "mutillidae"
- CREATE USER : crée un utilisateur MySQL spécifique (bonnes pratiques : jamais utiliser root)
- GRANT ALL PRIVILEGES : donne tous les droits sur la base mutillidae à cet utilisateur
- FLUSH PRIVILEGES : applique immédiatement les changements de droits
Étape 6 : Configuration de Mutillidae
Éditer le fichier de configuration de la base de données :
nano /var/www/html/mutillidae/includes/database-config.inc
Vérifier/modifier les paramètres de connexion :
<?php $mMySQLDatabaseUsername = 'mutillidae'; $mMySQLDatabasePassword = 'P@ssw0rd_Mutillidae2024'; $mMySQLDatabaseDatabase = 'mutillidae'; $mMySQLDatabaseHost = 'localhost'; $mMySQLDatabasePort = 3306; ?>
Sauvegarder et quitter (Ctrl+O, Entrée, Ctrl+X)
Étape 7 : Modules PHP complémentaires
Installer les modules PHP nécessaires à Mutillidae :
apt install php-xml php-mbstring php-curl -y
Redémarrer Apache pour prendre en compte les nouveaux modules :
systemctl restart apache2
Étape 8 : Initialisation de la base de données
Accéder à Mutillidae via le navigateur :
http://ADRESSE_IP_SERVEUR/mutillidae
Lors du premier accès, Mutillidae détecte que la base est vide et propose un bouton "Setup/Reset Database".
Cliquer sur ce bouton pour initialiser automatiquement les tables et les données de test.
Alternative : Initialisation manuelle via script SQL (si nécessaire) :
cd /var/www/html/mutillidae/database mysql -u mutillidae -p mutillidae < mutillidae.sql
Vérifications
Test d'accès à l'application
http://ADRESSE_IP_SERVEUR/mutillidae
L'interface de Mutillidae doit s'afficher avec le menu de navigation
Vérification de la connexion à la base
Cliquer sur "Toggle Hints" en haut à droite puis sur "Toggle Database Online"
- Icône verte = connexion OK
- Icône rouge = problème de connexion à la base
Test d'une vulnérabilité simple (XSS)
Pour vérifier que l'application est fonctionnelle :
- Aller dans "OWASP 2017" → "A7 - Cross Site Scripting (XSS)" → "Reflected (First Order)"
- Dans le champ de recherche, entrer :
<script>alert('XSS')</script> - Une popup JavaScript doit s'afficher (preuve de la vulnérabilité XSS)
Vérification des logs Apache
tail -f /var/log/apache2/access.log tail -f /var/log/apache2/error.log
S'assurer qu'aucune erreur critique n'apparaît lors de la navigation
Sécurité et Limites
Configuration firewall pour restreindre l'accès :
# Bloquer tous les accès par défaut ufw default deny incoming # Autoriser uniquement le réseau local (exemple : 192.168.1.0/24) ufw allow from 192.168.1.0/24 to any port 80 # Autoriser SSH uniquement depuis le réseau local ufw allow from 192.168.1.0/24 to any port 22 # Activer le firewall ufw enable
Isolation via VirtualBox/VMware
- Utiliser un réseau "Host-Only" ou "Internal Network"
- NE PAS utiliser de mode "Bridged" ou "NAT" avec redirection de ports
- Créer un VLAN dédié aux tests de sécurité
Limites techniques
- Pas de certificat SSL/TLS (HTTPS) configuré
- Pas de WAF (Web Application Firewall)
- Pas de système de détection d'intrusion (IDS)
- Pas de segmentation réseau avancée
- Configuration minimale pour environnement de LAB uniquement
Bonnes pratiques
- Documentation : noter toutes les vulnérabilités testées et exploitées
- Destruction : supprimer l'environnement après les tests
- Légalité : jamais tester sur des systèmes non autorisés
- Apprentissage : comprendre chaque vulnérabilité pour mieux les contrer
Suppression de Mutillidae après les tests
rm -rf /var/www/html/mutillidae mysql -u root -p DROP DATABASE mutillidae; DROP USER 'mutillidae'@'localhost'; EXIT;
Vulnérabilités couvertes par Mutillidae
| Catégorie OWASP | Type de vulnérabilité |
|---|---|
| A1 - Injection | SQL Injection, Command Injection, LDAP Injection |
| A2 - Broken Authentication | Session fixation, Credential management |
| A3 - Sensitive Data Exposure | Informations sensibles en clair |
| A4 - XML External Entities (XXE) | Injection XML |
| A5 - Broken Access Control | Élévation de privilèges, IDOR |
| A6 - Security Misconfiguration | Erreurs de configuration |
| A7 - Cross-Site Scripting (XSS) | XSS réfléchi, stocké, DOM-based |
| A8 - Insecure Deserialization | Désérialisation non sécurisée |
| A9 - Using Components with Known Vulnerabilities | Librairies obsolètes |
| A10 - Insufficient Logging & Monitoring | Logs insuffisants |
Points Clés pour l'Oral BTS
- Mutillidae : application OWASP pour formation à la cybersécurité offensive
- Utilité pédagogique : comprendre les vulnérabilités pour mieux les corriger
- Jamais en production : environnement de LAB isolé uniquement
- TOP 10 OWASP : référentiel des 10 vulnérabilités web les plus critiques
- Pentesting : tests d'intrusion dans un cadre légal et autorisé
- Isolation réseau : firewall, VLAN, réseau Host-Only obligatoires
- Alternative similaire : DVWA (Damn Vulnerable Web Application)
Ressources complémentaires
- Site officiel OWASP : https://owasp.org
- Documentation Mutillidae : GitHub - webpwnized/mutillidae
- OWASP TOP 10 : https://owasp.org/www-project-top-ten/
- Formation gratuite : OWASP WebGoat