Les failles web

Rappels sur le Web

Il est indispensable de comprendre les mécanismes en jeu lors de la consultation de pages web pour se former à la sécurité des sites. Dans ce chapitre, les principales technologies du Web seront présentées de manière détaillée, accompagnées d’explications sur les processus qu’elles impliquent. Si vous pensez que vos connaissances sont déjà bien avancées dans ce domaine, vous pouvez passer directement à la section sur les failles web de ce chapitre.

Le Web, également connu sous le nom de World Wide Web (WWW), bien que son abréviation « Web » soit plus couramment utilisée aujourd’hui, constitue une technologie fondamentale de l’Internet. Son objectif initial était de diffuser des documents intégrant différents médias et présentant des liens interactifs entre eux, généralement sous forme d’hyperliens. Ces documents sont accessibles et visualisés au moyen d’un navigateur web.

Au fil des années, cette technologie a connu une évolution significative. Alors qu’il y a quelques années coexistaient de nombreuses normes et types de médias, les autorités de régulation ont depuis opéré un nettoyage, laissant subsister seulement quelques langages et normes essentiels :

  • HTML5...

Composition et consultation d’un site web

1. Composition d’un site web

Un site web représente un ensemble structuré et cohérent de données, intégrant divers types de médias tels que texte, images, sons et vidéos. La consultation de ces informations s’effectue au moyen d’un logiciel dénommé navigateur. Les données sont transmises au navigateur depuis un serveur en réponse à ses requêtes, établissant ainsi une relation client/serveur. Les protocoles prédominants utilisés pour faciliter l’échange d’informations entre ces deux systèmes informatiques sont le HTTP (Hypertext Transfer Protocol) et le HTTPS (Hypertext Transfer Protocol Secure). L’utilisation du protocole HTTPS permet de garantir la confidentialité et l’intégrité des données échangées grâce au chiffrement des communications. Toutefois, il convient de souligner que HTTPS ne protège pas contre les failles applicatives, telles que les vulnérabilités liées à la conception ou au développement du site, et ne constitue donc pas une garantie de sécurité absolue. Souvent, cela peut créer un faux sentiment de sécurité. Les langages les plus fréquemment employés pour décrire les pages web sont le HTML et le XHTML.

2. Consultation d’une page web

Entre la saisie de l’URL et l’affichage complet de la page, de nombreuses opérations s’effectuent entre le navigateur et le serveur, ainsi qu’au sein du navigateur. Il existe aussi plusieurs façons d’indiquer au navigateur la page souhaitée. Généralement, il s’agit d’un clic sur un lien trouvé dans un moteur de recherche, mais il est aussi possible d’indiquer l’URL (Uniform Resource Locator) directement dans la barre d’adresse du navigateur. Les utilisateurs non avertis confondent souvent la saisie d’une URL avec une recherche via un moteur. Cette confusion vient de la simplification de l’utilisation des navigateurs, qui ont ajouté des fonctionnalités à la barre d’adresse. Il y a quelques années, cette barre devait recevoir une URL valide pour accéder au contenu demandé et l’afficher....

Les failles web

1. Définition et importances

Une faille de sécurité sur un site web correspond à un comportement imprévu par le développeur, susceptible de déclencher un incident critique. Ces événements indésirables peuvent être classés en fonction de leur gravité et de leur impact. Parmi les incidents possibles, on peut citer la perte de confidentialité d’informations sensibles, telle que la récupération de données sur des clients ou des salariés, la perte de disponibilité du service entraînant l’impossibilité d’accéder au site web, la perte d’intégrité des données du site. Cette dernière peut notamment se manifester par un défaçage, qui consiste à modifier l’apparence ou le contenu d’un site web, souvent à des fins idéologiques, revendicatives ou par défi. D’autres scénarios peuvent également compromettre la sécurité globale du site.

