Rechercher

Tout savoir sur les tests d’intrusion web

L’objectif d’un test d’intrusion web est d’évaluer la sécurité d’une application en simulant des attaques.

Qu’est-ce qu’un test d’intrusion web ?

Il existe plusieurs méthodologies relatives aux tests d’intrusion web :  

  • Test en boîte noire : l’auditeur se place dans la peau d’un attaquant sur Internet et n’a aucune connaissance du système d’information ciblé, excepté les informations accessibles publiquement. C’est un audit réaliste, mais qui perd en exhaustivité, car il ne permet pas d’identifier les vulnérabilités présentes depuis un contexte authentifié. 
  • Test en boîte grise : l’auditeur dispose de comptes valides lui permettant d’accéder aux applications – obtenus lors du test en boîte noire ou mis à disposition par le mandataire de la prestation – afin d’accroître la surface d’attaque. Ce type d’audit permet de tester la défense en profondeur, avec la recherche de défauts de cloisonnement utilisateur ou l’élévation de privilèges. 
  • Test en boîte blanche : L’auditeur est en possession du code source de l’application. Bien que nécessitant plus de temps, cette méthodologie offre un nouvel angle d’attaque et permet d’identifier des vulnérabilités qui peuvent être complexes à découvrir lors d’un test d’intrusion. C’est une étape complémentaire permettant d’être plus exhaustif.   

Si lors d’un test en boîte noire la surface d’attaque peut paraître très réduite, il est souvent possible d’élargir cette dernière en réalisant une bonne reconnaissance. 

L’objectif de cet article est de présenter ces méthodes de reconnaissance, afin d’illustrer leur importance à travers un scénario d’exploitation réel, réalisé dans le cadre de l’un de nos tests d’intrusion.

Étendue de la surface d’attaque

La phase d’énumération est l’étape la plus importante permettant de dresser la surface d’attaque d’une application. Cette étape s’appuie sur divers procédés et outils, et génère un niveau d’interaction différent avec la cible, qu’il s’agisse d’une phase de reconnaissance passive, ou active. 

Nous retiendrons donc les sous-étapes suivantes d’une phase de reconnaissance classique :    

  • Énumération des services réseau (passive ou active) 
  • Énumération de domaines alternatifs (passive ou active)  
  • Énumération de l’arborescence des fichiers (passive ou active) 

Contrairement à la version passive, la reconnaissance active suppose une interaction (trafic réseau) avec la cible. Si cette dernière est plus efficace, elle présente l’inconvénient d’avertir le serveur qu’une tentative d’intrusion est en cours. 

Test d’intrusion web : méthodologie

Énumération de services réseau

 

Par l’utilisation d’un utilitaire d’énumération de ports réseau, il est courant d’identifier d’autres services en écoute sur un serveur. 

Cette phase s’accompagne généralement de la recherche de fuites d’informations techniques notamment dans les bannières de service. Identifier une technologie peut permettre d’étendre la surface d’attaque, voire d’avancer dans la compromission du serveur si des codes d’exploitation sont publiquement disponibles pour une version vulnérable d’un service exposé. 

Approche passive 

Le site Shodan met à disposition un moteur de recherche qui renvoie un certain nombre d’informations pour une IP donnée :  

  • bannières ; 
  • statut ouvert ou fermé sur les ports suivants : 554, 5060, 25, 22, 21, 23, 443, 8443, 8080, 80. 

En réalité, Shodan réalise en permanence des scans et agglomère ces informations au sein d’une grande base de données. L’attaquant récupère ainsi des informations sans être à l’initiative du scan de la cible. 

Approche passive 

Nmap est un outil qui teste l’ouverture de ports TCP ou UDP en tentant de s’y connecter.  

nmap –F -sV <Ip_serveur_cible>  

L’option –sV permet de récupérer la version des technologies utilisées.

Énumération de domaines alternatifs

