Path Traversal

Qu’est-ce qu’une faille Path Traversal/ Directory Traversal?

L’attaque Path Traversal, ou Directory Traversal est une attaque affectant le coté serveur des applications web.

Bien que n’étant pas clairement énoncé dans le Top 10 de l’OWASP, la vulnérabilité peut amener à une faille présente dans ce top : La Broken Access Control (A5:2017-Broken Access Control | OWASP)

Cette dernière donne la possibilité à un utilisateur d’avoir accès à des données ou des fonctionnalités en dehors de son champ d’actions, par exemple, le fait qu’un utilisateur lambda puisse modifier le profil de n’importe quel autre utilisateur alors que cette action est censée être réservée aux administrateurs.

 

La vulnérabilité Path Traversal / Directory Traversal consiste à manipuler des paramètres HTTP, le plus souvent en utilisant GET. La requête GET permet de modifier l’url, dans le but d’inclure et d’avoir des dossiers ou des fichiers sensibles dans une page web.

Conséquences d’une attaque Path Traversal / Directory Traversal (Directory path traversal attack)

La faille Path Traversal possède quelques conséquences.

  • Exfiltration de données : Si l’attaquant réussi à inclure des dossiers contenant des fichiers sensibles il pourra alors voir leur nom et les afficher.
  • Accès à des fonctionnalités restreintes : Si l’attaquant parvient, par exemple grâce à une requête GET ou POST, à inclure une page administrateur il aura alors la possibilité d’effectuer des actions qui ne sont normalement pas possibles à son niveau de privilège.

 

Cette faille est particulière car elle peut aussi amener à l’exploitation d’autres failles :

  • Récupération du code source du site : Dans le cas d’un serveur tournant avec PHP, l’attaquant peut inclure le code source des différentes pages et analyser ces dernières à la recherche d’autre failles.
  • Analyse du serveur : En incluant des fichiers tel que /etc/passwd, l’attaquant a la possibilité de comprendre comment le serveur est configuré.

Les conséquences d’une faille Path Traversal / Directory Traversal dépendent énormément de la configuration du serveur.

Comment exploiter une vulnérabilité Path Traversal ?

1.     Utilisation normale d’une galerie de photo en ligne

Prenons un site qui permet de télécharger des images en leur attribuant une catégorie et de les visualiser.

Loris, notre attaquant va pouvoir sélectionner une image et lui attribuer une catégorie pour ensuite l’envoyer au serveur.

Loris va ensuite cliquer sur la catégorie « Sport » qui correspond à l’image qu’il a ajouté

L’url de la page devient alors

http://www.image-online.com?path=sport

Les différentes images de cette catégorie vont s’afficher

2.     Exemple d'une injection dans la variable

Loris va maintenant aller sur page « Sport » et modifier l’url en changeant « sport » de la variable path par « ./ »

« ./ » indique que l’on reste dans le même dossier

http://www.image-online.com?path=./

La page qui s’affiche alors montre les différentes catégories existantes pour une image :

Loris sait maintenant qu’il se trouve au dossier racine des différentes catégories.

Il a alors une bonne compréhension de fonctionnement du serveur.

3.     Exploitation de la faille

L’objectif de Loris est maintenant de trouver comment exploiter ce Path Traversal pour effectuer des actions en tant qu’administrateur.
L’arborescence qu’il connait actuellement est la suivante :

En reprenant seulement la variable path et en changeant sa valeur par ../, qui indique un retour en arrière dans l’arborescence, Loris se retrouve avec différents noms de fichier et de dossiers.

On peut voir un dossier « Users », en remplaçant « ../ » par « ../Users » Loris se retrouve avec une liste de fichiers qui semble relative aux différents utilisateurs :

En changeant l’url de la page par http://www.image-online.com/Users/Paul.txt , Loris récupère toute les informations stockées en dur, dont son mot de passe.

Il n’a plus qu’à s’authentifier avec ces informations pour avoir un compte admin.

Recommandations de l’OWASP dans la prévention des failles Path Traversal

L’Open Web Application Security Project (OWASP) fournit un guide pour se prémunir des vulnérabilités Path Traversal, nous allons résumer ici les différentes options qui s’offrent à un développeur.

  • Evitez d’utiliser les entrées utilisateurs pour inclure des fichiers locaux : Cela permet d’empêcher un utilisateur de pouvoir tester une faille Path Traversal.
  • Accepter uniquement des valeurs définies par avance : Cela peut être exécuté par une série de condition dans le code du coté serveur.
  • Dans le cas échéant il est nécessaire d’échapper les entrées utilisateurs afin d’éviter des patterns de failles Path Traversal (tel que «  ../ » par exemple).

R&S®Cloud Protector vs Path Traversal

Afin d’empêcher l’exploitation des vulnérabilités Path Traversal {traversal vulnerability}, R&S®Cloud Protector possède une méthode efficace :

  • Détection de pattern malicieux : R&S®Cloud Protector détecte automatiquement les patterns utilisés lors des path traversal afin de bloquer et rediriger les requêtes malveillantes
  • Déchiffrage de multiples enconding : R&S®Cloud Protector peut transformer les caractères encodés afin de les vérifier

Avec les correspondances ci-dessus on peut déterminer que %252e%252e%252f va donner %2e%2e%2f puis ../

Demandez vos 14 jours de démo gratuite

Cela ne prend que 60 secondes pour protéger vos sites et applications web.
Qu’attendez-vous pour essayer ?