Qu’est ce que le Directory Browsing/Listing ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons parler du Directory Browsing (navigation dans les répertoires) aussi appelé Directory Listing (Listage de répertoire). Nous allons voir comment il peut être utilisé, pourquoi il peut être un danger et comment l'activer et le désactiver sous les serveurs web Apache et IIS.
II. Qu'est ce que c'est ?
Le Directory Browsing ou Listing est le fait de donner la possibilité aux visiteurs d'un site web de voir et d'afficher le contenu d'un répertoire en "brut". Habituellement, les serveurs web affichent des pages web (HTML, PHP, etc.), il est plus rare de trouver un répertoire affiché tel quel lorsque l'on visite un site web. Cela peut toutefois être utile, prenons par exemple les espaces web mettant à disposition des utilisateurs des fichiers à télécharger :
En quoi est-ce un danger ?
Il n'est pas toujours souhaitable de voir tous les fichiers d'un dossier web s'afficher aux yeux des visiteurs, je pense notamment à des fichiers comme les README.txt, les LICENCES.txt ou les fichiers de configuration (pensez par exemple à WordPress). Cela peut donner aux utilisateurs l'accès à des informations auxquelles ils n'ont normalement pas accès.
De plus, les moteurs de recherches et leur robots comme Google vont également avoir la possibilité de lister ces répertoires et vont alors indexer sur le net tout ce qui s'y trouve. C'est comme cela que l'utilisation des Google Dorks amène souvent à voir des fichiers qui n'ont pas à se trouver sur internet comme des fichiers de configuration ou même des informations personnelles que l'on scanne (fiche de paie, etc.).
L'importance des fichiers par défaut
Les fichiers par défaut sont les fichiers qui vont être affichés par défaut lorsqu'une requête pointe un dossier et que le client n'a pas demandé un fichier spécifique dans ce répertoire. Par exemple si un dossier contient un fichier "index.html" et qu'une requête pointe vers le dossier contenant ce dossier (pas le fichier en lui même). Ce fichier sera affiché plutôt que d'afficher le contenu du dossier. Dans le cas où le Directory browsing n'est pas bloqué et que le dossier ne contient pas un des fichiers par défaut indiqué dans la configuration, le dossier s'affichera.
III. Accepter / Interdire le Directory Browsing
Il faut savoir que par défaut, le Directory peut être autorisé ou interdit, cela dépend du serveur web que vous utilisez. Nous allons ici voir comment activer et désactiver le listage des répertoires sous IIS ainsi que sous Apache en précisant pour chacun quel est l'état par défaut.
A. Sous Windows IIS
Sous IIS, le Directory browsing est par défaut bloqué. Si on tente d'accéder à un dossier ne contenant pas de fichier par défaut, nous aurons ce message :
On voit donc bien que l'on ne peut pas lister le contenu d'un dossier. Étant donné qu'il est bloqué par défaut, nous allons voir comment aller modifier ce paramétrage. On se rend donc sur la configuration de notre serveur IIS et on développe l'arborescence dans le cadre de gauche pour aller faire un clic gauche sur le site voulu :
On va ensuite se rendre dans "Exploration de répertoire" puis dans le cadre de droite nous verrons cela :
Il nous reste donc à cliquer sur "Activer" pour autoriser le Directory Browsing. Dans le cadre central, nous pourrons contrôler les informations que nous souhaitons diffuser sur les fichiers listés. Pour à nouveau bloquer le Directory Browsing, il nous suffit de faire la même manipulation et cliquer sur "Désactiver".
- Changer les fichiers par défaut
Je vous oriente vers ce tutoriel pour modifier les fichiers par défaut sous IIS : Documents par défaut IIS
B. Sous Apache
Sous Apache, Le Directory Browsing est par défaut autorisé, si un répertoire web visé par un client ne contient pas de fichiers par défaut, son contenu sera donc affiché en clair. Pour l'interdire, il faut ajouter une option dans la configuration du site en question. Cela peut passer par la configuration d'apache (du site/virtualhost en question) ou dans un fichier ".htaccess" si nous n'avons pas accès à la configuration (dans le cadre d'un hébergement mutualisé par exemple).
Note : On voit d'ailleurs qu'Apache nous affiche même sa version et l'OS sur lequel il tourne, des informations qui peuvent être à cacher (cf Cacher la version de son serveur web Apache)
Si on se rend dans la configuration Apache (par exemple pour le site par défaut "/etc/apache/sites-enabled/000-default"), on voit les options qui sont présentes :
On remarque l'option "Indexes" qui est présente par défaut. Pour interdire le Directory Browsing, il suffit donc de l'enlever de la configuration en la supprimant. Il nous suffit ensuite de redémarrer Apache
service apache2 restart
Puis on pourra voir que le Directory Browsing est bien interdit :
- Changer les fichiers par défaut
Je vous oriente vers ce tutoriel pour modifier les fichiers par défaut sous Apache: Documents par défaut Apache
IV. Il reste des risques !
Bien que nous ayons interdit le Directory Browsing au niveau des serveurs web, il peut toujours y avoir un moyen de lister le contenu d'un répertoire. On peut par exemple imaginer une application de partage de fichier de type "Cloud" qui aurait également pour action de lister le contenu d'un répertoire selon les droits disponibles. Il existe également des fonctions PHP qui permettent de lister le contenu d'un répertoire (toujours dans la limite des droits dont l'utilisateur du serveur web dispose, mais tout de même).
Personnellement j’utilise Apaxy pour le listing http://adamwhitcroft.com/apaxy/
Les terminaux sont déjà assez monotones comme ça, autant rendre les listing un poil plus « joyeux » 🙂 De plus Apaxy se customise très facilement (css)