Un serveur peut héberger plusieurs applications web différentes. Cela peut également être fait à l’aide de noms de domaines alternatifs (hôtes virtuels – vhosts), qui sont rattachés au même serveur.

Chaque vhost est indépendant et la présence d’un vhost vulnérable (défauts de configuration, présence de fichier de sauvegarde, injection, etc.) peut conduire à la compromission de l’ensemble des vhosts résidants sur le même serveur.

Il s’agit pour l’attaquant de trouver tous les noms de domaine correspondant à une même IP.

L’une des techniques couramment utilisées consiste à rechercher les domaines correspondants à l’adresse IP cible dans d’importantes bases de données accessibles publiquement. Certaines de ces bases sont, par exemple, mises à disposition par Rapid7 : opendata.rapid7.com/sonar.fdns_v2/.

Attention, l’archive décompressée pèse plus de 300 Go !

Pour constituer cette base de données, le projet Sonar se base sur des enregistrements DNS, sur des noms de domaines présents dans des pages HTTP ou des certificats SSL/TLS par exemple.

Lors de nos audits, l’exploitation de cette base de données a été automatisée par un outil développé en interne, qui fait également l’agrégation d’autres techniques actives et passives.

Approche passive

Avec les Google Dorks, nous pouvons énumérer quelques sous domaines associés à un domaine.

Par exemple, en tapant site:orange.fr, nous obtenons rapidement plusieurs sous domaines ayant pour suffixe orange.fr.

Approche active

Plusieurs outils open source intégrés à la distribution Kali permettent, par exemple, de faciliter cette étape :

Dnscan, sublist3r…

Énumération de l’arborescence de fichiers

Un serveur peut héberger plusieurs applications web différentes. Cela peut être fait au moyen d’arborescences de fichiers telles que :

Pour énumérer les fichiers et dossiers présents sur un serveur, ces outils d’énumération automatique testent l’existence de répertoires/fichiers fréquemment employés.

Il est aussi possible d’analyser le code JavaScript qui contient souvent des URL correspondant au parcours authentifié.

Cela peut notamment permettre d’identifier du code mort (présent pour des raisons historiques mais n’ayant plus d’utilité) qui a bien plus de chances d’être vulnérable.

Approche passive :

L’outil waybackmachine sur le site web.archive.org conserve le contenu public de nombreux sites Internet permet ainsi d’obtenir une première arborescence de fichier.

La représentation de l’arborescence de fichier est circulaire.

Approche active :

Plusieurs outils open source sont intégrés à la distribution Kali pour automatiser une partir de cette étape :

Dirbuster, dirb, wfuzz.

Enfin, l’obtention de comptes valides sur les services identifiés permet naturellement à l’attaquant d’étendre sa surface d’attaque en lui donnant accès aux fonctionnalités présentes depuis un contexte authentifié.

Obtention d’un compte valide

La manière la plus naturelle d’étendre la surface d’attaque en boîte noire est d’obtenir un compte valide pour être en mesure d’effectuer les tests authentifiés (en boîte grise).

Il existe de nombreux vecteurs permettant d’obtenir un accès authentifié :

  • Usurpation d’identité sur l’application grâce à des attaques de type CSRF ou XSS.
  • Énumération des comptes valides, puis usurpation d’un compte via une attaque par force brute.
  • Compromission de la base de données via une injection SQL pour récupérer les informations d’authentification.
  • Rejeu d’identifiants ayant fuités sur Internet. (Exemple : haveibeenpwned.com)

Test d’intrusion web : application

Dans le cadre d’un audit de site marchand réalisé, il a été possible de mettre en pratique ces notions pour prendre la main sur un serveur cible, depuis Internet.

La seule information communiquée était l’URL du site marchand (de la forme sitemarchand.com)

L’énumération de répertoires n’avait rien donné sur cette URL, le site vitrine ne présentait pas de défaut de configuration.

