從零開始的白帽子學習--stage1--常見漏洞類型介紹--part3--不安全的文件上傳

  • Q:什麼是文件上傳漏洞
  • A:文件上傳功能在web應用系統很常見,好比不少網站註冊的時候須要上傳頭像、上傳附件等等。當用戶點擊上傳按鈕後,後臺會對上傳的文件進行判斷 好比是不是指定的類型、後綴名、大小等等,而後將其按照設計的格式進行重命名後存儲在指定的目錄。 若是說後臺對上傳的文件沒有進行任何的安全判斷或者判斷條件不夠嚴謹,則攻擊着可能會上傳一些惡意的文件,好比一句話木馬,從而致使後臺服務器被webshell。因此,在設計文件上傳功能時,必定要對傳進來的文件進行嚴格的安全考慮。好比:驗證文件類型、後綴名、大小,驗證文件的上傳方式,對文件進行必定複雜的重命名,不要暴露文件上傳後的路徑等。
  • Q:文件上傳時校驗的姿式有哪些
  1. 客戶端JavaScript校驗客戶端校驗通常只檢查文件的後綴名,有白名單和黑名單
  2. 服務端校驗。服務端校驗又有多種校驗方式。如:文件頭中content-type校驗,文件內容頭校驗,後綴黑白名單檢查,自定義正則表達式檢查等
  3. WAF檢查
  • Q:繞過校驗的姿式有哪些php

  1. 對於客戶端校驗來講,禁止瀏覽器使用js
  2. 對於服務端校驗,大部分狀況下經過burp抓包便可繞過。檢查啥改啥就能夠了
  3. 對於WAF檢查,略
  • 靶場實驗

這裏以pikachu靶場爲例子來演示文件上傳漏洞web

此時,咱們能夠看到這裏只支持上傳圖片文件,不容許上傳其餘類型的文件,那麼咱們先上傳一下php文件嘗試一下(文件內包含一句話木馬),而後根據提示來肯定他是什麼類型的校驗方式。正則表達式

根據網站的報錯提示,查看相應的元素代碼以後發現這是一個js的彈窗。那麼咱們只須要禁用js就能夠繞開這個檢測。在禁用js刷新頁面以後,發現1.php文件就能夠正常上傳了shell

切換一下校驗的種類,切換到服務端校驗,選擇1.php文件,而後上傳。在上傳時使用burp抓包瀏覽器

 

 

網站提示上傳的格式不對。而後咱們上傳一個正常的,能經過網站檢測的文件,並使用burp抓包,對比先後兩次抓包數據的區別。這裏經過對比以後發現content-type有變化。安全

咱們再次嘗試上傳1.php文件,並在抓包後修改 content-type image/jpeg。而後將修改以後的數據包發送到burp的repeater中,模擬上傳,看可否經過服務器驗證服務器

 

ok了,模擬上傳成功了。那麼就說明這樣繞過檢測的姿式是正確的。網站

因爲本人學識有限,暫時就不實驗其餘的檢測方式和檢測方式,待往後補充spa

相關文章
相關標籤/搜索