Installation de Mutillidae

Application Web Vulnérable - OWASP - BTS SIO SISR

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)
AVERTISSEMENT CRITIQUE - SÉCURITÉ

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
L'exploitation de ces vulnérabilités en dehors d'un cadre autorisé est ILLÉGALE.

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
Explications :
  • /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
Explications :
  • www-data : utilisateur et groupe utilisé par Apache sur Debian
  • chown -R : change le propriétaire de manière récursive
  • 755 : 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;
Détails des commandes SQL :
  • 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
Note : Le mot de passe utilisé ici est un exemple. Dans un contexte réel (même de test), utiliser un mot de passe robuste et le documenter dans le rapport de procédure.

É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
Configuration automatique :
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 :

  1. Aller dans "OWASP 2017" → "A7 - Cross Site Scripting (XSS)" → "Reflected (First Order)"
  2. Dans le champ de recherche, entrer : <script>alert('XSS')</script>
  3. Une popup JavaScript doit s'afficher (preuve de la vulnérabilité XSS)
Important : Ce test confirme que l'application est vulnérable comme prévu. C'est le comportement normal de Mutillidae.

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

ISOLATION RÉSEAU OBLIGATOIRE

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

Limites de cette procédure (niveau BTS SIO) :
  • 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