WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Les principales failles de sécurité des applications web actuelles, telles que recensées par l'OWASP: principes, parades et bonnes pratiques de développement

( Télécharger le fichier original )
par Guillaume HARRY
Conservatoire national des arts et métiers - Ingénieur 2012
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

4.8 Défaillance dans la restriction des accès à une URL

4.8.1 Principe

Cette faille permet à un utilisateur d'accéder à des fonctionnalités de l'application, voire même des fichiers et répertoires du serveur http sans y être habilité.

L'attaque par traversée de répertoires permet d'accéder à des fichiers du serveur http notamment ceux contenant les clés privées de chiffrement. Les applications vulnérables ouvrent des fichiers dont le nom est donné en paramètre de la requête http.

Une autre attaque consiste à deviner l'existence de fichiers ou de répertoires. En effet de nombreux outils disposent d'une interface d'administration dont l'adresse d'accès est du type « http://www.site_vulnerable.fr/admin/admin.php ». Dans ce cas même si l'utilisateur malintentionné n'y a pas accès au travers de l'application, il peut saisir directement l'adresse pour l'ouvrir. Les applications vulnérables ne demandent pas de s'authentifier avant de pouvoir l'utiliser, la seule protection étant qu'aucun lien n'est mis à disposition pour y accéder, ce qui n'est pas suffisant.

Une attaque équivalente consiste à ne pas spécifier de nom de fichier dans l'adresse, par exemple «  http://www.site_vulnerable.fr/admin/ ». Les serveurs http vulnérables afficheront le contenu du répertoire.

4.8.2 Exemples d'attaque

L'exemple suivant montre une portion de code vulnérable à l'attaque par traversée de chemin. L'application est construite pour inclure du texte en fonction de la langue du navigateur. Dans ce cas la langue est donnée en paramètre de la requête http, la commande PHP « include lang_nom_fichier.php » permet d`inclure le contenu du fichier concerné.

<?php $language="entete-en";if (isset($_GET['lang'])) {  $language=$_GET['lang'];}include ("/usr/local/webapp/template/" . $language . ".php")?>

Figure 21 - Script PHP vulnérable à l'attaque par traversée de chemin

Si l'attaquant envoie la requête avec le paramètre « lang=../../../../etc/passwd%00 », il aura accès au fichier des mots de passe du système et tentera de se connecter au serveur http avec un des comptes ainsi trouvé.

Dans cet exemple l'attaque par traversée de chemin est possible à cause de la faille Référence directe non sécurisée à un objet (voir paragraphe 3.4).

4.8.3 Parade et bonnes pratiques

Pour se protéger des défaillances dans la restriction des accès à une URL, il ne faut pas autoriser les caractères douteux tels que « / » et « \ ».

Pour se prémunir des attaques par traversée de chemin, il faut établir une liste de fichiers utilisables et refuser tout autre fichier. La correction à apporter à l'exemple ci-dessus est la suivante.

<?php $languages=array("entete-en","entete-fr","entete-es");$language=$languages[1];if (isset($_GET['lang'])) {  $tmp=$_GET['lang'];  if (array_search($tmp, $languages)) {    $language=$tmp;  }}include ("/usr/local/webapp/template/" . $language . ".php")?>

Figure 22 - Script PHP non vulnérable à l'attaque par traversée de chemin

Tous les répertoires doivent contenir un fichier index.html, ce qui évite de pouvoir accéder au répertoire lui-même. De plus, les serveurs http doivent être configurés pour ne pas permettre l'affichage du contenu des répertoires.

Pour éviter les accès à des fonctionnalités sans autorisation, ces dernières doivent être protégées en vérifiant que l'utilisateur a le droit de les utiliser. Ne pas afficher de lien pour y accéder n'est pas une protection suffisante.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"En amour, en art, en politique, il faut nous arranger pour que notre légèreté pèse lourd dans la balance."   Sacha Guitry