Le passage en production d'une application web omet parfois de supprimer certaines informations qui ne devraient pas être exposées (fichiers de configuration, commentaires de code, fichiers de backup, scripts de déploiement, fichiers ou répertoires cachés, etc…). Les vulnérabilités de type Insecure Code Management ou Gestion de code non sécurisée peuvent représenter un risque en matière de sécurité dans les applications web.
Voici une description des différents types de vulnérabilités associées à ce domaine :
Un utilisateur malveillant peut alors mettre à profit ces informations pour gagner des accès illégitimes sur l'application, le système qui l'héberge, ou même sur d'autres machines du système d'information.
Pour exploiter cette famille de vulnérabilité, il est nécessaire d’avoir une application qui expose des informations sensibles comme des identifiants de connexion.
Naviguer sur l'application ou utiliser un fuzzer afin d'identifier des ressources susceptibles de contenir des informations sensibles.
Rechercher des informations sensibles dans chaque ressource identifiée, et dans le cas d'une découverte de nouvelles ressources, réitérer la phase d'exploration.
L'exploitation réussie de ce type de vulnérabilité peut conduire à :
Les contre-mesures suivantes peuvent être mises en œuvre :
Les scénarios suivants peuvent être joués via l’exploitation de ce type de vulnérabilité :
Considérons le fichier “.htaccess” suivant, qui serait accessible en lecture :
<FilesMatch ".(bak|config|sql|fla|psd|ini|log|sh|inc|swp)$"> Order allow,deny Deny from all Satisfy All </FilesMatch>
Cette configuration permet de bloquer toutes les requêtes vers des fichiers portant les extensions listées dans la directive “FilesMatch”. L'absence, dans cette liste, de l'extension “\~” permet d'accéder à des fichiers tels que “backup.bak\~” ou “error.log\~”.
Or certains éditeurs de texte, en ouvrant un fichier, créent une copie locale avec l'extension “\~”. Si un administrateur ouvre un fichier sensible avec “vim”, un attaquant pourra alors accéder à son contenu.
L'attaquant identifie un répertoire listable sur le serveur Apache qui contient des fichiers sensibles. Cela signifie que le répertoire est configuré de manière à permettre à Apache d'afficher une liste des fichiers et des dossiers qu'il contient lorsque l'accès à un fichier spécifique est restreint. L'attaquant peut trouver le répertoire en explorant les différents endpoints de l'application ou en utilisant des outils de fuzzing.
Cette attaque survient lorsque le serveur Apache est mal configuré pour autoriser l'indexation des répertoires, ce qui permet à quiconque d'accéder et de lister le contenu complet d'un répertoire, y compris les fichiers sensibles.
Pour corriger cette vulnérabilité, il est nécessaire de désactiver l'indexation des répertoires dans la configuration d'Apache. Cela peut être réalisé en modifiant le fichier de configuration Apache (généralement httpd.conf ou apache2.conf) et en désactivant l'option “Indexes” pour les répertoires concernés.
Exemple de correction dans la configuration Apache en quelques étapes :
1 - Ouvrir le fichier de configuration Apache avec un éditeur de texte :
sudo nano /etc/apache2/apache2.conf
2 - Recherchez les directives qui définissent les options pour les répertoires concernés et supprimez ou commentez l'option “Indexes” :
<Directory /var/www/html/repo_sensible> Options -Indexes AllowOverride None Require all granted </Directory>
3 - Sauvegardez et fermez le fichier de configuration.
4 - Redémarrez Apache pour appliquer les modifications :
sudo service apache2 restart
Avec cette configuration, Apache n'autorisera plus l'indexation des répertoires spécifiés et empêchera l'accès et la liste des fichiers sensibles qui y sont stockés.
URL :