• STATISTIQUES
  • Il y a eu un total de 0 membres et 36609 visiteurs sur le site dans les dernières 24h pour un total de 36 609 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges
    [FR] Microcontest
    Cryptographie: 7, Mathématiques: 8, Image Son Vidéo: 5, Intelligence artificielle: 3, Réseau: 2, Divers: 7, Phy...
    Challenges
    [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [EN] xda-developers
    Très bon site pour les gros bidouilleurs de smartphone de windows à androïd et de Apple jusqu'...
    Phreaking
    [EN] Security Traps
    Site de challenge qui prétend être construit non pas dans le but de parfaire vos connaissances, mais plutôt dan...
    Challenges
    [FR] NewbieContest
    Nous vous proposons une série de challenges regroupant plusieurs domaines allant de l'exploitation de fail...
    Hacking
    [EN] This is legal
    Basic: 10, Realistic: 5, Programming: 1, Bonus: 11, SQL: 2, Encryption: 6, Application: 4, User Contributed: 3
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




[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
if(isset($_GET["id"]))
{
    echo 
"membre n°".htmlentities($_GET["id"]);
}
?>
Décortiquons le contenu de cette page, on remarque qu’elle attend une requête de type GET et qu’elle l’utilise comme paramètre pour la fonction htmlentities(). On sait donc que la page affichera l’id passé dans l’URL donc si nous allons sur http://localhost/exercices/fullpathdir.php?id=13 la page nous renvoi : « membre n°13 ».

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 :
[Image: 1351971553-1.png]
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
session_start
();
?>
La function session_start() nous génère un cookie de session si nous n’en avons pas. Maintenant on va modifier notre cookie pour le vider, insérez ce JavaScript dans la barre d’URL :
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 :
[Image: 1351971553-2.png]
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\
Puis modifiez « display_errors » et mettez-le à « off » ainsi les erreurs ne seront plus affichées.
Sinon, vérifiez vos variables avec les fonction :
Code PHP :
is_array() 
Code PHP :
if(is_string($var)) ... 
Code PHP :
if(!is_array($var)) ... 
etc de façon à filtrer les types variables afin qu'on ne puisse les fausser.

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 Wink
03-11-2012, 21h54
Message : #1
Luxerails Hors ligne
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 :
Code PHP :
is_array() 

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 : #2
Swissky Absent
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 Wink
07-12-2012, 00h57
Message : #3
sakiir Hors ligne
[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 Smile
07-12-2012, 08h52
Message : #4
Shirobi Hors ligne
Bannis



Messages : 207
Sujets : 19
Points: 17
Inscription : Oct 2012
RE: [Faille Web] Full Path Disclosure
C'est le but d'un forum communautaire Wink