Le directory listing : une vulnérabilité ?
Par défaut, les serveurs web comme Apache, NGINX ou LiteSpeed permettent souvent l’affichage des fichiers d’un répertoire s’ils ne trouvent pas un fichier index à afficher. Ainsi, si un utilisateur tente d’accéder à un répertoire comme https://example.com/uploads/
, il pourrait voir une liste de fichiers accessibles publiquement.
Pourquoi cela pose-t-il problème ?
- Exposition de données sensibles :
- Des fichiers de sauvegarde, des fichiers de configuration ou même des images contenant des données confidentielles pourraient être accessibles.
- Par exemple, une sauvegarde de base de données dans un répertoire pourrait permettre à un attaquant de télécharger l’intégralité des données du site.
- Facilitation des attaques :
- Les attaquants peuvent naviguer dans les répertoires pour trouver des failles, comme des scripts vulnérables ou des fichiers obsolètes laissés par des développements ou configurations antérieures.
- Violation des bonnes pratiques de sécurité :
- Laisser des fichiers visibles dans les répertoires d’un site web est une faille connue et évitable, souvent considérée comme un manque d’attention à la sécurité.
Ce problème est-il spécifique à certains types de sites web ?
Non, le directory listing est un problème générique des serveurs web. Voici quelques cas où ce problème peut survenir :
- Applications web personnalisées :
- Les frameworks ou applications développées sur mesure peuvent également exposer leurs répertoires si le serveur n’est pas configuré correctement.
- CMS (systèmes de gestion de contenu) :
- Les CMS comme WordPress, Joomla, Drupal, ou Magento sont aussi vulnérables si le serveur web autorise l’indexation.
- Serveurs mal configurés :
- Un problème de configuration du serveur (Apache, NGINX, LiteSpeed, etc.) peut activer l’indexation, même en dehors d’une plateforme spécifique.
Comment détecter ce genre de problème ?
1. Test manuel avec un navigateur
- Accédez à des répertoires connus de la structure de votre site comme :
/uploads/
/assets/
/config/
- Si une liste de fichiers apparaît, le directory listing est activé.
2. Utilisation d’outils automatisés
Des outils de sécurité peuvent scanner votre site pour détecter ce type de vulnérabilité. Voici quelques-uns des plus efficaces :
- OWASP ZAP :
- ZAP (Zed Attack Proxy) est un outil gratuit et open-source qui permet d’identifier des problèmes comme le directory listing.
- Vous pouvez exécuter un scan passif pour vérifier si des répertoires sont listés.
- Fonctionnement :
- Configurez ZAP pour scanner votre site.
- Consultez les alertes générées (recherchez celles qui mentionnent le listing des répertoires).
- Nmap avec des scripts NSE :
- Nmap peut détecter l’indexation des répertoires si des scripts NSE spécifiques sont utilisés.
- Commande :
nmap --script http-enum -p 80,443 votre-site.com
- Burp Suite :
- Burp Suite peut effectuer des scans actifs pour détecter l’activation du directory listing.
- Nikto :
- Nikto est un scanner de serveur web qui peut détecter automatiquement des répertoires avec l’indexation activée.
3. Vérification des journaux du serveur
Si vous avez accès aux logs du serveur, cherchez des requêtes HTTP indiquant une navigation dans des répertoires, comme :
GET /uploads/ HTTP/1.1
4. Scanner avec des scripts personnalisés
Vous pouvez créer un script Python ou Bash qui teste plusieurs répertoires courants pour vérifier si une liste de fichiers est retournée.
Exemple avec Python :
import requests
url = "https://votre-site.com/uploads/"
response = requests.get(url)
if "Index of" in response.text:
print(f"Le listing de repertoire est actif sur {url}")
else:
print("Le listing de repertoire est inactif sur {url} .")
Comment désactiver le directory listing ?
Heureusement, il est facile de désactiver le listing des répertoires en modifiant la configuration du serveur.
1. Modifier le fichier .htaccess
(serveur Apache ou LiteSpeed)
Ajoutez la directive suivante dans le fichier .htaccess
à la racine de votre site ou dans le répertoire concerné :
# Désactiver le listing des répertoires
Options -Indexes
2. Ajouter un fichier index.html
vide
Créez un fichier index.html
vide dans les répertoires sensibles pour empêcher l’affichage des fichiers.
3. Modifier la configuration du serveur NGINX
Si votre site est hébergé sur un serveur NGINX, ajoutez cette directive dans le fichier de configuration du site :
location /uploads/ {
autoindex off;
}
Redémarrez NGINX après la modification :
sudo systemctl restart nginx
4. Vérifier les permissions des fichiers
- Répertoires : 750
- Fichiers : 640
Cela limite l’accès direct à vos fichiers et répertoires.
Résultat attendu après la correction
Une fois les changements appliqués, toute tentative d’accès à un répertoire comme /uploads/
devrait afficher une erreur 403 Forbidden ou un autre message indiquant que l’accès est bloqué.
Conclusion
Le directory listing peut sembler inoffensif, mais il représente une porte d’entrée importante pour des attaquants cherchant à exploiter les failles d’un site web. En suivant les étapes décrites dans cet article, vous pouvez sécuriser efficacement votre site contre ce type de vulnérabilité.
Pour détecter ces failles, des outils comme OWASP ZAP, Nmap, ou encore Burp Suite peuvent être intégrés dans vos processus de sécurité. La sécurité d’un site web n’est pas une option, c’est une priorité. Agissez dès maintenant pour protéger votre site !
Plus d’infos sur Wp-assitance – Le directory listing