Nous avons évoqué les sites web, mais de manière plus générale, parlons des applications web. Ces dernières années ont été marquées par une évolution significative du paysage et des technologies du Web. La puissance et les fonctionnalités des navigateurs ont atteint un tel niveau que des applications qui auraient autrefois nécessité un développement lourd en langages comme le C peuvent désormais être exécutées directement dans un navigateur. L’alternative actuelle de développer des applications pour qu’elles s’exécutent dans un navigateur web présente de nombreux avantages, notamment la possibilité de contourner des contraintes telles que le système d’exploitation utilisé. C’est pourquoi nous constatons une croissance notable des applications fonctionnant dans un navigateur, couvrant des domaines variés tels que la gestion des ressources humaines, la comptabilité, la gestion de projets, etc. Cette tendance accroît l’importance des failles potentielles qu’elles peuvent entraîner, soulignant la nécessité accrue de la sécurité dans le développement et le déploiement...

OWASP WSTG : un guide inestimable

Chaque professionnel spécialisé dans les tests d’intrusion développe sa propre méthodologie pour mener à bien les évaluations de sécurité. Cependant, ces pratiques individuelles s’inscrivent dans un cadre commun régissant l’ensemble de la communauté des experts en cybersécurité.

Le Web Security Testing Guide (WSTG), anciennement désigné sous le nom d’OWASP Testing Guide (OTG), s’affirme comme une référence incontournable dans le domaine des tests d’intrusion applicatifs. Son objectif principal est d’assister les développeurs et les professionnels de la sécurité dans la réalisation de tests sur les applications web. Le guide est accessible sur le site officiel d’OWASP : https://owasp.org/www-project-web-security-testing-guide/

Le framework du WSTG transcende la simple identification des points faibles en contribuant activement à tester les applications web en vue de créer des solutions fiables et sécurisées. Un test de sécurité pour une application web implique une analyse active visant à repérer les faiblesses, les défauts techniques ou les vulnérabilités. Chaque problème identifié est soumis au propriétaire du système, accompagné d’une évaluation...

Méthodologie de pentest

La réalisation d’un pentest web efficace nécessite une approche méthodique, allant au-delà des simples outils automatisés. Le processus peut être segmenté en plusieurs phases, chacune jouant un rôle crucial dans l’identification et la résolution des vulnérabilités. Cette méthodologie basée sur la méthode PTES, décrite ci-dessous, offre une perspective détaillée de chaque étape du processus.

1. Préparation et accord contractuel

Avant de plonger dans le test, l’élaboration d’un contrat clair entre le client et l’entreprise auditrice est impérative. Ce contrat doit définir les paramètres du test, y compris les objectifs spécifiques, les restrictions et les attentes. Cette étape permet de définir clairement le cadre d’intervention et de garantir une compréhension mutuelle des engagements. 

2. Reconnaissance et évaluation des fonctionnalités interactives

Cette étape consiste à collecter un maximum d’informations sur la cible, englobant l’identification des technologies utilisées, la compréhension de l’architecture du site web, les mécanismes de protection en place (en-tête HTTP, firewall applicatif), la recherche de configurations incorrectes et la cartographie complète de sa surface d’attaque. 

3. Scanning automatique et détection des vulnérabilités

Les outils automatisés, tels que ZAP, Burp Suite et d’autres scanners de sécurité sont déployés pour identifier rapidement les vulnérabilités potentielles. Cependant, il est essentiel de noter que ces outils peuvent générer des alertes erronées. Une analyse approfondie est nécessaire pour filtrer les résultats et identifier les véritables points faibles.

4. Tests manuels approfondis

Complémentaires aux scans automatiques, les tests manuels permettent d’explorer les vulnérabilités de manière plus approfondie. Les auditeurs peuvent examiner les résultats des scans, affiner les fausses alertes et détecter des vulnérabilités subtiles qui pourraient être négligées...

Présentation de quelques failles web

1. Préambule

Un seul chapitre ne suffit pas à couvrir l’intégralité du Top 10 de l’OWASP, d’autant que certaines catégories relèvent davantage de processus de développement que d’erreurs techniques. Nous allons présenter une étude de cas nommée UnSAFE Bank pour mettre en pratique notre méthodologie.

