609 tutoriels en ligne

Créa-blog

#100JoursPourCoder
Projet Créa-code

Ressources pour développeur web

Théme de la semaine : Google Analytics

Apprenez la cybersécurité et utiliser DVWA + Exercices

Temps de lecture estimé : 6 minutes
Accueil Sécurité Apprenez la cybersécurité et utiliser DVWA + Exercices

Maintenant que votre laboratoire DVWA est prêt et installer, que MAMP tourne à plein régime et que la base de données est connectée, vous voilà devant une interface un peu austère et vous vous demandez par où commencer. C’est ici que l’aventure commence. Vous allez passer de l’autre côté du miroir pour comprendre comment pensent ceux qui cherchent les failles à travers différents exercices. Bien utiliser DVWA, ce n’est pas seulement cliquer partout en espérant qu’une fenêtre surgisse.

C’est un véritable bac à sable qui va vous apprendre à déceler l’invisible dans le code d’une application web. Dans ce tutoriel de cybersécurité, nous allons décortiquer la logique de l’outil, explorer les mécanismes de défense et surtout, pratiquer jusqu’à ce que ces concepts deviennent des réflexes pour vous.

  • Développez une intuition de hacker éthique en apprenant à identifier les failles invisibles directement dans le code source des applications.
  • Maîtrisez les mécanismes de défense concrets pour transformer des scripts poreux en forteresses numériques imprenables.
  • Progressez en toute sécurité grâce à des mises en situation pratiques qui font le pont entre la théorie complexe et la réalité du terrain.

Nous allons transformer cette application vulnérable en votre meilleur professeur de sécurité informatique. Que vous souhaitiez devenir un expert en tests d’intrusion ou simplement protéger vos propres sites, vous allez découvrir que la théorie prend tout son sens quand on commence à « casser » les choses proprement.

Comprendre la philosophie du laboratoire

Avant de lancer votre première attaque, vous devez comprendre comment cet outil est structuré. Contrairement à un site classique, DVWA possède un bouton magique intitulé DVWA Security. C’est le cœur de votre apprentissage. Ce menu vous permet de choisir entre quatre niveaux de difficulté : Low, Medium, High et Impossible.

Niveau de difficulté de DVWA

Quand vous débutez, restez sur le niveau Low. À ce stade, le développeur n’a mis aucune protection. Le code est écrit de la manière la plus naïve possible, ce qui vous permet de voir exactement comment une faille fonctionne techniquement. Au fur et à mesure de votre progression, vous monterez les échelons. Le niveau Impossible est d’ailleurs fascinant car il vous montre le code tel qu’il devrait être écrit pour être totalement sécurisé.

L’objectif n’est pas de réussir l’exercice en deux minutes, mais de comparer les sources. Pour chaque vulnérabilité, vous avez un bouton View Source en bas à droite de la page. C’est votre manuel d’étude. Comparez le code du niveau facile avec celui du niveau élevé. C’est en observant la différence entre un script poreux et un script blindé que vous développerez votre intuition de hacker éthique.

Votre première mission : L’art de l’injection SQL

Pour bien comprendre comment utiliser DVWA, rien ne vaut la pratique sur l’une des failles les plus célèbres du web : l’injection SQL. Imaginez que la base de données soit un coffre-fort et que le formulaire sur votre écran soit la serrure. Normalement, vous devez utiliser la bonne clé pour entrer. L’injection consiste à glisser un outil dans la serrure pour forcer le coffre à vous donner tout son contenu, même ce qui ne vous appartient pas.

Rendez-vous sur l’onglet SQL Injection.

injection SQL avec DVWA

Vous voyez un champ qui vous demande un ID utilisateur. Si vous tapez 1, le système vous répond poliment avec le nom de l’administrateur.

Exercice d'injection SQL avec DVWA

C’est le comportement normal. Mais que se passe-t-il si vous envoyez une commande que le serveur n’attend pas ?

Pour tester la vulnérabilité, on utilise souvent un caractère spécial comme le guillemet simple (ou apostrophe). Si vous tapez juste un guillemet et que le site vous renvoie une erreur complexe mentionnant MySQL, c’est que la porte est grande ouverte.

Erreur SQL

Le serveur a essayé d’exécuter votre guillemet comme s’il s’agissait d’un ordre de programmation. Vous venez de trouver votre premier point d’entrée.

Procédure pas à pas pour une extraction de données

Passons maintenant à une manipulation concrète. Nous voulons forcer le site à nous afficher tous les utilisateurs de la base, et pas seulement celui dont on connaît l’ID. Pour cela, nous allons utiliser une logique mathématique implacable dans le champ de saisie.

Saisissez la commande suivante dans le champ ID : 

' OR '1'='1

Expliquons ce qui se passe dans la tête du serveur.

  1. Le premier guillemet ferme la commande prévue par le développeur.
  2. Le mot OR signifie « ou » en français.
  3. L’affirmation 1=1 est toujours vraie.

Le serveur reçoit donc l’ordre suivant : affiche les données si l’ID est vide OU SI 1 est égal à 1. Comme 1 est toujours égal à 1, le serveur ne se pose plus de question et vous livre l’intégralité de la liste des membres du site.

La requête originale (celle que le développeur a écrite dans le code PHP) ressemble généralement à ceci :

SELECT first_name, last_name FROM users WHERE user_id = '$id';

Ce qui se passe lors de l’injection

Lorsque vous tapez ' OR '1'='1 dans le champ de saisie, vous remplacez la variable $id. La requête finale exécutée par la base de données devient :

SELECT first_name, last_name FROM users WHERE user_id = '' OR '1'='1';

Pourquoi ça fonctionne ?

  • Le premier guillemet de votre saisie ferme celui de la requête originale (user_id = '').
  • Le OR ajoute une condition supplémentaire.
  • Comme '1'='1' est une affirmation toujours vraie, la condition WHERE devient vraie pour chaque ligne de la table.

Résultat : Le serveur ignore l’ID et vous renvoie la liste complète des utilisateurs.

MySQL ou SQL hacké !

C’est un moment grisant, n’est-ce pas ? On a l’impression d’avoir un super-pouvoir. Je me souviens d’un ami développeur qui, lors de sa première utilisation de DVWA, était resté bouche bée devant cette simplicité. Il m’a confié qu’il avait écrit des dizaines de sites de cette manière pendant des années, sans jamais réaliser qu’une simple petite phrase dans un formulaire pouvait ruiner la confidentialité de ses clients. C’est le fameux déclic que nous cherchons tous.

Exercice 1 : Le vol de cookies avec la faille XSS

Le premier exercice de ce guide concerne la faille XSS (Cross-Site Scripting). C’est une attaque qui cible les utilisateurs du site plutôt que le serveur lui-même. L’objectif est d’injecter un script malveillant dans une page pour qu’il s’exécute dans le navigateur d’une victime.

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?

Dans l’onglet XSS (Reflected), vous voyez un champ qui vous demande votre nom. Tapez un nom classique, il s’affiche à l’écran. Maintenant, essayez d’insérer du code JavaScript. Tapez précisément la ligne suivante : 

<script>alert('Pwned')</script>

Si une fenêtre surgit avec le message Pwned, vous avez réussi. Le serveur a pris votre code et l’a renvoyé tel quel au navigateur, qui l’a exécuté.

Exercice sur une faille XSS dans DVWA

La correction pour ce niveau de difficulté consiste à utiliser des fonctions PHP comme htmlspecialchars(). Cette fonction transforme les caractères spéciaux en texte inoffensif. Au lieu d’exécuter la balise script, le navigateur affichera simplement le texte brut à l’écran.

Exercice 2 : Briser un formulaire de connexion

Pour ce deuxième exercice DVWA, dirigez-vous vers la section Brute Force. Ici, vous faites face à un formulaire de connexion classique. Le but est de tester une multitude de combinaisons de mots de passe jusqu’à trouver la bonne. C’est une attaque par force brute.

En mode Low, il n’y a aucune limite de tentatives. Vous pouvez essayer mille fois, le serveur ne vous bloquera pas. Pour réussir cet exercice, vous pouvez utiliser un outil externe comme Hydra ou Burp Suite, mais pour débuter, essayez simplement les combinaisons les plus courantes comme admin / password ou admin / admin.

La correction technique ici ne se limite pas à un mot de passe complexe. Un bon développeur doit mettre en place un système de verrouillage après trois échecs ou ajouter un délai entre chaque tentative pour rendre l’attaque tellement lente qu’elle devient impossible à réaliser pour un humain ou une machine.

Exercice 3 : La manipulation de fichiers distants

Le troisième défi porte sur l’inclusion de fichiers (File Inclusion). Cette vulnérabilité permet à un attaquant de forcer le serveur à lire un fichier qu’il ne devrait pas montrer, comme le fichier des mots de passe du système ou des fichiers de configuration sensibles.

Observez l’URL de la page. Vous verrez souvent quelque chose comme page=include.php. L’exercice consiste à modifier cette partie de l’URL pour remonter dans l’arborescence du serveur. Essayez de remplacer include.php par ../../../../etc/passwd si vous êtes sur un système Linux (ou le chemin d’un fichier système sur votre installation MAMP).

La correction de cette faille repose sur une liste blanche. Le développeur doit coder de manière à ce que seules les pages explicitement autorisées puissent être appelées par l’URL. Si l’utilisateur demande autre chose, le serveur doit renvoyer une erreur.

Exercice 4 : L’exécution de commandes système

C’est sans doute l’une des failles les plus dangereuses. Dans la section Command Injection, le site vous propose de tester la connectivité d’une adresse IP via une commande « ping ». Le serveur prend votre saisie et la passe directement au terminal de l’ordinateur.

L’astuce consiste à utiliser un séparateur de commande comme le point-virgule ou le double « et » commercial. Tapez par exemple 127.0.0.1 && whoami. Le serveur va d’abord faire le ping, puis il va exécuter la commande whoami qui affiche le nom de l’utilisateur système.

Pour corriger cela, il ne faut jamais laisser un utilisateur interagir directement avec les commandes du système d’exploitation. Il est impératif de nettoyer la saisie pour supprimer tous les caractères spéciaux qui permettent d’enchaîner des ordres malveillants.

Exercice 5 : Le téléchargement de fichiers dangereux

Enfin, le dernier exercice concerne l’Upload de fichiers. Sur beaucoup de sites, on peut envoyer une photo de profil. Mais que se passe-t-il si vous envoyez un script PHP à la place d’une image ?

Préparez un petit fichier nommé test.php contenant simplement la ligne <?php phpinfo(); ?>. Essayez de l’envoyer via le formulaire de téléchargement. Si le site l’accepte, vous pouvez ensuite naviguer vers l’adresse du fichier et voir s’exécuter les informations de configuration de votre serveur. Vous avez maintenant le contrôle total.

La correction ici est triple. Il faut vérifier l’extension du fichier, vérifier son type MIME réel et, idéalement, renommer le fichier de façon aléatoire lors du stockage pour qu’un attaquant ne puisse pas deviner son emplacement exact sur le serveur.

Vers une nouvelle vision de la sécurité web

Utiliser DVWA n’est que la première étape d’un long voyage. Au travers de ces manipulations, vous avez sûrement ressenti cette petite montée d’adrénaline au moment où le système a fini par céder. C’est ce sentiment qui anime les chercheurs en sécurité du monde entier. Cependant, rappelez-vous toujours que ces techniques ne doivent être utilisées que dans des environnements contrôlés comme le vôtre.

La cybersécurité est un domaine qui évolue chaque jour, mais les bases que vous venez d’apprendre avec ces exercices restent immuables. En comprenant comment les erreurs de code se transforment en portes d’entrée pour les pirates, vous devenez un acteur plus responsable du web. Continuez à explorer, à tester les niveaux de difficulté supérieurs et à lire le code source. C’est là que réside le véritable secret de l’expertise.

N’oubliez jamais que derrière chaque faille se cache une opportunité de créer un internet plus sûr. Aujourd’hui, vous avez appris à briser les défenses, mais demain, grâce à cette expérience, vous saurez construire des forteresses numériques imprenables. La route est encore longue, mais vous avez déjà franchi l’étape la plus importante : celle de la curiosité et de la pratique concrète.