web安全之文件上傳漏洞

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

一、漏洞成立的條件

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

二、常見防御措施及軟肋

1、在前端驗證文件擴展名

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

(1)客戶端禁用JS腳本

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

(2)通過抓包改包方式

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

2、在服務端驗證文件類型

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

3、在服務端驗證文件后綴名

(1)黑名單校驗

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

(2)白名單校驗

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

A:0x00 截斷繞過

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

B:解析/包含漏洞繞過

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

4、在服務端驗證文件內容

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

(1)制作圖片馬

(2)文件幻術頭繞過

三、總結

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

1、上傳后的文件最好不可執行。

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

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

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