當(dāng)選擇中級(jí)防御的時(shí)候银舱,再像低級(jí)防御那樣直接上傳PHP腳本,發(fā)現(xiàn)不給上傳了跛梗。
那么寻馏,作為攻擊者,又不知道網(wǎng)站源碼是什么核偿,該怎么辦诚欠?
只能簡(jiǎn)單分析一下幾種情況,分析網(wǎng)站過(guò)濾的機(jī)制漾岳。
比如:(只是猜測(cè))
1.網(wǎng)站開發(fā)者轰绵,根據(jù)文件名后綴來(lái)過(guò)濾。那么尼荆,作為攻擊者就可以修改數(shù)據(jù)包中的文件名來(lái)嘗試上傳左腔。
2.網(wǎng)站開發(fā)者根據(jù)上傳文件的類型來(lái)判斷,將不符合規(guī)定類型的過(guò)濾掉捅儒。那么液样,攻擊者是不是可以通過(guò)修改數(shù)據(jù)包的文件類型來(lái)欺騙,達(dá)到上傳文件的目的呢巧还?
3.網(wǎng)站開發(fā)者根據(jù)文件名后綴鞭莽,文件類型,文件大心(圖片文件大小肯定有個(gè)范圍)進(jìn)行過(guò)濾撮抓。那么攻擊者該如何思考?
在不知道源碼的情況下摇锋,只能嘗試各種可能丹拯,來(lái)繞過(guò)網(wǎng)站開發(fā)者的過(guò)濾機(jī)制。
由于荸恕,修改文件后綴會(huì)使得我們的腳本不能正常運(yùn)行乖酬,所以,我就修改了文件類型為image/jpeg融求,提示上傳成功咬像。然后weevely連接上傳的后門。
雖然修改了類型就上傳成功了生宛,但是一個(gè)漏洞里面可以學(xué)到的東西太多了县昂。因此,我抓包來(lái)比較陷舅,為什么jpeg文件上傳能成功倒彰,原本的php腳本必須得修改類型才能上傳成功。
凡事兩個(gè)包不同的地方莱睁,都被標(biāo)注了出來(lái)待讳。那么就是說(shuō)芒澜,只要將數(shù)據(jù)包做一些修改,就有很大的可能性上傳成功创淡。
既然已經(jīng)成功上傳后門痴晦,并且連接上去了,那么接下來(lái)琳彩,就要查看網(wǎng)站開發(fā)者的源代碼了誊酌,來(lái)看一下網(wǎng)站開發(fā)者到底存在什么失誤,使用了什么邏輯露乏,才導(dǎo)致攻擊者乘虛而入术辐。
邏輯很簡(jiǎn)單,就是看你類型是否滿足要求施无,大小是否滿足辉词,只要滿足這兩點(diǎn),就可以上傳猾骡。因此瑞躺,攻擊者修改了數(shù)據(jù)包的文件類型后,就上傳成功了兴想。
現(xiàn)在幢哨,我將防御等級(jí)調(diào)成高級(jí)防御。然后嫂便,我依舊利用這種小方法捞镰,修改我的數(shù)據(jù)包類型,去欺騙他毙替,但是岸售,這時(shí)候發(fā)現(xiàn),上傳失敗了厂画。意思就是說(shuō)凸丸,修改類型這一招對(duì)高級(jí)防御不管用。
至于為什么不管用袱院,得看高級(jí)防御代碼是怎么寫的屎慢。這個(gè)后面再解析。但是忽洛,現(xiàn)在就有這么一個(gè)套路腻惠,將一個(gè)后門文件追加到正常的圖片文件后面,相當(dāng)于融合到圖片文件后面欲虚,然后再去上傳圖片文件集灌。
命令:
cat file1 >> file2 ? ?將file1內(nèi)容追加到file2后面
可是!上傳的圖片文件無(wú)法執(zhí)行shell的作用苍在。绝页。。就相當(dāng)于file.php.jpeg這樣的文件格式寂恬。無(wú)法當(dāng)做php腳本運(yùn)行续誉。難道這就沒(méi)用了嗎?不初肉,依舊有用酷鸦。只不過(guò)需要相關(guān)的命令注入漏洞來(lái)利用!
比如說(shuō)牙咏,我這個(gè)特殊的圖片文件上傳成功了臼隔,我雖然目前無(wú)法使用,但是只要管理員不刪除我這個(gè)文件妄壶,那么這個(gè)隱藏的炸彈始終存在摔握,只是差了一個(gè)引爆器。什么是引爆器丁寄?就是類似命令注入漏洞這樣的引爆器氨淌,若是又找到了命令注入漏洞,那么就可以利用命令注入來(lái)修改我們上傳好的PHP腳本伊磺,使他成為真正的PHP后門腳本盛正。這樣,再利用weevely來(lái)遠(yuǎn)程連接即可屑埋。(理論上可行豪筝,實(shí)際上還需要其他的輔助手段,本人新手摘能,還未接觸)
但是续崖,但是防御者有一個(gè)非常非常好,還不用進(jìn)行代碼審計(jì)的辦法团搞。那就是權(quán)限設(shè)置袜刷!只要防御者將上傳的文件目錄權(quán)限,全部改成只讀莺丑,那么即使上傳了腳本又能如何著蟹?完全無(wú)法運(yùn)行。不過(guò)梢莽,估計(jì)這樣會(huì)影響網(wǎng)站的運(yùn)行萧豆。(猜測(cè))
最后,解析一下高級(jí)防御漏洞的源代碼:
擴(kuò)展知識(shí):fckeditor 漏洞 ? 對(duì)于上傳漏洞的一種擴(kuò)充知識(shí)昏名,可以讓上傳漏洞學(xué)得更好涮雷。