文件上傳的一些繞過方法

文件上傳漏洞所需的條件

一是文件可上傳(感覺這一句是廢話)。

二是上傳文件路徑可知,如果路徑不可知就沒法訪問,亦無法配合諸如文件包含漏洞進行文件執行。

三是上傳文件可以被訪問。

四是上傳文件可以被執行,當然這一步也不是必需的,比如配合文件包含漏洞。

繞過姿勢

文件上傳校驗姿勢

  • 客戶端javascript校驗(一般只校驗後綴名)
  • 服務端校驗
    • 文件頭content-type字段校驗(image/gif)
    • 文件內容頭校驗(GIF89a)
    • 後綴名黑名單校驗
    • 後綴名白名單校驗
    • 自定義正則校驗
  • WAF設備校驗(根據不同的WAF產品而定)

0X00:前端js檢查後綴名

(1)、禁用瀏覽器端的js功能

直接刪除代碼中onsubmit事件中關於文件上傳時驗證上傳文件的相關代碼。

(2)、Firebug修改源碼                 

直接更改文件上傳JS代碼中允許上傳的文件擴展名你想要上傳的文件擴展名。

(3)、Burpsuite抓包修改後綴名

(4)、本地表單提交

0X01:服務端MIME類型檢測 contentType

Burpsuite抓包修改contentType的值

0X02:目錄路徑檢測

(1)、用0x00進行截斷(php5.3.4以下+magic_qoute_gpc爲off時,魔術符號會將 ’、”、null(%00)加反斜槓轉義 )

(2)、在路徑中設置一個.asp的文件,利用解析漏洞(IIS6.0+ASP解析漏洞)

將path變量的值改爲x.asp

當文件夾名爲XX.asp時,文件夾中的文件都會以asp的格式來解析,這是利用了IIS的解析漏洞

0X03:服務端擴展名檢測

(1)、基於黑名單的檢測

A、文件名大小寫繞過

B、名單列表繞過 asp格式的,黑名單裏面沒有asa cer的

C、特殊文件名繞過

x.asp_ 下劃線爲一個空格(需要在burp裏面改以繞過驗證),windows會自動去掉後面的點和空格

D、0x00截斷繞過

asp 程序有此漏洞 x.asp_.jpg(下劃線爲00截斷符) 檢測時gettype()從後往前,判定爲jpg,保存時一00截斷符爲界,將asp最爲後綴名存入。

E、htaccess文件重寫

重寫過濾規則,允許asp格式的

(2)、基於白名單的

A、0x00截斷繞過

B、解析調用/漏洞繞過                     

5、服務端文件內容檢測

0X03:文件內容檢測

(1)、文件幻數檢測(文件頭)

JPG :FF D8

GIF:47 49 46

PNG:89 50 4E

在幻數後面加上自己的一句話就可

(2)、文件相關信息檢測

圖像文件 getimagesize() 只需要僞造好文件頭就可 在文件首部加入GIF89a

(3)、文件加載檢測

代碼注入繞過:找一個空白區進行代碼的填充

解決方案

1、文件上傳的目錄設置爲不可執行

2、判斷文件類型:強烈推薦白名單方式。此外,對於圖片的處理,可以使用壓縮函數或者resize函數,在處理圖片的同時破壞圖片中可能包含的HTML代碼。

3、使用隨機數改寫文件名和文件路徑:一個是上傳後無法訪問;再來就是像shell.php.rar.rar和crossdomain.xml這種文件,都將因爲重命名而無法攻擊。

4、單獨設置文件服務器的域名:由於瀏覽器同源策略的關係,一系列客戶端攻擊將失效,比如上傳crossdomain.xml、上傳包含Javascript的XSS利用等問題將得到解決。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章