UnSAFE Bank est une suite bancaire virtuelle conçue pour l’apprentissage et le perfectionnement des compétences en cybersécurité. Cette plateforme offre une intégration des aspects de sécurité informatique ainsi que des scénarios de test variés. Elle permet de pratiquer l’évaluation de vulnérabilités et les tests de pénétration sur divers environnements, notamment le Web, les applications Android et iOS.

2. Mise en place du lab

Pour mettre en place l’environnement de test, il est impératif de satisfaire quelques prérequis, notamment en assurant que Docker et docker-compose sont installés sur le système. Par ailleurs, il est nécessaire de s’assurer qu’aucun service n’est en cours d’exécution sur le port 80 de la machine, en utilisant la commande sudo lsof -i :80, laquelle ne doit retourner aucun résultat.

Une fois l’installation et la vérification du port réalisées, il faut télécharger la dernière release du projet et le dézipper. Se rendre ensuite dans le répertoire Backend du projet puis lancer les conteneurs.

wget https://github.com/lucideus-repo/UnSAFE_Bank/archive/refs/
tags/v2.2.0.zip 
unzip v2.2.0.zip 
cd UnSAFE_Bank/Backend 
docker compose up -d 

Il faut ensuite vérifier l’état des différents conteneurs avant de passer à l’exploitation. Si le statut des quatre conteneurs est « up », vous pouvez passer à la suite.

docker ps --format "table {{.Names}}\t{{.Ports}}\t{{.Status}}" 
NAMES              PORTS                                   STATUS ...

S’entraîner à l’audit et détecter les différentes failles web

Bien que ce chapitre n’aborde pas l’ensemble des vulnérabilités existantes, plusieurs exemples représentatifs ont déjà été analysés. Pour approfondir ses compétences et s’entraîner, il existe des plateformes reconnues telles que https://portswigger.net, https://tryhackme.com ou https://hackthebox.eu. Ces sites offrent généralement des défis, ainsi que des modules de formation ou des ressources explicatives sur les différentes failles de sécurité.

Contre-mesures et conseils de sécurisation

Les applications web sont composées d’un ensemble de composants logiciels impliquant divers acteurs.

Une application web repose généralement sur deux ensembles :

  • des instructions permettant la communication entre le navigateur et le serveur (logique applicative),

  • une infrastructure qui exécute et sécurise ces traitements.

Pour garantir la sécurité des applications web, plusieurs niveaux doivent être pris en compte :

  • La conception de l’application, en veillant à intégrer des pratiques de sécurité dès la phase de développement.

  • L’intégrité du comportement de l’application du côté client, en s’assurant que les interactions avec l’utilisateur sont sécurisées et fiables.

  • La configuration et la sécurité de l’infrastructure comprenant les serveurs, les bases de données et autres composants système.

  • La détection proactive des vulnérabilités et la communication d’informations sur les menaces potentielles, afin de prévenir les attaques et de répondre efficacement aux incidents de sécurité.

Il est important de suivre l’évolution des menaces et des vulnérabilités et de mettre à jour régulièrement les mesures de sécurité en conséquence. En adoptant une approche proactive et réactive, les organisations peuvent minimiser les risques d’attaques et protéger leurs applications web de manière efficace.

1. Durcissement serveur

L’objectif du durcissement des systèmes est de réduire les risques de sécurité en éliminant les vecteurs d’attaque potentiels et en réduisant la surface d’attaque du système.

La segmentation du réseau est au cœur de la défense en profondeur pour contrer efficacement les attaques en construisant une architecture de réseau de services sécurisée et isolée au maximum en implémentant une architecture à trois couches (frontend, middleware, backend). Il est important de définir une politique de sécurité réseau qui décrit de la manière la plus concise et la plus simple possible...

Conclusion

L’objectif de ce chapitre était de faire prendre conscience des problèmes de sécurité que nous pouvons rencontrer sur le Web. Nous n’en avons donné qu’un petit aperçu. Comme nous l’avons évoqué, il existe tellement de situations, de langages, de serveurs, qu’il faudrait un livre entier pour tout aborder. Mais si, après la lecture de cette partie, vous avez à l’esprit qu’il ne faut jamais faire confiance aux données envoyées par le client et ne pas négliger la configuration du serveur et des composants logiciels, l’objectif est atteint.