Le Directory Traversal


<< Les injections SQL


Définition
   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é. 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 :

Protection


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 -->

    <html>

    <head>
      <div align="center"><h1>Serious Hacking News !</h1></div>
      <title>Exploitation d'un directory transversal</title>
    </head>

    <body>

      <?
        if (@$_GET["article"] && file_exists("./".$_GET["article"]))
          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>";
      ?>

    </body>
    </html>


    <!-- Maintenant, 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 ques 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 :

Affichage du .htaccess


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

Affichage du .htpasswd


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. Un court article de recommandations de programmation Web sécurisée vous donnera plus d'informations sur les bonnes pratiques permettant d'éviter ce genre de failles.

<< Les injections SQL



41 Commentaires
Afficher tous


Raca 20/03/14 14:59
J'apprécie ce que vous faites merci infiniment

FrizN 27/02/14 06:13
Oui je ne me suis pas bien fait comprendre. La navigation via ../ directement dans l'URL ne vous permettra pas d'aller consulter des documents restreints. Par contre, on peut manipuler les opérations effectuées par l'interpréteur, PHP dans mon exemple.

Dans l'exemple, que je montre, c'est dans le paramètre "article", ensuite utilisé dans le code pour accéder à des fichiers que j'utilise cette technique, et non pas directement dans l'URL.

Anonyme 24/02/14 09:18
Bonjour,
j'ai essaye sur mon site en ligne.
Comme certains j'ai toujours :
Forbidden
You don't have permission to access /.htacess on this server.

bon vous dites : Apache empêche toujours l'accès aux fichiers .ht*, là il faut justement utiliser le directory traversal pour le lire

je donc donc rajouter :../admin/.htaccess
cad : monsite.fr../admin/.htaccess ?
ou : monsite.fr/page.php../admin/.htaccess .

Cela ne fonctionne pas, je ne comprends pas , pouvez vous être plus clair

FrizN 17/06/13 10:06
Quelqu'un qui a des bases de programmation en général comprendra. Si ce n'est pas le cas, apprendre PHP me paraît un bon début pour comprendre oui.




Commentaires désactivés.

Apprendre la base du hacking - Liens sécurité informatique/hacking - Contact

Copyright © Bases-Hacking 2007-2014. All rights reserved.