[Faille Web] Full Path Disclosure
|
03-11-2012, 21h43
(Modification du message : 03-11-2012, 22h21 par Swissky.)
Message : #1
|
|
Swissky
Bon membre Messages : 523 Sujets : 32 Points: 96 Inscription : Apr 2012 |
[Faille Web] Full Path Disclosure
La faille Full Path Disclosure 1) Définition Le « Full Path Disclosure » en français la divulgation du chemin complet est une faille très répandue car de nombreux développeurs ne sont pas sensibilisés à celle-ci mais parce qu’elle est inoffensive. Cependant si elle est utilisée en complément d’autres attaques comme les injections SQL ou les LFI, elle devient critique. Vous l’avez compris, cette faille affiche le chemin d’accès complet au script vulnérable tout en indiquant son type de vulnérabilité : Warning: opendir(Array): failed to open dir: No such file or directory in C:\wamp\www\exercice\fullpathdir.php on line 5 Dans l’exemple précédent, la faille se situe au niveau du fichier « fullpathdir.php », plus exactement à la ligne 5 où est appelée la fonction « opendir() ». 2) Exploitation Cette faille se met en évidence en insérant un caractère inattendue dans un paramètre d’une fonction, il existe donc de nombreuses manières d’utiliser cette faille. Les utilisations les plus courantes sont dans les fonctions htmlentities() , include(), opendir(). On va donc tester cette faille en local avec cette page PHP : Code PHP : <?php A) Insertion d’un « Array » vide La page attend donc des nombres soit une variable numérique aussi on va modifier l’URL afin d’envoyer un autre type de variable comme tableau, « Array » en anglais. Essayons cette URL : http://localhost/exercices/fullpathdir.php?id[]=13 En PHP, les crochets « [] » permettent de définir un tableau de valeurs. La fonction htmlentities() reçoit donc le tableau de valeur en paramètre or elle attend une variable de type string. Une erreur s’affiche : Cette erreur nous indique le nom de la fonction qui n’a pas réussie à comprendre notre requête ainsi que son emplacement sur le serveur. B) L’injection de session illégale Une manière de mettre en évidence cette faille revient à modifier le cookie de session : PHPSESSID. On ajoute un caractère non valide dans ce cookie, généralement on renvoi un cookie vide En effet un cookie de session doit être unique il permet au serveur de vous identifier aussi lorsqu’il récupère un cookie vide le serveur ne peut plus vous identifier et envoie un message d’erreur. La fonction session_start() est donc vulnérable. Code PHP : <?php javascript: void (document.cookie = "PHPSESSID ="); Il a pour effet de créer un nouveau cookie du nom de PHPSESSID ce qui écrasera l’ancien. Lorsqu’on rafraîchit la page, on obtient l’erreur : On obtient encore une fois le chemin complet d’accès au script vulnérable. Notez que cette technique fonctionne aussi lorsqu’on modifie le cookie de session pour que son contenu fasse plus de 129 bytes : javascript:void(document.cookie='PHPSESSID=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); 3) Sécurisation Vous pouvez protéger votre serveur contre cette faille de différentes façons en fonction de vos droits : Si vous avez accès à tous le serveur, par exemple dans le cas d’un serveur dédié, recherchez le fichier php.ini qui se trouve dans le répertoire ci-dessous : Code : C:\wamp\bin\php\php5.3.8\ Sinon, vérifiez vos variables avec les fonction : Code PHP : is_array() Code PHP : if(is_string($var)) ... Code PHP : if(!is_array($var)) ... Cependant il arrive que l’on oublie de filtrer certaines variables aussi il est conseillé de désactiver l’affichage des erreurs avec la fonction : Code PHP : error_reporting(0); Copyright® Swissky Toute reproduction même partielle est interdite. Merci à Luxerails pour sa relecture et ses précisions sur la sécurisation |
|
03-11-2012, 21h54
Message : #2
|
|
Luxerails
Bon membre Messages : 267 Sujets : 6 Points: 67 Inscription : Aug 2011 |
RE: [Faille Web] Full Path Disclosure
Pas mal. Par contre il y a pas un petit problème ? La deuxième image parlant de l'affichage de l'erreur avec les sessions est la même que celle du dessus (sur htmlentities).
Citation :Sinon, vérifiez vos variables avec la fonction : Je pense que c'est mieux d'utiliser par exemple : Code PHP : if(is_string($var)) ... au lieu de Code PHP : if(!is_array($var)) ... (ou is_numeric() par exemple, pour les valeurs numériques) |
|
03-11-2012, 22h19
(Modification du message : 08-11-2012, 17h29 par Swissky.)
Message : #3
|
|
Swissky
Bon membre Messages : 523 Sujets : 32 Points: 96 Inscription : Apr 2012 |
RE: [Faille Web] Full Path Disclosure
Merci d'avoir vu cette erreur ^^"
Corrigée , et j'ajoute ton truc |
|
07-12-2012, 00h57
Message : #4
|
|
sakiir
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de Messages : 411 Sujets : 51 Points: 34 Inscription : Sep 2012 |
RE: [Faille Web] Full Path Disclosure
merci j'en apprend tout les jours avec vous
|
|
07-12-2012, 08h52
Message : #5
|
|
Bannis Messages : 207 Sujets : 19 Points: 17 Inscription : Oct 2012 |
RE: [Faille Web] Full Path Disclosure
C'est le but d'un forum communautaire
|
|
« Sujet précédent | Sujet suivant »
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
Comment exploiter une faille SQL Injection | CyberSee | 33 | 3,434 |
22-09-2015, 21h53 Dernier message: CyberSee |
|
Comment est exploitée une faille XSS | CyberSee | 37 | 3,355 |
01-09-2015, 16h07 Dernier message: CyberSee |
|
[Tuto]Faille CRLF | OverDreams | 15 | 1,209 |
18-06-2013, 12h33 Dernier message: Hypnoze57 |
|
[Faille WEB] LFI | Swissky | 10 | 839 |
25-02-2013, 22h04 Dernier message: InstinctHack |
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)