我們來分析下:
name來自 上存時候選擇文件名稱
type 是文件類型, 這個類型那裡來的呢?呵呵,這裡非常關鍵的。 很多時候,很多同人會認為,這個是服務器自動判斷生成的。 如果是這樣想,覺得也有可能。 php 封裝了上存,它自帶類庫好像可以的。 但是,反過來想想,你隨便選擇個什麼格式文件,都會有格式類型。這樣一想,我們推斷這個值,可能也來自用戶輸入的。 我們來抓包看看我們類型。
type值 也來自,用戶輸入值了。
size來自程序計算上存文件大小,這個是自動計算的。 相比我們都清楚的。
你說這麼多有啥樣呢?
想必有朋友開始問了,我上面分析上存文件格式 ,跟開發出現漏洞有什麼關聯呢。 其實,我們想想,上面說的,一個文件名稱name屬性,以及文件類型type屬性。 在我們上存文件,後端處理時候,會經常用到的。 作為開發者,在使用這2個變量,一定要繼續執行“一切輸入代碼是有害的”原則。你在使用時候,要把它當作,跟其它get,post 獲取變量一樣處理。 要檢測,過濾一切輸入變量。
我們經常做功能是,限定用戶輸入必須是某種格式文件,然後保存為該格式。分析到這裡,下面有很多需要繼續分析地方,今天先提出大綱。接下來會分析這樣常見3類上存漏洞。
1.使用用戶文件名,生成文件,特殊字符過濾不嚴格,導致文件生成出現漏洞
2.移動文件目錄時候,由於采用用戶傳入的文件名拼接,生成到錯誤目錄
3.相信用戶輸入type 類型,直接將用戶文件名保存為文件