幾天前跟網(wǎng)友私信交流人工智能在偽原創(chuàng)SEO上應(yīng)用的問(wèn)題,網(wǎng)友提到了他通過(guò)搜索引擎欺騙,智能跳轉(zhuǎn)的方式給跨境電商引流,效果不錯(cuò),這勾起我的一段被黑的回憶,正準(zhǔn)備找素材拿出來(lái)寫一寫呢。昨天剛好又看到百度起訴快排服務(wù)、萬(wàn)詞霸屏的新聞,想借著這個(gè)話題結(jié)合被黑的經(jīng)歷談一談我在SEO領(lǐng)域的看法。
我有位朋友是做咨詢服務(wù)的,開有一個(gè)小網(wǎng)站,主體是一個(gè)discuz論壇,我還在讀書的時(shí)候幫他架設(shè)了論壇。它的小站不溫不火地也開了20多年,最初幫他做過(guò)一些SEO優(yōu)化,基本是基于偽原創(chuàng)的優(yōu)化,跟當(dāng)下流行的快排、發(fā)包這種終極手段不可同日而語(yǔ)。什么是快排?快排是利用搜索引擎的排名特點(diǎn),對(duì)目標(biāo)網(wǎng)站進(jìn)行特殊的SEO優(yōu)化,在3-5天內(nèi)達(dá)到排名登上前頁(yè)目的。當(dāng)然偽原創(chuàng)是達(dá)不到這個(gè)效果的哈。如果對(duì)快排的具體手段硬要打個(gè)比方的話,偽原創(chuàng)最低級(jí),它的刺激相當(dāng)于賭博;蜘蛛池快排是進(jìn)階版,他的刺激相當(dāng)于鴉P;終極版是發(fā)包,直接刺激搜索引擎興奮點(diǎn),程度就是冰D了。這些東西都有共同點(diǎn),就是上癮。賭博雖不提倡,但小賭怡情,在有些地方還是合法的,而快排與發(fā)包,名義上合理利用規(guī)則,但百度給你扣一個(gè)“不正當(dāng)競(jìng)爭(zhēng)”的帽子也是一點(diǎn)問(wèn)題沒有的。
那么朋友當(dāng)年被黑,跟這些又有什么關(guān)系呢?因?yàn)楹诳腿肭中≌镜哪康模褪橇髁拷俪?,這是一種更惡劣的SEO技術(shù),是當(dāng)年互聯(lián)網(wǎng)黑色產(chǎn)業(yè)鏈的一種落地形式。我把當(dāng)時(shí)的排查復(fù)現(xiàn)筆記找出來(lái),里面涉及的漏洞早已被補(bǔ)好了,應(yīng)該不會(huì)再造成什么社會(huì)危害了哈。對(duì)分析過(guò)程不感興趣的條友可以直接看結(jié)論,萬(wàn)字長(zhǎng)文警告,全部讀完大約耗時(shí)1小時(shí)。
—分割線—以下是當(dāng)年的排查復(fù)現(xiàn)筆記—分割線—
某日,接到一位好友求助,他的discuz論壇“又”被掛馬了。這次掛馬,感受是不太一樣的。據(jù)描述,當(dāng)時(shí)正好兩位管理員都在線處理版務(wù),短短幾分鐘,兩位管理員先后被彈出論壇,再次登錄時(shí)提示密碼不對(duì)!給朋友直觀的感覺是被黑了。由于管理員在線,馬上用小號(hào)登錄,在導(dǎo)航欄出現(xiàn)了“貸款”字樣,再次刷新卻不見了,這又是一個(gè)直觀的感受,有人用管理員帳號(hào)在做壞事。不久之后,使用admin帳號(hào)的管理員可以登錄了,admin幫助另一管理員把密碼重置。對(duì)方掛木馬操作完畢。
可是論壇沒什么異樣,運(yùn)行一切正常,頁(yè)面源碼里也沒有古老的<iframe>、js等手法掛馬痕跡。于是向我求助。上面提到了“又”被掛馬,在分析這次直觀被黑事件之前,先回顧一下上次掛馬的經(jīng)歷,后經(jīng)證實(shí),兩次手法基本一致。
—分割線—
時(shí)間回到半年前,當(dāng)時(shí)好友反映,最近論壇怎么這么慢,是不是被攻擊了?在線人數(shù)也屢破新高,人氣卻沒有明顯增長(zhǎng)。我打開網(wǎng)站看了下,的確,直觀感受是慢了些,但首頁(yè)、版面、帖子頁(yè)面的源碼都沒什么異常。先安撫朋友,阿里云有時(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)容沒被采集到的損失。限制采集上限之后,小站第二天就生龍活虎了,但這只是治標(biāo),沒有治本啊,問(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,再次打開上述不可能存在的URL,Discuz沒有正確反饋了,被木馬接管的頁(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ì)開始正式采集,但這只是時(shí)間問(wèn)題,一旦開始了,采集數(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ù)式的影響,可能攻擊者自己也沒想到吧。
半年前的事情就這樣處理了,通過(guò)日志分析了下黑客的掛馬手法,初步感覺是管理員密碼泄露,沒有深究,覺得這是個(gè)偶然案例,只是建議讓朋友定期更換復(fù)雜的密碼。然后對(duì)目錄權(quán)限進(jìn)行梳理,部分目錄文件甚至只給400個(gè)權(quán)限。但心中隱隱有些不安,是不是Discuz有漏洞???再觀察觀察吧,即使有漏洞,在400權(quán)限下也沒什么施展空間吧。這半年來(lái),百度蜘蛛在采集頻率限制線以下,每天還進(jìn)行著大量“新URL”的采集,雖然木馬早就清除掉了,這個(gè)影響卻一直存在。這里有個(gè)悖論,限制的頻率越低,采集影響時(shí)間越長(zhǎng),限制高了,對(duì)正常訪問(wèn)有影響。于是春節(jié)期間,想著小站沒什么人,放開限制讓百度蜘蛛撒了一次歡,恩,又是近百萬(wàn)。可是百度似乎一直沒意識(shí)到自己采集到的“新URL”的問(wèn)題,還在不懈地堅(jiān)持著。
2019年3月爆出了百度網(wǎng)址劫持黑產(chǎn)的報(bào)道,我隱約覺得,跟朋友小站被掛馬有點(diǎn)相似,應(yīng)該是同一個(gè)團(tuán)伙干的。
—分割線—
時(shí)間回到現(xiàn)在(不是指發(fā)文時(shí)間,指的是筆記時(shí)間:2019年3月,下同),這次掛馬不太一樣,被管理員撞個(gè)正著,密碼不太可能泄露了,朋友已經(jīng)很頻繁地修改復(fù)雜的密碼了。從Discuz本身多找找原因吧。這套Discuz是X3.2的,隨著開發(fā)團(tuán)隊(duì)的解體,官方論壇沒落了,基本上是解決不了問(wèn)題,朋友的這個(gè)版本不是最新,心中一直隱隱不安,但也沒太好辦法。因?yàn)?span id="yocfjfj" class="candidate-entity-word" data-gid="6568271">源碼經(jīng)過(guò)了小作坊式深度二次開發(fā),全面升級(jí)的成本太高,一直沒敢弄,為了驗(yàn)證是Discuz漏洞,我打算把對(duì)手的攻擊手段完全模擬出來(lái),只有這樣,才能讓朋友下定決心,再大困難也要徹底升級(jí)。
于是我把最近幾天的日志切割出來(lái),很快定位到掛載點(diǎn),注釋掉惡意代碼,把惡意txt、php和模版改名,置權(quán)限為0000。為什么不刪除,留著樣本做研究啊。文末附錄中有按時(shí)間線整理的關(guān)鍵日志記錄,后面有整理過(guò)程中寫的小小心得,供參考。
下面我要分析日志內(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)沒有后臺(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。 這是論壇中沒裝的插件,這個(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ú)意撞見了。這個(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),甚至困擾了我好幾天,沒有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除文件還不夠,不能掛廣告的嘛。要能寫入文件才行。暫時(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)行,整理心得中寫道:為所欲為,淪陷了。感覺這應(yīng)該是個(gè)終點(diǎn)了,對(duì)方還要做什么呢?想像中的一頓POST的猛操作沒有出現(xiàn),是在練兵,還是新手?也許本地windows權(quán)限沒做限制,可以當(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)樵诮荒甑娜罩局?,沒有找到對(duì)方窮舉創(chuàng)始人密碼的痕跡。
本地復(fù)現(xiàn)三:現(xiàn)在再回想到?jīng)]有POST就登錄后臺(tái)的怪事,漸漸的,又一個(gè)思路浮現(xiàn)出來(lái)。
Ucenter、跨站、key泄露有沒有可能?這樣一想,覺得比創(chuàng)始人密碼被窮舉的可能性更大,因?yàn)榕笥芽傆羞@樣那樣的小需求,習(xí)慣在某寶找個(gè)人給解決掉,升級(jí)也找人幫忙過(guò),太多的雜人經(jīng)手過(guò)這個(gè)系統(tǒng),ukey泄漏是大概率的,而且建站后就沒改過(guò),脫過(guò)褲也不是不可能,即使沒人從中惡意泄露ukey,歷史版本中也暴出過(guò)泄露ukey的漏洞來(lái),只要有ukey,再在本地建個(gè)論壇。。。。果然,模擬出朋友遇到的效果了,我在不知道管理員密碼,只知道ukey的情況下,把朋友的管理員密碼改了,而且在朋友服務(wù)器上沒有登錄的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)可以為所欲為,可是攻擊者試圖刪除些什么,離開了。很有可能是半年前的權(quán)限收縮起到了效果,這個(gè)圖片馬沒有執(zhí)行權(quán),攻擊者試圖刪除剛剛上傳的圖片馬,宣告失敗,因?yàn)闆]有刪除權(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),這次真的為所欲為了,為下次攻擊方便留好后門,就開始掛廣告,想在config_Ucenter.php掛,失敗了,沒有權(quán)限。最終大馬放在了這data/sysdata/,還緊張的輸錯(cuò)了三次密碼。修改function_core.php文件,加入注入點(diǎn)。建立cache目錄,上傳一個(gè)壓縮包。通過(guò)大馬解壓,再修改function_core.php。掛馬完畢。打掃痕跡去除插件改回管理員a密碼(怎么做的沒發(fā)現(xiàn),很可能利用大馬)。2小時(shí)后回來(lái)巡視效果。
下面要做或已做的防范措施:
- 在阿里控制臺(tái)安全策略中把ssh/ftp/mysql作IP限制
- 整理個(gè)性需求的修改記錄,為全面升級(jí)到X3.4做準(zhǔn)備。
- 升級(jí)X3.4,改/admin.php和/uc_server/admin.php的名字,只有自己知道。
- 改ssh/ftp/mysql/管理員abc/admin/uckey/創(chuàng)始人所有的密碼
- 在上次收縮權(quán)限的基礎(chǔ)上,把本次被改過(guò)的目錄和文件包括插件目錄,權(quán)限置為400。
- 在x3.4中再次模擬攻擊,確認(rèn)已知漏洞不會(huì)再被利用。
- 檢索數(shù)據(jù)庫(kù),對(duì)出生地字段異常的直接刪除處理,同時(shí)刪除異常文件。
附錄,根據(jù)日志時(shí)間線整理出的關(guān)鍵內(nèi)容:
15:55:55 43.249.128.253日本 該IP第一次出現(xiàn)GET /data/sysdata/cache_filelogs.php 嘗試預(yù)留后門,403無(wú)響應(yīng)
15:56:22 43.249.128.253日本 /data/appbyme/cache/************.php 再次嘗試預(yù)留后門,403 無(wú)響應(yīng)
15:56:22 43.249.128.253日本 GET /uc_server/admin.php?m=user&a=login&iframe=&sid= 打開Ucenter管理中心
15:56:23 43.249.128.253日本 GET /uc_server/admin.php?m=seccode&seccodeauth=7b77vRbEsIkzeN7pBSbPuGS1tJRRc%2FInvcHLBIFHaKa6540&1260911591 將驗(yàn)證碼指定為CCCC
15:56:47 43.249.128.253日本 GET /uc_server/admin.php?sid=ebeci2SpBuMNpXDK0L1gyHf4zyPPNgzPaf53YPysqOl2D%2BIck0bw%2FccmNfSGQ9ymr9wOrk9bZToimA 這里登錄了?有sid了,怎么登錄的?有密碼?不需要POST嗎?
15:56:47 43.249.128.253日本 GET /uc_server/admin.php?m=frame&a=menu&sid=6968b13bXgG8VJK3co8Z5uWnbE5kFW62GJclnaMgfWfKi5zZ1EUoxxn4%2Beim7pgGBmFtGUgafzXf8g
15:56:47 43.249.128.253日本 GET /uc_server/admin.php?m=frame&a=header&sid=6968b13bXgG8VJK3co8Z5uWnbE5kFW62GJclnaMgfWfKi5zZ1EUoxxn4%2Beim7pgGBmFtGUgafzXf8g
15:56:47 43.249.128.253日本 GET /uc_server/admin.php?m=frame&a=main&sid=6968b13bXgG8VJK3co8Z5uWnbE5kFW62GJclnaMgfWfKi5zZ1EUoxxn4%2Beim7pgGBmFtGUgafzXf8g
15:56:54 43.249.128.253日本 GET /home.php?mod=misc&ac=sendmail&rand=1551945412
15:56:59 43.249.128.253日本 /uc_server/admin.php?m=user&a=ls&sid=a81dES%2BIGlckLs%2FI9YxTKse7rnXscDo5JBBUv%2FAPnCg5hhR%2F1n%2B%2BHWfxfXMitxXdNE1JUB3ZLhGpNw
15:56:59 43.249.128.253日本 /uc_server/avatar.php?uid=9&size=small 讀取一批用戶的頭像,包括2、3、4、5、8、9、10、11、13、14、17、18、16、20、19、22、21、23 (跳過(guò)的ID應(yīng)該是在之前掃描時(shí)已知不存在的)
15:57:02 43.249.128.253日本 GET /uc_server/admin.php?m=user&a=edit&uid=19&sid=faefRe4chIfqB66j7CU%2BcrMivIzK0Py%2BWRkXG79InXLTvDmOdOTe0RD0n7V40qKZaBwhZXaBflkCmw
15:57:02 43.249.128.253日本 GET /uc_server/avatar.php?uid=19&size=big
15:57:02 43.249.128.253日本 GET /uc_server/avatar.php?uid=19&size=big&type=real
15:57:06 43.249.128.253日本 POST /uc_server/admin.php?m=user&a=edit&uid=19
15:57:11 43.249.128.253日本 POST /member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1
15:57:17 43.249.128.253日本 GET /forum.php?mod=redirect&tid=1619&goto=lastpost
15:57:17 43.249.128.253日本 GET /forum.php?mod=viewthread&tid=1619&page=7
15:57:23 43.249.128.253日本 GET /member.php?mod=logging&action=login 以u(píng)id為19的用戶身份登錄 (19號(hào)密碼反查 md5:3facafec839b9bc5520b8b7ad625be89 鹽:624843 反解析結(jié)果:Aa123456),預(yù)計(jì)是弱口令掃描
15:57:35 43.249.128.253日本 GET /space-uid-19.html
15:58:27 43.249.128.253日本 POST /home.php?mod=spacecp&ac=profile&op=base&deletefile[birthprovi%20nce]=test 利用出生地檢驗(yàn)漏洞,可任意刪除文件,此處是為了上傳含木馬的圖片。
15:58:33 43.249.128.253日本 GET /home.php?mod=spacecp&ac=profile&op=base&deletefile[birthprovi%20nce]=test 驗(yàn)證效果
15:58:43 43.249.128.253日本 GET /data/attachment/profile/201903/07/155827kmmo9z8d6bud89bm.gif 驗(yàn)證上傳的文件(圖片為熊貓燒香,copy合并進(jìn)去90K的php木馬代碼)
15:58:48 43.249.128.253日本 GET /uc_server/admin.php?m=app&a=ls&sid=a81dES%2BIGlckLs%2FI9YxTKse7rnXscDo5JBBUv%2FAPnCg5hhR%2F1n%2B%2BHWfxfXMitxXdNE1JUB3ZLhGpNw 插件列表
15:58:48 43.249.128.253日本 GET /uc_server/admin.php?m=app&a=ping&inajax=1&url=http%3A%2F%2Fwww.xxx.com&ip=&appid=9&random=1698098925&sid=a81dES%2BIGlckLs%2FI9YxTKse7rnXscDo5JBBUv%2FAPnCg5hhR%2F1n%2B%2BHWfxfXMitxXdNE1JUB3ZLhGpNw 測(cè)試通信
15:58:48 43.249.128.253日本 GET /uc_server/admin.php?m=app&a=add&sid=59d8Vt7UR1Qqg0poep%2Fqn5x2TUdsKTaVryRtJMWiApeTc02zN8ZFjmL5oKLkYYpTUD6yxyZdWo11eA 添加插件
15:59:02 43.249.128.253日本 POST /uc_server/admin.php?m=app&a=add 利用本地包含漏洞,把上面的圖片包含進(jìn)接口地址
15:59:02 43.249.128.253日本 GET /uc_server/admin.php?m=app&a=detail&appid=16&addapp=yes&sid=38bdWTjwEf4zsDzZjGYdxsQ9AmJ3ALUQq8A5MYV%2F%2B%2FQTih7q90jfCzZPJodU%2BKUxCYc3YclZ77XqSg
15:59:03 43.249.128.253日本 GET /uc_server/admin.php?m=app&a=ls&sid=a81dES%2BIGlckLs%2FI9YxTKse7rnXscDo5JBBUv%2FAPnCg5hhR%2F1n%2B%2BHWfxfXMitxXdNE1JUB3ZLhGpNw
15:59:03 43.249.128.253日本 GET /uc_server/admin.php?m=app&a=ping&inajax=1&url=http%3A%2F%2Fwww.xxx.com&ip=&appid=9&random=192829450&sid=a81dES%2BIGlckLs%2FI9YxTKse7rnXscDo5JBBUv%2FAPnCg5hhR%2F1n%2B%2BHWfxfXMitxXdNE1JUB3ZLhGpNw
15:59:03 43.249.128.253日本 GET /uc_server/admin.php?m=app&a=ping&inajax=1&url=http%3A%2F%2Fwww.xxx.com%2Fuc_server&ip=&appid=16&random=564603294&sid=a81dES%2BIGlckLs%2FI9YxTKse7rnXscDo5JBBUv%2FAPnCg5hhR%2F1n%2B%2BHWfxfXMitxXdNE1JUB3ZLhGpNw
15:59:12 43.249.128.253日本 GET /uc_server/admin.php?m=app&a=ping&appid=16&sid=9fccYN92wMOsyd2wLUKnQf8uhma1iCYA5rJhouyZgdoEopJlfdITZd90ivNHUhI8%2FNallhgitkhnVw 為所欲為,淪陷了。
16:00:00 43.249.128.253日本 POST /home.php?mod=spacecp&ac=profile&op=base&deletefile[birthprovi%20nce]=test 要?jiǎng)h除什么?
16:00:01 43.249.128.253日本 GET /home.php?mod=spacecp&ac=profile&op=base&deletefile[birthprovi%20nce]=test
16:00:45 43.249.128.253日本 GET /forum.php?mod=viewthread&tid=1619&page=7 該IP最后一次出現(xiàn)之后。離開
16:01:31 128.90.50.143美國(guó) 該IP第一次出現(xiàn),訪問(wèn)http://www.xxx.com/forum.php?mod=post&action=reply&fid=19&tid=1619
16:01:32 128.90.50.143美國(guó) 在上述界面點(diǎn)擊“站內(nèi)消息”
16:01:51 128.90.50.143美國(guó) POST /uc_server/admin.php?m=app&a=ls 值得注意,此處偽造refere。來(lái)自:http://www.xxx.com/uc_server/admin.php?m=app&a=ls&sid=a81dES%2BIGlckLs%2FI9YxTKse7rnXscDo5JBBUv%2FAPnCg5hhR%2F1n%2B%2BHWfxfXMitxXdNE1JUB3ZLhGpNw
16:01:52 128.90.50.143美國(guó) GET /uc_server/admin.php?m=app&a=ping&inajax=1&url=http%3A%2F%2Fwww.xxx.com&ip=&appid=9&random=1821220896&sid=9fccYN92wMOsyd2wLUKnQf8uhma1iCYA5rJhouyZgdoEopJlfdITZd90ivNHUhI8%2FNallhgitkhnVw
16:02:03 128.90.50.143美國(guó) GET /uc_server/admin.php?m=user&a=ls&sid=a81dES%2BIGlckLs%2FI9YxTKse7rnXscDo5JBBUv%2FAPnCg5hhR%2F1n%2B%2BHWfxfXMitxXdNE1JUB3ZLhGpNw
16:02:04 128.90.50.143美國(guó) 獲取uid1-23頭像,301表示有此ID,503表示nginx拒絕服務(wù),對(duì)方采集頻率太快了,同時(shí)還獲取了144113
16:02:12 128.90.50.143美國(guó) 開始對(duì)id2下手 GET /uc_server/admin.php?m=user&a=edit&uid=2&sid=d121PRUskoXvzQovCVw4aUbfLUm8YcvsW%2Fj91DlIebSlkbpZcY7vxltRrk5DxtAGuretTJdYNdqefA
16:02:19 128.90.50.143美國(guó) POST /uc_server/admin.php?m=user&a=edit&uid=2
16:02:22 128.90.50.143美國(guó) GET /member.php?mod=logging&action=logout&formhash=79c32065 此處退出的是Id 19嗎?
16:02:23 128.90.50.143美國(guó) GET /forum.php?mod=post&action=reply&fid=19&tid=1619
16:02:27 128.90.50.143美國(guó) POST /member.php?mod=logging&action=login&loginsubmit=yes&frommessage&loginhash=Lm4nk&inajax=1 以ID2身份登錄?
16:02:32 128.90.50.143美國(guó) GET /admin.php
16:02:36 128.90.50.143美國(guó) POST /admin.php? 這里有Post,注意與15:56:47對(duì)比
16:02:46 128.90.50.143美國(guó) GET /admin.php?action=plugins&operation=import&dir=dzapp_haodai 登錄成功了
16:02:47 128.90.50.143美國(guó) GET /admin.php?action=plugins&operation=import&dir=dzapp_haodai&installtype=
16:02:49 128.90.50.143美國(guó) GET /admin.php?action=plugins&operation=import&dir=dzapp_haodai&installtype=&license=yes
16:02:50 128.90.50.143美國(guó) GET /admin.php?action=plugins&operation=plugininstall&dir=dzapp_haodai&installtype=&pluginid=21
16:02:53 128.90.50.143美國(guó) POST /admin.php?action=plugins&operation=plugininstall&dir=dzapp_haodai&installtype=&pluginid=21&step=install&modetype=1
16:03:14 128.90.50.143美國(guó) POST /admin.php?action=plugins&operation=plugininstall&dir=dzapp_haodai&installtype=&pluginid=21&modetype=1&step=install&modetype=1
16:03:16 128.90.50.143美國(guó) GET /admin.php?action=plugins&operation=plugininstall&dir=dzapp_haodai&installtype=&pluginid=21&modetype=1&modetype=1&step=ok 安裝完畢
16:03:19 128.90.50.143美國(guó) GET /admin.php?action=plugins&hl=21
16:03:21 128.90.50.143美國(guó) GET /admin.php?action=plugins&operation=config&do=21&identifier=dzapp_haodai&pmod=admincp_callback
16:04:17 128.90.50.143美國(guó) POST /data/dzapp_haodai_config.php 注意,此處變換了agent,把自己偽裝成蜘蛛,要看效果了。
16:05:23 128.90.63.136美國(guó) 該IP第一次出現(xiàn),訪問(wèn)/data/phpbase64.php后門。錯(cuò)誤代碼403,沒有響應(yīng)
16:05:42 128.90.63.136美國(guó) 再次嘗試/phpbase64.php后門。錯(cuò)誤代碼403,沒有響應(yīng)
16:07:31 128.90.63.136美國(guó) 再次嘗試/api/1.php后門。錯(cuò)誤代碼403,沒有響應(yīng)
16:07:31 128.90.63.136美國(guó) 看了一眼主頁(yè),走了。該IP最后一次出現(xiàn),他嘗試地后門應(yīng)該是團(tuán)伙上次預(yù)留的,已經(jīng)不在了。
16:15:09 103.27.231.186新加坡 該IP第一次出現(xiàn),訪問(wèn)/data/sysdata/phpbase64.php后門。系統(tǒng)正常響應(yīng),代碼200.(美國(guó)的成員象是新手,放棄之后請(qǐng)新加坡的老手來(lái),一次就中,有可能這個(gè)后門就是這個(gè)老手留的。)
16:15:34 103.27.231.186新加坡 把后門地址從 phpbase64.php 改為 cache_filerise.php
16:16:42 103.27.231.186新加坡 把data目錄下的phpbase64.php后門刪除(這個(gè)位置的后門很可能是默認(rèn)位置,老手的習(xí)慣把默認(rèn)的后門刪除,給它換個(gè)地方)
16:17:05 103.27.231.186新加坡 進(jìn)入config目錄試圖通過(guò)修改config_ucenter.php掛入廣告,失敗。(權(quán)限收縮初見成效)
16:17:37 43.251.164.109新加坡 該IP第一次進(jìn)入訪問(wèn) data/sysdata/cache_filerise.php
16:17:49 43.251.164.109新加坡 POST數(shù)據(jù),可能在登錄后門,post了三次,密碼錯(cuò)了?
16:18:28 103.27.231.186新加坡 進(jìn)入uc_server目錄下的data目錄瀏覽文件沒有操作。
16:19:00 43.251.164.109新加坡 打開 function_core.php 文件修改
16:19:05 43.251.164.109新加坡 修改完畢提交
16:19:05 43.251.164.109新加坡 該IP最后一次出現(xiàn)
16:19:28 103.27.231.186新加坡 在source/function/cache目錄下上傳文件取名cache_homework.php
16:19:33 103.27.231.186新加坡 該IP最后一次出現(xiàn),驗(yàn)證cache_homework.php可以訪問(wèn)。(至此,cache_homework.php這條線斷了,再無(wú)人問(wèn)津,很可能是為下次攻擊埋的后門)
16:23:19 128.90.53.44美國(guó) 該IP第一次出現(xiàn) 打開 /data/sysdata/cache_filerise.php
16:23:29 128.90.53.44美國(guó) POST2次,可能密碼輸錯(cuò) 解密出的密碼是“ADMIN--”
16:23:45 128.90.53.44美國(guó) 依次進(jìn)入home、template目錄,可能發(fā)現(xiàn)沒有寫權(quán)限。
16:23:59 128.90.53.44美國(guó) 進(jìn)入data目錄 下的sysdata目錄
16:24:04 128.90.53.44美國(guó) 建立一個(gè)新的cache子目錄
16:24:20 128.90.53.44美國(guó) POST數(shù)據(jù),似乎是一個(gè)壓縮包
16:24:58 128.90.53.44美國(guó) 解壓ptbaiduxin.zip
16:28:03 128.90.53.44美國(guó) 打開 function_core.php 文件修改
16:28:13 128.90.53.44美國(guó) 修改完畢提交
16:29:41 128.90.53.44美國(guó) 打開 function_core.php 文件修改
16:29:52 128.90.53.44美國(guó) 修改完畢提交
16:30:10 128.90.53.44美國(guó) 偽裝成百度蜘蛛的身份測(cè)試效果
18:54:14 128.90.53.44美國(guó) 2個(gè)多小時(shí)后,又來(lái)測(cè)試效果,該IP最后一次出現(xiàn)。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 sumchina520@foxmail.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。