DVWA全級別之File Upload(文件上傳)


File Upload

File Upload,即文件上傳漏洞,通常是由於對上傳文件的類型、內容沒有進行嚴格的過濾、檢查,使得攻擊者可以通過上傳木馬獲取服務器的webshell權限,因此文件上傳漏洞帶來的危害常常是毀滅性的,Apache、Tomcat、Nginx等都曝出過文件上傳漏洞。

 

 

 

 

 

 

 

Low

查看服務器核心代碼;

 

 

 

basename(path,suffix) 

函數返回路徑中的文件名部分,如果可選參數suffix為空,則返回的文件名包含后綴名,反之不包含后綴名。

可以看到,服務器對上傳文件的類型、內容沒有做任何的檢查、過濾,存在明顯的文件上傳漏洞,生成上傳路徑后,服務器會檢查是否上傳成功並返回相應提示信息。

 

件上傳漏洞的利用是有限制條件的,首先當然是要能夠成功上傳木馬文件,其次上傳文件必須能夠被執行,最后就是上傳文件的路徑必須可知

創建ztt1.php文件,內容輸入一句話木馬;

 

 

 

 

 

上傳成功,並且返回了上傳路徑

 

 

 

 

 

 

打開中國菜刀,右鍵添加,

地址欄填入上傳文件所在路徑http://192.168.17.111/DVWA-master/hackable/uploads/ztt1.php

參數名(一句話木馬口令)為ztt

 然后菜刀就會通過向服務器發送包含gxy參數的post請求,在服務器上執行任意命令,獲取webshell權限。

可以下載、修改服務器的所有文件

 

 

 

 

 

 

 

 

Medium

 

 

 

可以看到,Medium級別的代碼對上傳文件的類型、大小做了限制,要求文件類型必須是jpeg或者png,大小不能超過100000B(約為97.6KB)

 

方法一:文件包含+文件上傳

因為采用的是一句話木馬,所以文件大小不會有問題,至於文件類型的檢查,嘗試修改文件名為ztt1.png

 

 

 

啟用中國菜刀;

http://192.168.17.111/DVWA-master/hackable/uploads/ztt1.png

 

 

 

 

 

不幸的是,雖然成功上傳了文件,但是並不能成功獲取webshell權限,在菜刀上無論進行什么操作都會返回如下信息

 

 

 

中國菜刀的原理是向上傳文件發送包含apple參數的post請求,通過控制apple參數來執行不同的命令,而這里服務器將木馬文件解析成了圖片文件,因此向其發送post請求時,服務器只會返回這個“圖片”文件,並不會執行相應命令

那么如何讓服務器將其解析為php文件呢?我們想到文件包含漏洞。這里可以借助Medium級別的文件包含漏洞來獲取webshell權限,打開中國菜刀,右鍵添加,在地址欄中輸入

http://192.168.17.111/DVWA-master/vulnerabilities/fi/?page=hthttp://tp://192.168.17.111/DVWA-master/hackable/uploads/ztt1.png

參數名為ztt,腳本語言選擇php

 

 

 

 

 

 

 

 

 

 方法二:抓包修改文件類型(上傳ztt1.png文件,進行抓包)

 

 

 

 可以看到文件類型為image/png,嘗試修改filenameztt1.php

 

 

 

成功上傳。

 

打開菜刀,獲取webshell權限

http://192.168.17.111/DVWA-master/hackable/uploads/ztt1.php

 

 

 

 

 

 

 

方法三:截斷繞過規則

php版本小於5.3.4的服務器中,當Magic_quote_gpc選項為off時,可以在文件名中使用%00截斷,所以可以把上傳文件命名為ztt1.php%00.png

可以看到,包中的文件類型為image/png,可以通過文件類型檢查

 

 

 

 

 

 

 

 

 

 

 

High

查看服務器端核心代碼;

 

 

strrpos(string,find,start)

函數返回字符串find在另一字符串string中最后一次出現的位置,如果沒有找到字符串則返回false,可選參數start規定在何處開始搜索。

getimagesize(string filename)

函數會通過讀取文件頭,返回圖片的長、寬等信息,如果沒有相關的圖片文件頭,函數會報錯。

可以看到,High級別的代碼讀取文件名中最后一個”.”后的字符串,期望通過文件名來限制文件類型,因此要求上傳文件名形式必須是”*.jpg”、”*.jpeg” ”*.png”之一。同時,getimagesize函數更是限制了上傳文件的文件頭必須為圖像類型。

 

 

 

我們直接上傳一句話木馬,然后把文件名改為 ztt1.jpg

所以我們在文件頭部加上了jpg格式的 GIF89 

在文件頭部加了jpg格式的 GIF89 標識后成功上傳!

 

 

 

 

 

 

 

 

 


免責聲明!

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



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