常見文件上傳驗證的繞過方式有:
JavaScript驗證繞過:JavaScript驗證就是所謂的客戶端驗證,也是最脆弱的一種驗證。直接修改數據包或禁用JavaScript即可繞過。
content-type驗證繞過:content-type驗證,最常見的是判斷content-type是否為image/gif。對于這種驗證直接修改數據包中的content-type為image/gif即可。
黑名單檢測繞過:黑名單檢測是常見的一種上傳驗證方式,不允許上傳黑名單中存在的擴展名,其安全性低于白名單檢測,對其的繞過方式也遠多于白名單檢測。
白名單檢測繞過:白名單檢測安全性遠高于黑名單檢測,僅允許上傳白名單所允許的幾種擴展名,因此黑名單中的大小寫混淆、特殊的擴展名等繞過方式對白名單檢測均無效。但仍可以用截斷上傳、解析漏洞、特別文件名構造對其進行繞過。
對危險擴展名POST檢測的繞過:在開發中,為了方便維護和更新,會先對擴展名進行驗證,如果上傳文件的擴展名為可執行腳本,便會對其POST的數據進行檢測,如果存在惡意代碼就會禁止上傳。而對于這類上傳檢測的繞過大致有這幾種思路,一是利用變種木馬繞過其檢測;二就是用包含文件對其進行繞過。
服務器目錄限制的繞過:有的Web應用程序本身對擴展名并沒有什么驗證,而是在服務器上對上傳目錄允許上傳的文件擴展名進行限制。而對于這類防御方法,如果能控制上傳路徑即能成功繞過了。
回答所涉及的環境:聯想天逸510S、Windows 10。
常見文件上傳驗證的繞過方式有:
JavaScript驗證繞過:JavaScript驗證就是所謂的客戶端驗證,也是最脆弱的一種驗證。直接修改數據包或禁用JavaScript即可繞過。
content-type驗證繞過:content-type驗證,最常見的是判斷content-type是否為image/gif。對于這種驗證直接修改數據包中的content-type為image/gif即可。
黑名單檢測繞過:黑名單檢測是常見的一種上傳驗證方式,不允許上傳黑名單中存在的擴展名,其安全性低于白名單檢測,對其的繞過方式也遠多于白名單檢測。
白名單檢測繞過:白名單檢測安全性遠高于黑名單檢測,僅允許上傳白名單所允許的幾種擴展名,因此黑名單中的大小寫混淆、特殊的擴展名等繞過方式對白名單檢測均無效。但仍可以用截斷上傳、解析漏洞、特別文件名構造對其進行繞過。
對危險擴展名POST檢測的繞過:在開發中,為了方便維護和更新,會先對擴展名進行驗證,如果上傳文件的擴展名為可執行腳本,便會對其POST的數據進行檢測,如果存在惡意代碼就會禁止上傳。而對于這類上傳檢測的繞過大致有這幾種思路,一是利用變種木馬繞過其檢測;二就是用包含文件對其進行繞過。
服務器目錄限制的繞過:有的Web應用程序本身對擴展名并沒有什么驗證,而是在服務器上對上傳目錄允許上傳的文件擴展名進行限制。而對于這類防御方法,如果能控制上傳路徑即能成功繞過了。
回答所涉及的環境:聯想天逸510S、Windows 10。