Attaques sur les applications web
Prérequis et objectifs
1. Prérequis
Avant de plonger dans les mécanismes d’attaque sur les applications web, il est important de maîtriser quelques notions fondamentales. La sécurité informatique repose d’abord sur la compréhension des concepts clés tels que les vulnérabilités, les menaces et les différentes façons dont un système peut être compromis. Ces bases permettent de mieux appréhender les risques et de saisir l’intérêt des différentes techniques d’attaque et de défense.
Une connaissance minimale du HTML, le langage de balisage utilisé pour structurer les pages web, est également nécessaire. Savoir identifier les principales balises et comprendre comment une page est construite facilite grandement l’analyse du comportement d’une application web.
Dans le même esprit, il est utile de comprendre le rôle de JavaScript, un langage de script qui permet d’ajouter de l’interactivité et de la dynamique à une page. Il intervient directement dans le navigateur de l’utilisateur, ce qui en fait une cible privilégiée pour de nombreuses attaques.
Enfin, les bases de données sont au cœur de la majorité des applications web. Il faut donc savoir ce qu’est le langage SQL (Structured Query Language) et comprendre comment...
Introduction à la sécurité web
1. Contexte actuel
Les applications web nous entourent au quotidien. Elles sont utiles à des secteurs d’activités comme le commerce électronique, les réseaux sociaux, les services publics en ligne ou encore les applications d’entreprise.
La quantité de données sensibles sur Internet est gigantesque, faisant des applications web une cible pour les cybercriminels et hackers. Ces derniers exploitent des vulnérabilités pour accéder aux informations, perturber les services et/ou causer des dommages financiers.
Les vulnérabilités peuvent provenir de plusieurs sources. Elles peuvent par exemple être causées par des erreurs de développement. Par exemple : utilisation de paramètres par défaut ou l’absence de mises à jour des outils. Nous allons entrer un peu plus en détail dans ce chapitre afin que vous puissiez comprendre, en tant qu’ethical hacker, comment cela fonctionne.
Lors des examens CEH, il est souvent demandé d’identifier ces sources de vulnérabilités dans un contexte réel. Comprendre le fonctionnement général des notions de ce chapitre vous aidera grandement !
2. Statistiques
Afin de mieux comprendre l’ampleur des menaces, il faut noter qu’en 2024, 94 % des applications testées présentaient...
Vulnérabilités courantes (OWASP top 10)
1. Présentation de l’OWASP
L’OWASP (Open Web Application Security Project) est une organisation mondiale à but non lucratif qui est dédiée à l’amélioration de la sécurité des logiciels. Fondée en 2001, l’OWASP fournit des ressources comme des guides, des outils et des documentations accessibles à tous. Elle dispose d’une communauté composée de professionnels de la sécurité, de développeurs, de chercheurs et d’organisations collaborant ensemble pour partager des connaissances et de meilleures pratiques.
L’un des projets de l’OWASP est l’OWASP Top 10 qui répertorie les dix vulnérabilités les plus critiques affectant les applications web. Cette liste est mise à jour régulièrement pour montrer les évolutions des menaces et des technologies.
Il est utilisé par les développeurs, les entreprises et les auditeurs sécurité. Certaines normes de sécurité, comme le PCI DSS pour l’industrie des cartes de paiement, font référence au OWASP Top 10 pour définir les exigences de sécurité.
2. Détails des vulnérabilités
Voici les dix vulnérabilités du OWASP Top 10 2021. La prochaine version sortira en 2025. L’ordre des vulnérabilités pourrait changer, mais le fond restera le même. Pour chacune des vulnérabilités, vous aurez une description, l’impact potentiel et des exemples concrets pour vous projeter plus facilement et ainsi mieux retenir les notions.
a. A01:2021 - broken access control (contrôle d’accès défaillant)
Le contrôle d’accès vise à s’assurer que les utilisateurs authentifiés ne peuvent accéder qu’aux ressources pour lesquelles ils ont les accès appropriés. Un contrôle d’accès défaillant se produit lorsque ces restrictions ne sont pas correctement appliquées.
La méthodologie de l’attaque
-
modification des URL ou des identifiants pour accéder à des données non autorisées ;
-
escalade de privilèges, où un utilisateur standard obtient des droits administratifs...
Focus sur le Cross-Site Scripting (XSS)
1. Introduction au XSS
Le Cross-Site Scripting (XSS) est une vulnérabilité qui permet à un attaquant d’injecter un script malveillant dans des pages web vues par d’autres utilisateurs. Ce code est généralement du JavaScript, mais peut également inclure du HTML ou du VBScript.
Impacts potentiels d’une attaque par injection XSS :
-
Vol de cookies : se connecter au compte de l’utilisateur dont le cookie a été volé.
-
Défiguration de sites : changer l’apparence du site web à souhait.
-
Redirection vers des sites malveillants : plus de chance de faire télécharger un malware.
-
Exécution d’actions au nom de l’utilisateur : usurpation d’identité.
2. Types de XSS
Il existe principalement trois types de XSS. Voici un tableau comparatif pour aider à comprendre leurs différences :
|
Type de XSS |
Description |
Mécanisme |
Exemple de scénario |
|
XSS Réfléchi (Reflected XSS) |
Le script malveillant est injecté dans la requête HTTP et est renvoyé par le serveur dans la réponse immédiate. |
L’attaquant incite l’utilisateur à cliquer sur un lien spécialement conçu contenant le script malveillant. |
Un lien dans un e-mail de phishing ou sur un forum. |
|
XSS Stocké (Stored XSS) |
Le script... |
Outil d’analyse web (OWASP ZAP)
1. Présentation de l’outil
OWASP Zed Attack Proxy (ZAP) est un outil open source développé par l’OWASP. Il est conçu pour aider à trouver les failles de sécurité dans les applications web. C’est un outil gratuit avec un code source. Il est soutenu par une communauté active de développeurs et d’ingénieurs en cybersécurité. Grâce à leurs contributions, l’outil possède des mises à jour régulières.
Ses fonctionnalités principales incluent plusieurs outils. Il offre par exemple un proxy intercepteur. Ce proxy permet d’intercepter et de modifier les requêtes et réponses HTTP/S. Voici ci-dessous un schéma du fonctionnement du proxy ZAP :

