Le directory listing

Auteur : palkeo
Créé le : le 06/09/2008 à 15:40
Visualisations : 2985
Ce tutoriel est composé des parties suivantes :

Introduction

Dans ce tutoriel, je vais vous parler d'un problème de sécurité, appelé « directory listing » ou encore « directory transversal ».
Ça n'est pas vraiment une faille, mais c'est un problème de sécurité très répandu,
qui permet d'afficher tous les fichiers d'un répertoire :/

Le directory listing, c'est quoi ?

Tout d'abord, rappelons la structure d'une URL :
http://www.monsite.com/images/bonjour.png
Cela veut dire que vous utilisez le protocole HTTP, que vous êtes sur www.monsite.com, dans le répertoire images, et que vous demandez le fichier bonjour.png.

Comme vous le savez sûrement, les répertoires doivent contenir un fichier index.html, ou index.php par exemple, qui sera envoyé si un client souhaite voir un répertoire.
Par exemple, si vous demandez cette URL :
http://www.monsite.com/images/
Le serveur de monsite.com va afficher le contenu du fichier index.html situé dans le répertoire images.

Et si il n'y a pas de fichier index.html ou index.php... dans le répertoire images ?

Justement, c'est là qu'il y a problème O_o
En effet, si aucun fichier d'index n'est trouvé, le serveur va afficher la liste de tous les fichiers du répertoire ! Ce qui peut poser de gros problèmes de fuites de données "sensibles".

Voici un exemple de directory listing typique :
http://www.securite-info.org/tutos/directory_transversal

Exploitation

Comme vous devez vous en douter, vous trouverez rarement des liens vers un répertoire sans fichier d'index :o)
Mais, vous pourrez trouver des liens vers des fichiers d'un répertoire.

Par exemple, si quelqu'un poste une image qui a pour URL :
http://www.monsite.fr/perso/avatar/avatar1.png
Il suffit de vous rendre sur http://www.monsite.fr/perso/avatar/, et avec un peu de chance, vous pouvez obtenir la liste des fichiers du répertoire, voire même remonter dans le répertoire perso et voir tout les fichiers personnels de l'auteur !

Ce problème de sécurité peut se révéler utile pour obtenir un maximum d'information sur un site Web.
Mine de rien, de très nombreux sites, même des sites qui font "pro", peuvent être vulnérables !

Protection

Abordons maintenant un point très important : la protection.

Je vais expliquer trois méthodes qui permettent d'éviter ce genre de problèmes :

Méthode 1 : index.html
Cette méthode est très simple, et consiste à mettre un fichier index.html contenant, par exemple, "Accès refusé" dans tous les répertoires ne possédant pas de fichiers d'index.

Méthode 2 : .htaccess
La seconde méthode, va permettre de désactiver l'indexation automatique sur tout votre site, ou seulement un répertoire.
Ainsi, si quelqu'un accède à un répertoire ne contenant pas d'index, il obtiendra une erreur 403.

Pour cela, il suffit de créer un fichier appelé .htaccess contenant :
Code : .htaccess
Options -Indexes
Et voilà.
Il suffit que vous mettiez ce fichier à la racine de votre site web, et tout votre site sera protégé.
Mettez le dans un répertoire, et ce répertoire, ainsi que tous ses sous-répertoires seront protégés ! :)

Méthode 3 : mod_autoindex
Cette méthode fonctionne uniquement sur les serveurs apache2, et la méthode donnée est pour un serveur sous GNU/Linux, et est valable uniquement si vous possédez un serveur dédié !
Cette méthode va permettre de désactiver complètement l'indexation automatique de votre serveur Web.
Pour cela, tapez, en root :
Console :
a2dismod autoindex
Puis redémarrez votre serveur Web...

Conclusion

Et voilà, vous savez désormais ce qu'est le directory transversal, et vous savez vous en protéger :)

Un conseil : essayez de tester cette faille dès que vous êtes dans un sous-répertoire d'un site web. A la fin, ça deviendra machinal, et vous vous rendrez compte du nombre de sites dans lequel on peut faire ça...