網(wǎng)站論壇被黑客攻擊解決方案(論壇被黑怎么解決)
網(wǎng)站論壇被黑客攻擊解決方案(論壇被黑怎么解決)
時(shí)間回到半年前,當(dāng)時(shí)好友反映,最近論壇怎么這么慢,是不是被攻擊了?在線人數(shù)也屢破新高,人氣卻沒(méi)有明顯增長(zhǎng)。我打開(kāi)網(wǎng)站看了下,的確,直觀感受是慢了些,但首頁(yè)、版面、帖子頁(yè)面的源碼都沒(méi)什么異常。先安撫朋友,阿里云有時(shí)是這樣拉,在一個(gè)物理機(jī)里擠的虛機(jī)多拉,店大欺客之類。
但在線數(shù)據(jù)不是這樣說(shuō),說(shuō)明這些訪問(wèn)是實(shí)實(shí)在在的來(lái)了,一邊安撫朋友,一邊分析日志,發(fā)現(xiàn)了一些異常。原來(lái)攻擊源來(lái)自百度,怎么可能?但的確是這樣,把近幾日的日志統(tǒng)計(jì)出來(lái),來(lái)自百度的采集請(qǐng)求近百萬(wàn)/日,agent正常,不像是偽造的請(qǐng)求,這個(gè)量級(jí)的采集對(duì)朋友的小站來(lái)說(shuō),確實(shí)相當(dāng)于拒絕服務(wù)攻擊了。具體看了一下采集的地址,卻發(fā)現(xiàn)了一些問(wèn)題,隨便帖幾個(gè),都是類似這樣的:
/thread-15063160275-1-1.html
/thread-29704948585-1-1.html
/forum-71459571159-1.html
/forum-94009706208-1.html
對(duì)Discuz偽靜態(tài)熟悉的朋友一看就知道問(wèn)題所在了,這種tid或fid的請(qǐng)求基本上是不會(huì)存在的。那我們自己訪問(wèn)一下看看,百度為什么會(huì)對(duì)這樣的地址感興趣?用自己的瀏覽器訪問(wèn)之后,論壇給出了正確的反饋:“抱歉,指定的主題不存在或已被刪除或正在被審核”,“抱歉,指定的版塊不存在”。恩,跟“不存在”的猜想一樣。可是百度為什么要這樣做?類似的地址是怎么進(jìn)入百度采集庫(kù)的,總不會(huì)憑空出現(xiàn)的吧。這個(gè)問(wèn)題困擾了幾天,一直想不明白,朋友的小站就在百度的“攻擊”下艱難的生存。
后來(lái)想到,總是這樣也不行啊,先對(duì)百度限流吧,研究了一下robot.txt語(yǔ)法,發(fā)現(xiàn)百度才是店大欺客,通用的限制語(yǔ)法百度一概不遵守,只有去注冊(cè)百度的站長(zhǎng)平臺(tái),驗(yàn)證好站長(zhǎng)身份,然后提交限制采集頻率的申請(qǐng)。可是這個(gè)申請(qǐng)只管30天,即使掛馬問(wèn)題最終被解決,朋友的小站也要每30天去限制一下采集頻率,這是對(duì)小站的長(zhǎng)久影響,還不算這段時(shí)間之內(nèi),正常的內(nèi)容沒(méi)被采集到的損失。限制采集上限之后,小站第二天就生龍活虎了,但這只是治標(biāo),沒(méi)有治本啊,問(wèn)題到底出在哪兒?
在百度的站長(zhǎng)平臺(tái)閑逛,發(fā)現(xiàn)有模擬采集的功能,隨意測(cè)試了一下小站主頁(yè),終于發(fā)現(xiàn)了這個(gè)秘密。
模擬采集來(lái)的頁(yè)面源碼,有了明顯的篡改痕跡,里面加了十行類似“
thread-15063160275-1-1.html”這樣的連接,數(shù)字都是隨機(jī)生成的,每次刷新都不一樣。而通過(guò)模擬采集這個(gè)隨機(jī)連接,內(nèi)容更是完全驢唇不對(duì)馬嘴了,根本就不是朋友小站的內(nèi)容,甚至根本不是Discuz的內(nèi)容。這下問(wèn)題搞清楚了,朋友小站遭到了搜索引擎劫持,被掛上了面向搜索引擎的隱蔽式SEO木馬,其目的是讓百度采集朋友小站,而采集內(nèi)容是偽原創(chuàng)訂制過(guò)的,最終為了智能跳轉(zhuǎn)到攻擊者的“bo采”類網(wǎng)站。
做一個(gè)簡(jiǎn)單的驗(yàn)證,把自己的火狐瀏覽器 agent 改成 Baiduspider,再次打開(kāi)上述不可能存在的URL,Discuz沒(méi)有正確反饋了,被木馬接管的頁(yè)面出現(xiàn)了,如下圖所示:
這時(shí),問(wèn)題就好解決了,找到掛載點(diǎn),清除掉木馬代碼。具體代碼就不貼了。這段代碼大致作用就是,通過(guò)判斷agent,如果是普通瀏覽者,就什么都不做。如果是幾大搜索引擎,就在正常頁(yè)面中加入隨機(jī)生成的10條“新URL”(專指正常論壇不可能出現(xiàn)的,偽造的URL,下同),這些id,是有固定范圍的。而搜索引擎采集這些固定范圍的ID時(shí),就會(huì)通過(guò)模版生成偽造的頁(yè)面,頁(yè)面內(nèi)容來(lái)自幾個(gè)txt文件(是幾本網(wǎng)絡(luò)小說(shuō)),再對(duì)其亂序和隨機(jī)組合,人眼閱讀是不通順的,但特別符合搜索引擎的胃口,這些大量的“新”內(nèi)容,極大的勾起了搜索引擎的采集興趣,通過(guò)短時(shí)間的采集,搜索引擎就可能在待采集數(shù)據(jù)庫(kù)中積累大量的“新url”,有可能這些“新url"短時(shí)間不會(huì)開(kāi)始正式采集,但這只是時(shí)間問(wèn)題,一旦開(kāi)始了,采集數(shù)據(jù)就會(huì)指數(shù)式爆發(fā),每個(gè)“新URL”會(huì)又推薦十多個(gè)“新URL”,漸漸的,就對(duì)朋友小站形成準(zhǔn)拒絕服務(wù)式攻擊。當(dāng)然,拒絕服務(wù)不是掛馬者的目的,掛馬者是想通過(guò)百度的采集,實(shí)現(xiàn)對(duì)自己違規(guī)站點(diǎn)的推廣。而拒絕服務(wù)式的影響,可能攻擊者自己也沒(méi)想到吧。
半年前的事情就這樣處理了,通過(guò)日志分析了下黑客的掛馬手法,初步感覺(jué)是管理員密碼泄露,沒(méi)有深究,覺(jué)得這是個(gè)偶然案例,只是建議讓朋友定期更換復(fù)雜的密碼。然后對(duì)目錄權(quán)限進(jìn)行梳理,部分目錄文件甚至只給400個(gè)權(quán)限。但心中隱隱有些不安,是不是Discuz有漏洞啊?再觀察觀察吧,即使有漏洞,在400權(quán)限下也沒(méi)什么施展空間吧。這半年來(lái),百度蜘蛛在采集頻率限制線以下,每天還進(jìn)行著大量“新URL”的采集,雖然木馬早就清除掉了,這個(gè)影響卻一直存在。這里有個(gè)悖論,限制的頻率越低,采集影響時(shí)間越長(zhǎng),限制高了,對(duì)正常訪問(wèn)有影響。于是春節(jié)期間,想著小站沒(méi)什么人,放開(kāi)限制讓百度蜘蛛撒了一次歡,恩,又是近百萬(wàn)。可是百度似乎一直沒(méi)意識(shí)到自己采集到的“新URL”的問(wèn)題,還在不懈地堅(jiān)持著。
2023年3月爆出了百度網(wǎng)址劫持黑產(chǎn)的報(bào)道,我隱約覺(jué)得,跟朋友小站被掛馬有點(diǎn)相似,應(yīng)該是同一個(gè)團(tuán)伙干的。
---分割線---
時(shí)間回到現(xiàn)在(不是指發(fā)文時(shí)間,指的是筆記時(shí)間:2023年3月,下同),這次掛馬不太一樣,被管理員撞個(gè)正著,密碼不太可能泄露了,朋友已經(jīng)很頻繁地修改復(fù)雜的密碼了。從Discuz本身多找找原因吧。這套Discuz是X3.2的,隨著開(kāi)發(fā)團(tuán)隊(duì)的解體,官方論壇沒(méi)落了,基本上是解決不了問(wèn)題,朋友的這個(gè)版本不是最新,心中一直隱隱不安,但也沒(méi)太好辦法。因?yàn)樵创a經(jīng)過(guò)了小作坊式深度二次開(kāi)發(fā),全面升級(jí)的成本太高,一直沒(méi)敢弄,為了驗(yàn)證是Discuz漏洞,我打算把對(duì)手的攻擊手段完全模擬出來(lái),只有這樣,才能讓朋友下定決心,再大困難也要徹底升級(jí)。
于是我把最近幾天的日志切割出來(lái),很快定位到掛載點(diǎn),注釋掉惡意代碼,把惡意txt、php和模版改名,置權(quán)限為0000。為什么不刪除,留著樣本做研究啊。文末附錄中有按時(shí)間線整理的關(guān)鍵日志記錄,后面有整理過(guò)程中寫(xiě)的小小心得,供參考。
下面我要分析日志內(nèi)容,模擬出攻擊手段來(lái),不一定按時(shí)間線,就按思路來(lái),有些環(huán)節(jié)有跳躍,有些細(xì)節(jié)就不帖了,免得被人利用做壞事。
我把事發(fā)前后日志再次分割,得到一份50萬(wàn)行左右的日志,根據(jù)經(jīng)驗(yàn)先做初步排查。
首先暴露的是bh大馬,cat到“base64_decode”就知道了,這個(gè)目標(biāo)太明顯,即使50萬(wàn)行的日志,也很快定位到了它,簡(jiǎn)單解個(gè)密,得到登錄密碼,再殺馬。日志時(shí)間點(diǎn)16:17:37。
大馬放在data/sysdata下,這是個(gè)644權(quán)限目錄,看了下內(nèi)容,給400應(yīng)該也可以,還是疏忽被人家把馬給放上來(lái)了。data目錄不太敢把權(quán)限限制得太死,比如data/log就因?yàn)榘肽昵翱刂屏藱?quán)限,直到這次入侵發(fā)現(xiàn)沒(méi)有后臺(tái)日志時(shí)才知道權(quán)限過(guò)小了。
繼續(xù)向前找,找找這個(gè)大馬怎么放上來(lái)的。這只編碼后的大馬,占地80K,基本排除Get方式,向前追查可疑的POST操作。在追查過(guò)程中,每找到一個(gè)可疑IP,就要把它記錄下來(lái),然后grep “IP” clip_log.txt,把所有該IP的操作復(fù)制出來(lái),過(guò)濾出可疑操作。這時(shí),排查分兩條線,一條邏輯線,一條IP線,然后通過(guò)時(shí)間線把整個(gè)入侵流程串起來(lái)。通過(guò)邏輯線,可以找到對(duì)手更換的IP(分析過(guò)程中也經(jīng)歷了思想變化,以為對(duì)方是團(tuán)隊(duì)合作),通過(guò)IP又可以找到該IP所有操作,再按時(shí)間整理出來(lái)。這樣得到的入侵細(xì)節(jié)就越來(lái)越多。真相漸漸就會(huì)浮出水面。
向上找到最近的可疑POST來(lái)自
/data/dzapp_haodai_config.php 日志時(shí)間點(diǎn)16:04:17。 這是論壇中沒(méi)裝的插件,這個(gè)文件已經(jīng)不在了,大馬得手之后,毀尸滅跡。了解了一下這個(gè)插件,它可能被一句話注入,這個(gè)長(zhǎng)達(dá)80K的內(nèi)容,應(yīng)該是一句話+菜刀POST進(jìn)來(lái)的。這也解釋了朋友小號(hào)登錄時(shí),在導(dǎo)航看到“貸款”字樣的來(lái)源,是對(duì)手安裝完插件,傳播大馬過(guò)程中,被小號(hào)無(wú)意撞見(jiàn)了。這個(gè)環(huán)節(jié)不需要模擬,我相信這個(gè)漏洞的存在,但讓我更關(guān)心的是,對(duì)手如何進(jìn)入的后臺(tái),畢竟插件是要管理員才能裝的。
防守就是有天然優(yōu)勢(shì)的,不需要知道攻擊者的每一個(gè)攻擊細(xì)節(jié),在關(guān)鍵點(diǎn)上設(shè)置一點(diǎn)點(diǎn)障礙,對(duì)手的攻擊成本就會(huì)成百上千倍的增加。暫時(shí)不糾結(jié)細(xì)節(jié),通過(guò)雙線排查把對(duì)手的所有操作都過(guò)濾出來(lái),這樣關(guān)鍵入侵點(diǎn)自然就暴露在字里行間了。然后得到了文末附錄中的干貨。
這不到100行的干貨日志就很容易發(fā)現(xiàn)問(wèn)題了:
時(shí)間點(diǎn) 15:58:43 有文件上傳,這個(gè)需要警惕,因?yàn)樵缙诘娜肭质录?論壇已經(jīng)把附件上傳、頭像上傳控制的很嚴(yán)了,目錄權(quán)限也在操作系統(tǒng)層面做了限制,這個(gè)要好好研究,模擬出來(lái)。
時(shí)間點(diǎn) 15:58:48 好貸插件是為了傳大馬,那這個(gè)插件(應(yīng)用)是做什么的?
時(shí)間點(diǎn) 15:56:47 這是一個(gè)很隱蔽的發(fā)現(xiàn),甚至困擾了我好幾天,沒(méi)有POST,是如何登錄的?在這20多秒里,正常日志記錄了幾百行數(shù)據(jù),每一行細(xì)細(xì)篩過(guò),確定不是自己遺漏了什么。幸好最終將它模擬出來(lái),不然即使升級(jí)到X3.4,仍然有被攻擊的可能,一點(diǎn)被破,功虧一簣。
本地復(fù)現(xiàn)一:繞過(guò)圖片上傳限制,上傳含有木馬的圖片
漏洞名字就不提了,這是利用出生地檢驗(yàn)漏洞,可任意刪除文件,經(jīng)過(guò)本地模擬,的確成功刪除了目標(biāo)文件,但刪除文件不是這個(gè)漏洞的目的(如果有install.lock在的就要小心了),對(duì)手借這個(gè)漏洞繞過(guò)了上傳限制,成功的上傳了圖片。時(shí)間點(diǎn)在15:58:43,到此我還是想不出這個(gè)漏洞能做什么,因?yàn)橹荒軇h除文件還不夠,不能掛廣告的嘛。要能寫(xiě)入文件才行。暫時(shí)放下。這個(gè)傳上來(lái)的圖片后面會(huì)用到。模擬后的效果如圖:
本地復(fù)現(xiàn)二:先不去想好貸的事,就日志而言,對(duì)手裝這個(gè)插件是為了什么,很可能是為了觸發(fā)上一步傳上來(lái)的圖片馬運(yùn)行。
通過(guò)搜索發(fā)現(xiàn)這是一個(gè)本地文件包含漏洞,構(gòu)造巧妙的接口路徑,觸發(fā)圖片馬運(yùn)行,整理心得中寫(xiě)道:為所欲為,淪陷了。感覺(jué)這應(yīng)該是個(gè)終點(diǎn)了,對(duì)方還要做什么呢?想像中的一頓POST的猛操作沒(méi)有出現(xiàn),是在練兵,還是新手?也許本地windows權(quán)限沒(méi)做限制,可以當(dāng)做終點(diǎn),服務(wù)器上的環(huán)境更苛刻,對(duì)方?jīng)]有運(yùn)行成功?也不打算到服務(wù)器上去試,想不通不想了。本地模擬效果如圖:
思緒到這里,就有一個(gè)很明顯的問(wèn)題,這兩個(gè)漏洞的組合利用,需要先決條件的。第一個(gè)條件,上傳圖片,需要一個(gè)合法帳號(hào)。這個(gè)比較容易,可以自己注冊(cè),也可以掃一個(gè)用了弱口令的老帳號(hào),可能有些網(wǎng)站注冊(cè)麻煩,他們選擇掃描。我們這位ID19的帳號(hào),用的密碼已經(jīng)反向解析出來(lái)的,是Aa123456,比較弱的密碼了,就被人家利用了。第二個(gè)條件就比較難搞,需要?jiǎng)?chuàng)始人密碼或admin密碼,要能進(jìn)入后臺(tái)。我在本機(jī)模擬,是知道admin密碼,可是入侵者是如何知道,還要繼續(xù)研究一下。利用收集到的資料進(jìn)行猜測(cè),創(chuàng)始人密碼被盜可能性比較大。首先發(fā)現(xiàn)discuz的驗(yàn)證碼是有漏洞的,可以輕易繞過(guò),這樣就為窮舉破解提供了可能。模擬了一下,在構(gòu)造的環(huán)境下,驗(yàn)證碼可以指定為CCCC。然后出生年(1910-2010)是密碼字典的必備字段,****必然會(huì)被猜中,域名拆解也是密碼字典必備字段,xxx、yyy類似組合也會(huì)被嘗試,而疊字母、疊數(shù)字的組合也是最基本的字典,三段碰撞,總會(huì)碰出我們的創(chuàng)始人密碼來(lái),換句話說(shuō),創(chuàng)始人密碼太弱了,經(jīng)不住窮舉的折騰,而且這個(gè)密碼很可能已經(jīng)泄露很多年了,因?yàn)樵诮荒甑娜罩局?沒(méi)有找到對(duì)方窮舉創(chuàng)始人密碼的痕跡。
本地復(fù)現(xiàn)三:現(xiàn)在再回想到?jīng)]有POST就登錄后臺(tái)的怪事,漸漸的,又一個(gè)思路浮現(xiàn)出來(lái)。
Ucenter、跨站、key泄露有沒(méi)有可能?這樣一想,覺(jué)得比創(chuàng)始人密碼被窮舉的可能性更大,因?yàn)榕笥芽傆羞@樣那樣的小需求,習(xí)慣在某寶找個(gè)人給解決掉,升級(jí)也找人幫忙過(guò),太多的雜人經(jīng)手過(guò)這個(gè)系統(tǒng),ukey泄漏是大概率的,而且建站后就沒(méi)改過(guò),脫過(guò)褲也不是不可能,即使沒(méi)人從中惡意泄露ukey,歷史版本中也暴出過(guò)泄露ukey的漏洞來(lái),只要有ukey,再在本地建個(gè)論壇。。。。果然,模擬出朋友遇到的效果了,我在不知道管理員密碼,只知道ukey的情況下,把朋友的管理員密碼改了,而且在朋友服務(wù)器上沒(méi)有登錄的POST痕跡,因?yàn)槲沂窃诒镜氐卿浀摹?/p>
關(guān)鍵環(huán)節(jié)都弄清楚了,我用直白的語(yǔ)言給朋友總結(jié)了一下:
某日15:56:23,攻擊者通過(guò)已知的ukey,改掉了管理員a密碼,并以管理員a身份登錄,此時(shí),兩位正在管理版務(wù),于是a被彈出。(疑似對(duì)a、b密碼做了備份,以便入侵后改回)稍后,攻擊者讀取了id小于23的人的頭像,判斷其是否存在,過(guò)程中選中了id為19的用戶,可能他的密碼是弱口令,在攻擊者的數(shù)據(jù)庫(kù)中早有記錄,也可能通過(guò)ukey,遠(yuǎn)程修改了19的密碼,然后以19的身份登錄。15:58:27利用出生地檢測(cè)漏洞上傳了含有木馬的圖片,接著又以管理員身份添加插件激活木馬。在本機(jī)模擬過(guò)程中,15:59:12應(yīng)該就是終點(diǎn)了,因?yàn)檫@時(shí)已經(jīng)可以為所欲為,可是攻擊者試圖刪除些什么,離開(kāi)了。很有可能是半年前的權(quán)限收縮起到了效果,這個(gè)圖片馬沒(méi)有執(zhí)行權(quán),攻擊者試圖刪除剛剛上傳的圖片馬,宣告失敗,因?yàn)闆](méi)有刪除權(quán)。16:01:31 換了IP,再次登錄,這次身份還是管理員a,通過(guò)sid可以判斷到。再次讀出頭像,定位到b,以管理員b登錄。于是b被彈出。16:02:36 這里是有post的,攻擊者是在服務(wù)器上直接登錄的。直接安裝好貸插件,在conifg中加入一句話腳本,菜刀post進(jìn)來(lái)大馬。此時(shí),小號(hào)登錄,在菜單欄看到“貸款”字樣。16:15:09 大馬進(jìn)來(lái),這次真的為所欲為了,為下次攻擊方便留好后門,就開(kāi)始掛廣告,想在config_ucenter.php掛,失敗了,沒(méi)有權(quán)限。最終大馬放在了這data/sysdata/,還緊張的輸錯(cuò)了三次密碼。修改function_core.php文件,加入注入點(diǎn)。建立cache目錄,上傳一個(gè)壓縮包。通過(guò)大馬解壓,再修改function_core.php。掛馬完畢。打掃痕跡去除插件改回管理員a密碼(怎么做的沒(méi)發(fā)現(xiàn),很可能利用大馬)。2小時(shí)后回來(lái)巡視效果。
網(wǎng)站論壇被黑客攻擊解決方案(論壇被黑怎么解決)發(fā)稿,營(yíng)銷,推廣 排名, 引流等請(qǐng)聯(lián)系丁不二軟文軟文推廣www.2023ruanwen.com(微信rwyx520)
聲明:本站所有文章資源內(nèi)容,如無(wú)特殊說(shuō)明或標(biāo)注,均為采集網(wǎng)絡(luò)資源。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系本站刪除。