Il possède un scanner de vulnérabilités : ce scanner détecte automatiquement les vulnérabilités connues. Un fuzzer est inclus : il teste les points d’entrée avec des données aléatoires ou malveillantes. Une API REST : elle permet l’automatisation et l’intégration avec d’autres outils. Enfin, il est possible d’ajouter des fonctionnalités grâce à des extensions.
Bien qu’il n’y ait pas de pratique pendant l’examen CEH, le fait de manipuler est le meilleur moyen de comprendre les différentes vulnérabilités !
2. Installation et configuration
a. Installation d’OWASP zap
Étape 1 : Téléchargement
Rendez-vous sur le site officiel d’OWASP zap : https://www.zaproxy.org/download/.
Téléchargez la version appropriée pour le système d’exploitation utilisé.
Étape 2 : Installation
-
Windows :
-
Exécutez le fichier .exe téléchargé....
Protection des applications web
1. Bonnes pratiques de développement
a. Contrôle et sécurisation des entrées utilisateur
L’une des principales causes des vulnérabilités dans les applications web est le manque de validation des données entrantes. Les entrées utilisateur (inputs) non contrôlées peuvent mener à des injections SQL, des attaques XSS et d’autres exploits.
Voici une liste de méthodes pour éviter les injections en règle générale :
Validation des données côté serveur et côté client
-
Validation côté client :
-
Vérifiez les formats de données (par exemple, adresses e-mail, numéros de téléphone).
-
Fournissez une expérience utilisateur améliorée en détectant les erreurs avant l’envoi au serveur.
-
Validation côté serveur :
-
Considérez toutes les entrées comme potentiellement malveillantes (zero trust).
-
Imposez des contrôles stricts sur les types, les formats et les plages de valeurs acceptables.
-
Utilisez des bibliothèques ou des frameworks qui facilitent la validation des données.
Assainissement des entrées
-
Échappement des caractères spéciaux :
-
Utilisez des fonctions d’échappement spécifiques au contexte (HTML, JavaScript, SQL, etc.).
-
Par exemple, pour prévenir les injections SQL, utilisez des requêtes préparées avec des paramètres.
-
Rejet des caractères ou des mots-clés interdits :
-
Éliminez ou encodez les caractères susceptibles d’être utilisés dans des attaques (par exemple, <, >, ’, ").
Limiter les droits d’accès aux bases de données
-
Accordez uniquement les permissions nécessaires aux comptes de service.
-
Évitez d’utiliser des comptes avec des privilèges élevés pour des opérations simples.
b. Gestion de l’authentification et des sessions
Il faut mettre en place des mécanismes de vérification de mots de passe pour être sûr que les utilisateurs choisissent des mots de passe difficiles à deviner ou à craquer.
Le stockage sécurisé des mots de passe est tout aussi important ! Il convient d’utiliser...
Travaux pratiques
1. Exploitation d’une vulnérabilité XSS sur une application vulnérable
Énoncé
Informations générales
Le but du TP est d’identifier et exploiter une vulnérabilité de type Cross-Site Scripting (XSS) sur une application web vulnérable dans un environnement contrôlé. Vous apprendrez à :
-
mettre en place un environnement de test sécurisé ;
-
découvrir et exploiter une faille XSS ;
-
comprendre les impacts potentiels de cette vulnérabilité ;
-
proposer des mesures pour sécuriser l’application.
Partie 1 - Mise en place de l’environnement de test
Première étape
Installez une machine virtuelle avec l’application web vulnérable DVWA (Damn Vulnerable Web Application). Suivez les instructions de la documentation.
Il faut que l’application vulnérable soit accessible via un navigateur web depuis votre machine hôte.
Deuxième étape
Configurez OWASP ZAP pour intercepter et analyser le trafic entre le navigateur et l’application.
Vérifiez le bon fonctionnement du proxy en interceptant une requête simple.
Partie 2 - Identification de la vulnérabilité XSS
Première étape
Accédez à l’application web vulnérable via le navigateur.
Naviguez vers une fonctionnalité susceptible d’être vulnérable, par exemple une zone de commentaire ou un champ de recherche.
Deuxième étape
Testez l’injection d’un script simple, par exemple <script>alert(’XSS’);</script>.
Observez si le script est exécuté dans le navigateur.
Partie...
Validation des acquis : questions/réponses
Si l’état de vos connaissances sur ce chapitre vous semble suffisant, répondez aux questions ci-après.
1. Questions
1 Pourquoi les applications web sont-elles devenues des cibles privilégiées par les pirates ?
2 Expliquez le rôle de l’OWASP Top 10 pour la sécurité des applications web.
3 Quels sont les impacts pour une organisation qui néglige la sécurité de ses applications web ?
4 Qu’est-ce qu’une vulnérabilité de type injection, et comment peut-elle être exploitée par un attaquant ?
5 Décrivez les différences entre les types de Cross-Site Scripting (XSS) : réfléchi, stocké et basé sur le DOM.
6 Quelles sont les conséquences de la vulnérabilité de contrôle d’accès défaillant (Broken Access Control) ?
7 Quels types de vulnérabilités peuvent être détectés lors d’un scan automatisé avec OWASP ZAP ?
8 Quelles sont les bonnes pratiques pour gérer l’authentification et les sessions dans une application web ?
9 Comment l’approche DevSecOps permet d’intégrer la sécurité dans le cycle de développement logiciel ?
10 Qu’est-ce qu’un pare-feu applicatif web (WAF), et comment contribue-t-il...