不安全的文件上傳漏洞概述php
文件上傳功能在web應用系統很常見,好比不少網站註冊的時候須要上傳頭像、上傳附件等等。當用戶點擊上傳按鈕後,後臺會對上傳的文件進行判斷 好比是不是指定的類型、後綴名、大小等等,而後將其按照設計的格式進行重命名後存儲在指定的目錄。 若是說後臺對上傳的文件沒有進行任何的安全判斷或者判斷條件不夠嚴謹,則攻擊着可能會上傳一些惡意的文件,好比一句話木馬,從而致使後臺服務器被webshell。 web
因此,在設計文件上傳功能時,必定要對傳進來的文件進行嚴格的安全考慮。好比:
--驗證文件類型、後綴名、大小;
--驗證文件的上傳方式;
--對文件進行必定複雜的重命名;
--不要暴露文件上傳後的路徑;
--等等...shell
1.嘗試上傳php一句話,windows
2.把php一句話後綴改成圖片的後綴,好比jpg、png,繼續上傳並抓包安全
3.把.jpg後綴改成php後發包,上傳成功服務器
1.嘗試上傳php一句話,函數
2.改jpg後綴,抓包,改php後綴,發包,網站
3.其實這裏是應該是經過白名單的限制,根據提示來看,能夠經過修改mime類型繞過的,burpsuite裏面改包上傳ui
此處改成image/jpegspa
發包,上傳成功,
1.代碼對MIME類型也進行了驗證,但這都是小問題,在下面咱們發現了它經過了getimagesize()函數進行獲取了圖片信息,驗證了上傳圖片是不是假圖片而且限制了上傳大小不能超過50kb,而且對上傳後的文件名進行了重命名操做。
2.首先咱們須要修改木馬文件,在文件前面添加GIF89a從而欺騙繞過getimagesize函數,也能夠經過在windows的dos界面進行圖片以及php合併。
3.利用本地包含漏洞include.php?filename=../../unsafeupload/uploads/2020/02/22/2455306d6b5aec7d419826309450.jpg可運行馬