文件上傳繞過(姿勢大全)


*本文將主要說明:Web漏洞中的文件長傳繞過姿勢大全

 

在鵝廠復試中,面試官問到了web漏洞中的文件上傳繞過

要求:總結文件上傳的各種姿勢,以及方法。

本人菜雞一枚,支吾半天竟沒回答完整,目測緊張過度了。嗚嗚~

之后百度一搜,所謂一圖解憂愁啊!

上圖:

文件上傳漏洞各種姿勢大全

總結起來,文件上傳漏洞分兩種:

客戶端

原理:通過javascript來校驗上傳文件的后綴是否合法,可以采用白名單,也可以采用黑名單的方式。

判斷方式:在瀏覽加載文件,但還未點擊上傳按鈕時便彈出對話框,內容如:只允許上傳.jpg/.jpeg/.png后綴名的文件,而此時並沒有發送數據包。

客戶端的校驗繞過:直接修改js代碼或者使用抓包的方法修改請求內容繞過,可以先上傳一個gif木馬,通過抓包修改為jsp/php/asp,只用這種方法來檢測是肯定可以繞過的。

服務端

原理:校驗請求頭 content-type字段,例如用PHP檢測。

通過自己寫正則匹配來判斷文件幻數(文件頭)內容是否符合要求,一般來說屬於白名單的檢測,常見的文件頭(文件頭標志位)如下:

文件加載檢測:一般是調用API或函數去進行文件加載測試,例如圖像渲染測試,當測試結果正常的時候才允許上傳

1、一次渲染(代碼注入)

2、二次渲染

后綴名黑名單校驗

后綴名白名單校驗

自定義:WAF校驗,即使用不同的WAF產品來進行過濾,通常是獨立與服務程序的一段中間程序或者硬件

服務端的驗校繞過:校驗請求頭content-type字段繞過,通過抓包來修改Http頭的content-type即可繞過。

  • 文件幻數(文件頭)檢測繞過:在木馬內容的前面插入對應的文件頭內容,例如:GIF89a ,更保險的方法是在可上傳的文件中插入木馬代碼,然后修改后綴
  • 文件加載檢測:通過例如加載文件進行圖像渲染的方式來測試,這個時候就一般需要在正常的文件中插入木馬代碼了,例如圖像,那么插入的代碼一般會放在圖像的注釋區,因此不會影響圖像正常渲染繞過這種檢測,此時可以使用工具(稱為插馬器)來進行插入,例如edjpgcom,或者直接用copy命令來合成也可以。當然這種檢測不一定能夠完全繞過
  • 后綴名檢測后綴黑名單檢測:找查blacklist(黑名單列表)的漏網之魚,例如
    • 大小寫:如果檢測的時候不忽略大小寫,那么可以改變后綴名的大小寫繞過
    • 擴展名:列表中如果忽略了某些后綴
    1. 能被解析的文件擴展名列表:
    2. jsp jspx jspf
    3. asp asa cer aspx
    4. php php php3 php4 pht
    5. exe exee
  • 后綴白名單檢測:白名單檢測還是會比黑名單強一點,常見的繞過方法有%00截斷,還有服務器的解析漏洞
  • %00截斷漏洞:如果存在這類漏洞,那么后綴名的檢測都可以繞過,此時我們可以如下命名一個上傳文件

解析漏洞:這類漏洞是本身服務器的中間件產生的,例如apache,nginx都被爆出過存在解析漏洞,存在解析漏洞的話,上傳的安全性幾乎就完全失去了

例如:
IS5.x-6.x解析漏洞
apache解析漏洞
nginx解析漏洞
IIS7.5解析漏洞
等等,后期再說吧

還有就是防火牆(WAF)的眾多繞過姿勢,后期再說。

文件上傳漏洞可以自己搭建靶機去實戰一下:

https://github.com/c0ny1/upload-labs

文件上傳繞過(姿勢大全)


免責聲明!

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



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