本文內容:
- 文件上傳GetShell
1,文件上傳GetShell:
文件上傳簡介:
文件上傳漏洞通常由於代碼中對文件上傳功能所上傳的文件過濾不嚴或web服務器相關解析漏洞未修復而造成的。
文件上傳功能代碼沒有嚴格限制和驗證用戶上傳的文件后綴、類型、內容等,攻擊者可通過文件上傳點上傳任意文件,包括網站后門文件(webshell)控制整個網站。
漏洞危害:
惡意文件傳遞給解釋器去執行,之后就可以在服務器上執行惡意代碼,進行數據庫執行、服務器文件管理,服務器命令執行等惡意操作。
根據網站使用及可解析的程序腳本不同,可以上傳的惡意腳本可以是PHP、ASP、JSP、ASPX等文件。
有時文件上傳,可以結合文件包含漏洞去執行惡意腳本文件。
漏洞繞過:
使用BurpSuite進行抓包查看,如果可以抓包數據包為后端校驗,抓不到包可以證明是前端校驗,可以通過關閉JS的方式進行繞過:
假如經過判斷,發現是白名單進行校驗的:
利用:
00截斷或者%00截斷,如1.php00.png
條件競爭:
兩個(線程)同時去搶(資源),不知道到底哪個能搶到,此處便形成了競爭,
可以使用Burp去跑,一個瘋狂上傳,一個瘋狂訪問,就是和服務器刪除函數,進行競爭。
假如經過判斷,發現是黑名單進行校驗的:
利用:
1.文件上傳類型繞過:
php: php、 phtml、php3、php4、php5
jsp: jap、jspx、jspf
asp: asa、cer、aspx
ext: exee
2..htaccess文件繞過:
3.文件后綴大小寫繞過。
4.文件后綴(空/空格)繞過。
5.文件后綴(點)繞過。
6.Windows文件流繞過NTFS::$DATA利用windows特性,可在后綴名中加::$DATA 繞過。
7.構造文件后綴繞過,如php..
8.雙寫文件后綴繞過。如pphphp
測試過程[圖片是借的]:
1.進入某個網站的后台:
2.上傳可以上傳圖片的位置:
3.使用BurpSuite抓包,上傳文件:
4.通過拼接地址然后訪問大馬成功:
修復建議:
1.對上傳文件類型進行驗證,除在前端驗證外在后端依然要做驗證,后端可以進行擴展名檢測,重命名文件,MIME類型檢測以及限制上傳文件的大小等限制來防御,或是將上傳的文件其他文件存儲服務器中。
2.嚴格限制和校驗上傳的文件,禁止上傳惡意代碼的文件。同時限制相關上傳文件目錄的執行權限,防止木馬執行。
3.對上傳文件格式進行嚴格校驗,防止上傳惡意腳本文件;
4.嚴格限制上傳的文件路徑。
5.文件擴展名服務端白名單校驗。
6.文件內容服務端校驗。
7.上傳文件重命名。
8.隱藏上傳文件路徑。