在網(wǎng)絡(luò)安全行業(yè)中,常見的漏洞有很多,其中包括SQL注入漏洞、文件上傳漏洞、目錄遍歷漏洞、文件包含漏洞、命令執(zhí)行漏洞、跨站腳本漏洞等,那么什么是文件上傳漏洞?本文為大家重點(diǎn)介紹一下。
什么是文件上傳漏洞?
文件上傳漏洞是指用戶上傳了一個(gè)可執(zhí)行的腳本文件,并通過(guò)此腳本文件獲得了執(zhí)行服務(wù)器端命令的能力。常見場(chǎng)景是Web服務(wù)器允許用戶上傳圖片或者普通文本文件保存,而用戶繞過(guò)上傳機(jī)制上傳惡意代碼并執(zhí)行從而控制服務(wù)器。
可以看出來(lái)這種攻擊的危害很大,攻擊者一旦拿到服務(wù)器權(quán)限,就必然天下大亂。
文件上傳漏洞的預(yù)防方法
、倏蛻舳诵r(yàn)文件名:在客戶端使用JS腳本判斷上傳的文件名是否在白名單之內(nèi),如果不符合直接拒絕上傳。但是這種校驗(yàn)很容易讓攻擊者繞過(guò),比如說(shuō)攻擊者可以禁用JS,也可以先上傳一個(gè)分發(fā)的文件名,讓后將請(qǐng)求截住,手動(dòng)將文件名改成非法的文件名。所以光前端進(jìn)行校驗(yàn)是遠(yuǎn)遠(yuǎn)不夠的,還需要后臺(tái)一同進(jìn)行校驗(yàn)。
、诜⻊(wù)端文件名校驗(yàn):上面提到攻擊者可以繞過(guò)前端校驗(yàn),所以還需要后臺(tái)一起校驗(yàn)文件名是否在白名單內(nèi)。但是光校驗(yàn)文件名的攻擊者還是能有辦法繞過(guò)。比如說(shuō)0x00截?cái),因此還需要其他手段進(jìn)行進(jìn)一步校驗(yàn)。
、畚募^校驗(yàn):查看上傳過(guò)來(lái)的文件的文件頭是否和擴(kuò)展名匹配。這種方式一定程度上能降低文件上傳成功的概率。但是個(gè)人覺(jué)得最穩(wěn)妥的預(yù)防方法還是以下幾種。
④將上傳上來(lái)的文件和Web服務(wù)器隔離,專門存放到一臺(tái)文件服務(wù)器上,通過(guò)文件ID來(lái)訪問(wèn)。如果非要將文件存放在Web服務(wù)器一起,可以將存放文件的文件夾的可執(zhí)行權(quán)限去掉。
、輰⑸蟼鞯奈募M(jìn)行隨機(jī)重新命名。