本文最后更新于 2018年01月16日 20:48 可能会因为没有更新而失效。如已失效或需要修正,请留言!

2017年9月26日凌晨2点某朋友致电告诉我博客被黑

我默默地看了一眼原来是我们的模板作者(李明浩)来过

当时博客体现的是模板、文章被删(如下)

然而我并没有在意,默默地进入景安空间把域名绑定删除.

因为这几天比较忙,昨天开始着手分析。

首先upyun的日志体现在26日0:00至2:00总共有两个iP进行了大量敏感操作

嗯那就差不多可以确定是模板作者本人操作了

我把这个时间段的日志全部下载下来分析 发现有将近1w条记录

大部分都是漏洞扫描器的记录。疑似为了混肴视线开的扫描器

于是乎我看到了这条记录。
关于Colorful2.6(明月浩空模板)后门剖析-ChaBug安全
代码如下:

正常访问为空白页面,但我的直觉告诉我肯定有问题于是我加了view-source。然后出现了如下页面
关于Colorful2.6(明月浩空模板)后门剖析-ChaBug安全
噢原来是这样哦。明浩你真棒的呢。

正巧我用的是景安外网数据库 外网是可以直接 于是乎可以直接看到数据库和AUTH_KEY

那就意味着可以通过AUTH_KEY和密文算出Cookies直接登陆后台

真的很棒很棒的呢,你真是个合格的程序员

于是乎在00:54我们的明月浩空进入了我的后台
关于Colorful2.6(明月浩空模板)后门剖析-ChaBug安全
然后就能干一些见不得人羞羞的事情了

喏,我们看看他到底做什么
关于Colorful2.6(明月浩空模板)后门剖析-ChaBug安全
噢?原来是在后台操作文章标签插件呢。可以可以。所用的iP都是自己的呢。不错。厉害

-------请注意 本文正片-------

我们现在来分析一下image.php这个文件

file_get_contents函数,参考w3school的定义
file_get_contents() 函数把整个文件读入一个字符串中。
和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。
file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。
可以说file_get_contents()是完全可以读取本地文件的,比如file_get_contents("../../../../config.php"),就可以读取config.php文件的内容
那么问题来了,为什么那么多人用模板没人发现这个问题呢,首先image这个文件一开始想到的就是获取图片等操作,至于代码么很容易被忽略掉。

包括favicon.php也是一样也附带了这个后门代码
关于Colorful2.6(明月浩空模板)后门剖析-ChaBug安全
其实原理也很简单

就是通过后门获取数据库账号密码和AUTH_KEY然后通过数据库的密文和AUTH_KEY算出Cookies进入后台

注:进入后台等于拿到了空间权限.可通过后台上传WebShell

然后你们都懂

-------修复方法-------

将file_get_contents()替换成curl函数,※前提是PHP必须开启curl扩展
curl函数呢,比file_get_contents()效率高,速度快,性能好,而且不会读取本地文件。
以下是修复好的完整代码

附上模板标识码位置

关于Colorful2.6(明月浩空模板)后门剖析-ChaBug安全
修复后门文件后,务必重新安装Emlog程序,以生成新的AUTH_KEY

模板下载和修复文件(Colorful2.6-patch.zip)[https://pan.baidu.com/s/1dGA8OKx](覆盖到模板目录即可)

喜欢这篇文章的话就点一点喜欢吧!