Dans ce chapitre, nous allons apprendre à identifier les éléments techniques qui constituent la cible (type du serveur et version, stack technique, etc.) et comment trouver ces éléments avec le proxy.
Observez la cible et cherchez des informations techniques
On revient sur notre métaphore et on continue notre braquage !
Jusque-là, vous n’avez rien fait de vraiment répréhensible. Vous vous êtes renseigné sur la banque : existe-t-il des locaux sur lequel le nom de la banque est affiché en gros ? Quels sont les points d’entrée du bâtiment principal ? Suspect pour qui regarde, mais pas forcément répréhensible.
Continuons dans cette lancée !
Dans le cadre de notre test d’intrusion, on va maintenant chercher à savoir ce qui constitue notre socle technique, en gros quelles sont les marques des fenêtres, des différentes portes que nous avons identifiées (sous-sol, accès entretien, porte principale, etc.).
Cela permettra de savoir s’il existe par défaut des éléments qui peuvent nous servir, comme un mot de passe par défaut, qui équivaudrait à la clé d’usine pour une serrure. Ou encore si ce socle possède des vulnérabilités techniques ou faiblesses qui n’auraient pas été détectées par notre scanneur de vulnérabilités (rappelez-vous, c’est toujours possible car les outils ne sont pas infaillibles).
Lors d'un test d’intrusion, plus vous connaissez votre cible, plus vous serez susceptible de comprendre où sont les vulnérabilités et ce qui est important pour le fonctionnement de la cible. La plupart des retours d’expérience que j’ai eus invitent à comprendre en détail l’application, parfois mieux que les développeurs eux-mêmes !
Connaître votre cible vous permettra notamment de :
mieux cibler les listes que vous allez utiliser pour votre reconnaissance ;
mieux cibler les types de vulnérabilités que vous allez rechercher sur l’application ;
identifier les CVE que vous allez vouloir exploiter ;
chercher s’il existe des configurations par défaut ;
savoir s’il existe des mots de passe par défaut ;
rechercher des articles de blog qui traitent de la sécurité des technologies cibles.
Collectez les informations techniques disponibles
Comment faire pour collecter les informations techniques ?
Il y a plusieurs méthodes pour récupérer les informations concernant le type de la technologie et la version, que ce soit pour la partie cliente (JavaScript, CSS) ou la partie serveur.
Le plus simple, c’est de regarder le code source de la page et notamment des fichiers JavaScript/CSS. Rien que par le nom, vous saurez quelle technologie est utilisée et parfois même, quelle version est utilisée.
Ensuite, des informations sont parfois données par des pages d’erreur, comme celle qui affiche "Page non trouvée" ou "Cette page n'existe pas" que vous avez sûrement déjà rencontrée :
Cette page donne par exemple le type et la version du serveur web utilisé : Apache 2.4.10.
Sachez également que l’entête HTTP “Server”, dans sa configuration par défaut, donne également des informations de ce type, notamment le type du serveur et parfois sa version :
Enfin, via le calcul de condensat de fichiers ("hash", en anglais) ou encore la présence de fichiers spécifiques, vous pouvez détecter le type et la version de tout ou partie de la pile technique utilisée.
La collecte manuelle de toutes ces informations peut être un peu fastidieuse. Comme bien souvent, il existe différents outils pour accélérer la reconnaissance. Ces outils peuvent être :
soit intégrés à Burp, comme l’extension “Software Version Reporter” (version pro nécessaire) ;
ou encore des extensions de navigateur comme Wappalyzer ou WhatRuns.
En résumé
Chercher à connaître les technologies qui composent l’infrastructure et l’application permet de parfaire sa connaissance de la cible.
Bien connaître sa cible permet de mieux sélectionner les listes, exploits et recherches que nous allons faire sur le sujet. Les informations sur le socle se collectent de plusieurs manières : entêtes HTTP, pages d’erreur, code source, fichiers spécifiques, etc.
Des outils très puissants permettent en un clic de récupérer ces informations !
Dans le prochain chapitre, nous allons partir à la recherche de pages “cachées”, au moins pour les utilisateurs standard.