web安全之文件上傳漏洞

文件上傳漏洞是指用戶上傳了一個可執(zhí)行的腳本文件,并通過此腳本文件獲得了執(zhí)行服務(wù)器端命令的能力。文件上傳功能本身是一個正常的業(yè)務(wù)需求,對于網(wǎng)站來說,很多時候也確實需要用戶將文件上傳到服務(wù)器。所以文件上傳本身沒有問題,但又問題的是文件上傳后,服務(wù)器怎么處理、解釋文件。如果服務(wù)器的處理邏輯做得不夠安全,則會導(dǎo)致嚴(yán)重的后果。----摘自《白帽子講WEB安全》

一、漏洞成立的條件

1、上傳的文件能夠被WEB容器解釋執(zhí)行。
2、用戶能夠從web上訪問這個文件。如果文件上傳了,但用戶無法通過web訪問,或者無法使得web容器解釋這個腳本,那么也不能稱之為漏洞。

二、常見防御措施及軟肋

1、在前端驗證文件擴(kuò)展名

? 通過這種方式的驗證,繞過方式有二:

(1)客戶端禁用JS腳本

? 禁用JS腳本,這就使得驗證文件的功能失效,用戶可上傳任意的文件。

(2)通過抓包改包方式

? 假如前端限制了只允許上傳png格式的文件。我們首先將一句話木馬文件后綴名更改為png后上傳。此時會繞過前端js的驗證,繞過驗證后,通過抓包,修改報文中文件名的后綴,使其還原。顯然,一句話木馬上傳成功。

2、在服務(wù)端驗證文件類型

? 在服務(wù)端驗證文件類型,一般是校驗Content-type字段的值。同樣,通過抓包改包可成功繞過其驗證。

3、在服務(wù)端驗證文件后綴名

(1)黑名單校驗

? 黑名單校驗方式極不靠譜,我們總會找到一些漏網(wǎng)之魚,也有可能存在一些大小寫繞過的方式。比如 aSp 和 pHp 之類的。

(2)白名單校驗

? 白名單校驗,其防御能力相對于黑名單校驗,要更安全,增加了攻擊者的攻擊難度。但是白名單也有其軟肋之處:如果服務(wù)器存在解析漏洞或截斷,則會成功觸發(fā)漏洞。如:

A:0x00 截斷繞過

? 用像test.asp%00.jpg的方式進(jìn)行截斷,屬于白名單文件。由于存在0x00,服務(wù)器會認(rèn)為是asp文件。

B:解析/包含漏洞繞過

? 這類漏洞直接配合上傳一個代碼注入過的白名單文件即可,再利用解析,包含漏洞。

4、在服務(wù)端驗證文件內(nèi)容

? 驗證文件內(nèi)容,加大了攻擊者的攻擊難度。但在一定條件下,也有繞過的可能。其繞過方式有二:

(1)制作圖片馬

(2)文件幻術(shù)頭繞過

三、總結(jié)

? 以上這些防御措施,如果在一定的限制條件下,是“安全的”。如果超過了安全邊界,則會變得那么不安全。對于文件上傳漏洞,我們只要知道它成立的條件,則可在一定程度上進(jìn)行防御。其總結(jié)如下:

1、上傳后的文件最好不可執(zhí)行。

2、更改上傳后的文件名,不與上傳之前的文件名相同。

3、如非必要,不要暴漏文件的訪問路徑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文件上傳漏洞是指用戶上傳了一個可執(zhí)行的腳本文件,并通過此腳本文件獲得了執(zhí)行服務(wù)器端命令的能力。這種攻擊方式是最為直...
    付出從未后悔閱讀 1,253評論 0 4
  • 什么是文件上傳漏洞? 文件上傳漏洞是指由于程序員在對用戶文件上傳部分的控制不足或者處理缺陷,而導(dǎo)致的用戶可以越過其...
    Smi1e_閱讀 25,282評論 0 24
  • 文件上傳漏洞: 1.本地驗證 本地驗證:客戶端本地通過前臺JS腳本進(jìn)行檢測。 原理: 當(dāng)用戶在客戶端選擇文件點(diǎn)擊上...
    xaviershun閱讀 1,456評論 0 1
  • 一、初步認(rèn)識 1.上傳功能:網(wǎng)站上各種可以上傳文件,圖片的地方可以被用作上傳點(diǎn)進(jìn)行非法上傳 2.上傳原理:在前端代...
    楠昭閱讀 1,827評論 1 11
  • 今天是4.9,自從4.5開始參加了樹豐老師的晨間思活動,一共要為期28天。 今日將前面五天的復(fù)盤下: Day1: ...
    阿蕾阿蕾蕾閱讀 175評論 1 0

友情鏈接更多精彩內(nèi)容