Directory traversal   Version imprimable de cet article Enregistrer au format PDF

Le directory traversal (parfois appellé directory transversal) n’est pas réellement une faille spéciale mais une technique de navigation qui peut souvent être exploitée (souvent spécifique des langages et du serveur Web). En fait, on se sert des liens symboliques . et .. qui signifient respectivement "le dossier où je me trouve" et "le dossier parent de celui où je me trouve". Le but est d’écrire des URLs utilisant cette technique de navigation et ainsi accéder à du contenu inaccessible autrement, voire protégé.


par S3cur3D

Puisque il n’y a pas d’exploitation particulière liée à cette technique, nous ne pouvons pousser la théorie plus loin. En réalité, l’exploitation de cette technique intervient souvent dans l’exploitation d’autres failles. Nous allons cependant vous clarifier cette technique dans un exemple typique, les scripts de lecture de données prédéfinies (articles, images, etc..) qui peut facilement être détourné.

Un petit exemple

Nous avons repris l’exemple précédent de la faille de type injection SQL. Nous imaginons que le webmaster, s’étant aperçu de sa bourde, a décidé de tout simplement changer son système de protection : il utilise désormait les fichiers .ht* qui lui permettent de sécuriser parfaitement son site par mot de passe :

PNG - 57.3 ko
PNG - 62.5 ko

Intéressons nous maintenant à la page principale du site, composée pour l’instant de seulement deux pages : index.php, l’index du site, apparemment destiné à contenir des articles, et bienvenue.txt, le premier et pour l’instant unique article :

index.php - Bases Hacking News

  1. <html>
  2.  
  3. <head>
  4.  
  5. <div align="center"><h1>Serious Hacking News !</h1></div>
  6. <title>Exploitation d'un directory transversal</title>
  7.  
  8. </head>
  9.  
  10. <body>
  11.  
  12.  
  13. <?
  14. if (@$_GET["article"] && file_exists("./".$_GET["article"]))
  15. echo file_get_contents("./".$_GET["article"]); else echo "Veuillez sélectionner un article dans la liste ci-desous :<br><ul><li><a href=\"./?article=bienvenue.txt\">Bienvenue</a></li></ul>";
  16. ?>
  17.  
  18. </body>
  19. </html>

Télécharger

bienvenue.txt

Nous vous souhaitons la bienvenue sur notre site ! Ce système de news est actuellement en construction, mais nous allons bientôt vous présenter tout plein d'articles plus instructifs les uns que les autres !

Et maintenant, puisque le .htaccess est toujours à la racine des dossiers protégés, on peut essayer d’afficher en demandant l’article ../admin/.htaccess :

PNG - 55.4 ko

Nous avons donc maintenant le positionnement du .htpasswd, fichier des mots de passe, essayons donc l’article ../admin/doss_mdp/.htpasswd et observons :

PNG - 52.2 ko
PNG - 68.8 ko

Comme prévu, le contenu du fichier ayant les mots de passes nous est révélé.
Cet exemple illustre comment grâce au directory transversal nous avons pu afficher des fichiers qui sont en théorie inaccessibles (par défaut apache interdit d’afficher toutes les pages .ht*), ici nous demandons donc de lire le fichier en local, et ensuite de l’afficher à l’écran.
On imagine ce qui aurait pu se passer quand, comme dans certains sites, il est possible de poster ses propres articles, qui sont écrits dans un fichier du serveur avec comme nom de fichier le sujet de l’article. Il suffit alors de le nommer par exemple ../index.html pour "defacer" le site. Ceci dit, les CMS s’étant démocratisés, les vulnérabilités aussi graves deviennent de plus en plus rares (actuellement, on les voit surtout sur du développement spécifique).

Le dirctory traversal n’est pas une vulnérabilité exposant le système ou le client comme les includes ou les failles XSS mais elle permet une exploitation plus aisée d’autres vulnérabilités.

Documentations publiées dans cette rubrique Documentations publiées dans cette rubrique