上傳文件漏洞(上傳繞過)


0x00 漏洞概述

任意文件上傳漏洞主要是由於程序員在開發文件上傳功能時,沒有考慮對文件格式后綴的合法性進行校驗或只考慮在應用前端(Web 瀏覽器端)通過 javascript 進行后綴校驗,攻擊者可上傳一個包含惡意代碼的動態腳本(如 jsp、asp、php、aspx 文件后綴)到服務器上,攻擊者訪問該腳本時服務器將對包含惡意代碼的動態腳本解析,最終執行相應的惡意代碼。該漏洞最終將可能直接影響應用系統的服務器安全,攻擊者可通過所上傳的腳本完全控制服務器。

 

0x01測試方法

對文件上傳頁面進行測試,有多種上傳測試方式判斷是否存在任意文件上傳漏洞。

  

方式一:直接上傳

 在上傳過程中,直接選擇動態腳本后綴的文件,如 asp、php、jsp、aspx 等文件格式,觀察是否上傳成功。

方式二:繞過JS上傳

 當上傳頁面在前端采用 javascript 進行文件后綴限制時,可通過 HTTP 抓包工具進行改包上傳,如上傳  jpg  后綴,通過HTTP 抓包工具捕捉到以下請求數據包,將數據包的  filename  參數值從  oneword_pass.jpg  修改為  oneword_pass.php  並重新進行上傳提交即可繞過javascript 驗證。

 

 

 

方式三:截斷后綴上傳

 部分上傳功能在對后綴名進行驗證時存在缺陷,導致在文件寫入過程中產生錯誤,導致可通過十六進制截斷符(%00)對后綴進行截斷。如下圖,上傳處理時將對檢測到%00 並對.jpg 字符串進行截斷刪除,最終文件名為 oneword_pass.php 導致可成功上傳動態腳本到服務器上。

 方式四:繞過 Content-Type 檢查上傳

部分上傳頁面只對文件類型進行驗證,導致可通過改包的方式上傳動態腳本到服務器上。如下圖,通過修改 Content-Type 的參數值為 image/jpg,程序將認為本次提交的為圖片格式類型,並不進行后綴驗證,最終成功繞過 Content-Type 檢查上傳動態腳本到服務器上。

 

0x02防護思路

1、前端,加強文件檢查過濾,相關強度可以參考DVWA等級源碼。

2、過程中,針對上傳文件進一步做處理,如圖片的價水印、縮略圖,無異常后才保存到后台;針對文件命名做限制,須由系統生成,不允許用戶自定義。

3、后台,限制上傳文件目錄無法直接訪問,設置該目錄不解析jsp等腳本語言。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM