Indexation des répértoires
Définition de la vulnérabilité
L'indexation des répertoires n'est pas une vulnérabilité trop dangereuse, mais les gens qui ne rigolent pas avec la sécurité trouvent qu'elle peut fournir des informations cruciales aux pirates pour qu'ils puissent mieux préparer leur coup la prochaine fois.
L'indexation des répertoires (que certaines personnes appellent à tort
Crawling) est le fait de pousser le navigateur à afficher tout le contenu d'un site Web à la manière d'un explorateur de fichiers d'un système d'exploitation. Ce listing survient quand un utilisateur saisie l'URL d'un dossier qui ne contient pas un fichier par défaut (généralement nommé
index.html ou
index.php).
Par exemple si vous tappez l'adresse suivante:
https://www.chiny.me/images
Si la vulnérabilité était présente, alors vous verriez que le navigateur listera toutes les images de mon site Web.
Les dangers de cette vulnérabilité sont:
- Divulguer au pirate comment le site est structuré
- Afficher les fichiers cachés ou pages tunnels dont l'utilisateur n'est pas sensé connaitre l'existence.
- Donner une idées sur les règles de nommage des fichiers et dossiers, ce qui pourrait aider le pirate à deviner les noms des fichiers inclus dans un dossier protégé par .htaccess
Comment s'en protéger?
Au niveau du code PHP
Au niveau du code PHP il n'y a pas grand chose à faire sauf créer dans chaque dossier un fichier nommé
index.php et qui contient un code de redirection vers une page particulière (comme la page d'accueil).
Au niveau de la configuration du serveur
Utiliser l'option Indexes:
On peut empêcher le serveur d'envoyer au navigateur le listing d'un dossier particulier (ou tous les dossiers) en ajoutant l'option
Indexes dans l'un des fichiers suivants:
- Le fichier de configuration du serveur Web /etc/apache2/apache2.conf
- Le fichier de définition du vhost (par défaut /etc/apache2/sites-available/default ou /etc/apache2/sites-available/000-default.conf)
- Le fichier .htaccess que l'on déposera dans le dossier à sécuriser ou dans la racine du site pour généraliser ce comportement à tous les dossiers et sous-dossiers.
Il suffit donc d'ajouter la ligne suivante dans l'un de ces fichiers:
Options -Indexes
Restreindre l'accès au dossiers spéciaux:
Si un dossier particulier contient des informations confidentielles ou que vous ne voulez divulguer qu'à un certain nombre de gens alors il serait judicieux d'y restreindre l'accès en y plaçant le fichier
.htaccess (Il est possible d'avoir plusieurs fichiers .htaccess dans le même site Web).
Le fichier
.htaccess contiendra le code suivant:
AuthName "Accès limité"
AuthType Basic
AuthUserFile "/var/site/.htpasswd"
Require valid-user
Le fichier
.htpasswd contient la liste des utilisateurs autorisés avec leurs mots de passe. Il ressemble à ceci:
user1:pass1
user2:pass2
user3:pass3
Notez que les mots de passe sont hachés. Désormais, à chaque fois que l'on veuille accéder au dossier en question, le navigateur nous affiche une boite qui nous invite à saisir le login et le mot de passe pour y avoir accès.