基於上傳漏洞的黑名單檢測繞過
【實驗目的】
通過本實驗理解黑名單檢測在上傳文件檢測時存在的缺陷,掌握體驗上傳漏洞服務器端黑名單檢測的繞過方式。
【實驗環境】
目標網站:上傳漏洞訓練平台(**第七關**)
滲透主機:burpsuitv1732 工具:Burpsuite
【實驗原理】
服務器端檢測源代碼如下圖
分析一下,綜合應用的檢測方法有:
(1)黑名單: array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
(2)strrchr() 函數查找字符在指定字符串中從后面開始的第一次出現的位置,如果成功,則返回從該位置到字符串結尾的所有字符。例如<?php echo strrchr( '123456789.xls' , '.' );?> 程序的輸出結果是:.xls。
(3)strtolower($file_ext)函數作用為將指定字符串轉換為小寫(通過后綴為Php大小寫繞過的方法就失效了)。
(4)str_ireplace('::$DATA', '', $file_ext)函數作用是去除字符串::$DATA。
(5)trim($file_ext)函數作用是首尾去空,將后綴名里的前后空格都去掉。
針對此實驗中黑名單檢測的繞過方法: windows有一個特性,windows系統自動去掉不符合規則符號后面的內容(比如新建了一個1.txt文件,然后你將名稱改為1.txt.,雖然警告報錯,但是windows還是會默認去掉后面的.,名字還是變成了1.txt)。
因此上傳xx.php.類型文件
strrchr函數會將上傳的文件名后綴處理為.php.,當上傳到win機器上時又會將后面的.去掉,然后后綴就又會被還原成.php,這樣php文件就可以執行了。
實驗步驟
第一步 啟動目標網站的網站
登錄靶機后,進入D:/phpstudy2018目錄,然后雙擊啟動phpStudy。
查看php版本:
如果勾選的不是5.2.17版本,則勾選該版本,然后服務器自動重啟。
查看magic_quotes_gpc狀態。
確保magic_quotes_gpc開關,處於關閉(OFF)狀態。
第二步 滲透主機將瀏覽器與burpsuit關聯,開啟代理抓包功能
第三步 上傳1.php文件並抓包,在burp修改文件后綴名為.php.
第四步 成功上傳php文件
【思考與總結】
通過本次實驗,成功實現了繞過黑名單檢測進行webshell的上傳與解析,我們重點要掌握上傳漏洞的攻擊方法以及防御措施。