Cependant, en recherchant d’autres domaines associés à la même adresse IP, il a été découvert l’existence d’une autre application, pointant vers sitemarchandvhost.com

Récupération du code source de l’application

L’exploration de répertoires appliquée à sitemarchandvhost.com a mis en évidence l’accessibilité du dossier .git et d’une mire d’authentification WordPress. WordPress est un gestionnaire de contenu (CMS) qui permet de créer des blogs.

Concrètement, il était alors possible de récupérer l’intégralité des sources de l’application à l’aide de cet outil open source https://github.com/internetwache/GitTools.

Injection SQL

Ayant accès aux sources de l’application, il a été possible d’identifier une injection SQL en aveugle (boolean based blind) sur un plugin maison développé sans contrôle des entrées utilisateurs / sans la précaution d’usage.

Concrètement, cela a permis d’interagir avec la base de données. L’extraction des informations, pour ce type d’injection SQL, s’effectuait par un jeu de questions réponses – vraies ou fausses. Le schéma ci-dessous illustre comment il est possible de récupérer la première lettre du login du premier utilisateur.

Avec un script d’automatisation, il a été possible de récupérer l’ensemble des identifiants et des empreintes (hashs) des mots de passe des utilisateurs WordPress.

À l’aide de l’outil open source hashcat, il a été relativement facile de casser ces empreintes afin de retrouver le mot de passe en clair associé. Un ordinateur doté d’une bonne carte graphique est à même de réaliser plusieurs millions de tentatives par seconde sur le format d’empreinte employé.

hashcat –force -m 400 -a 3 hashes.txt

Accès au serveur

Ayant obtenu le mot de passe d’un utilisateur, il a été possible de s’authentifier sur l’application WordPress.

Cette interface permet de personnaliser des plugins ou thèmes PHP. Cette personnalisation peut être détournée pour introduire un script malveillant permettant l’exécution de commandes sur le système sous-jacent.

Lors de nos audits, nous ajoutons systématiquement un mot de passe robuste pour protéger cette porte dérobée et éviter ainsi de dégrader la sécurité globale de l’application auditée.

Intrusion web : quels impacts ?

Les tests réalisés lors de cet audit ont permis de dresser un risque global critique. En effet, par l’exploitation des diverses vulnérabilités présentées, un attaquant depuis Internet est à même de récupérer des informations personnelles sur les clients (nom, adresses, coordonnées bancaires, etc.), ou bien de changer les prix des articles, générant ainsi une perte nette sur le chiffre d’affaires et une altération de l’image de la société.

Enfin, la compromission du serveur hébergeant l’application offre une voie d’entrée privilégiée pour essayer de rebondir sur le réseau bureautique et ainsi réaliser une attaque aux impacts plus conséquents (attaque de type ransomware par exemple).

Grâce à ce retour d’expérience avec un tel scénario d’intrusion, nous pouvons saisir l’importance de réaliser une phase de reconnaissance minutieuse, avec ses multiples étapes.

Protéger son site web des cyberattaques : nos recommandations

De ce cas pratique, il ressort ces quelques recommandations :

Les domaines alternatifs présentent l’avantage d’être économiques et de centraliser la gestion de l’infrastructure. Il faut cependant redoubler d’efforts pour revoir la configuration de chacun d’entre eux afin qu’ils garantissent tous le même niveau de sécurité.

En particulier, la gestion des accès aux fichiers du serveur doit être stricte pour interdire l’accès à des fichiers sensibles et à d’autres applications qui n’ont pas vocation à être exposées sur Internet.

Ensuite, il est important d’effectuer des revues de code et des tests d’intrusion pour identifier les plugins vulnérables aux injections classiques (XSS, injections SQL), les portes dérobées et le code obsolète.

Enfin, un durcissement du serveur, aurait fortement complexifié l’attaque présentée.

Pour en savoir plus sur nos offres Ethical Hacking, cliquez ici.