文件上传漏洞——DVWA练习
前言:文件上傳漏洞是很常見的漏洞,也非常有趣,接下來就在DVWA靶場中邊學邊練。
文件上傳漏洞:
文件上傳漏洞是指由于程序員在對用戶文件上傳部分的控制不足或者處理缺陷,而導致的用戶可以越過其本身權限向服務器上上傳可執行的動態腳本文件。這里上傳的文件可以是木馬,病毒,惡意腳本或者WebShell等。這種攻擊方式是最為直接和有效的,“文件上傳”本身沒有問題,有問題的是文件上傳后,服務器怎么處理、解釋文件。如果服務器的處理邏輯做的不夠安全,則會導致嚴重的后果。
具體的原理可以看大師傅的講解
Smi1e_——文件上傳漏洞 學習筆記
文件上傳漏洞
low級別
觀察源碼
通過對源碼的分析,我們發現沒有任何防護和限制,那就構造一句話木馬
進行上傳
根據相應的路徑進行菜刀連接即可
Medium級別
上傳剛才一句話木馬試一下,發現
只能上傳JPG或者是PNG,那就來查看一下源碼
通過分析源碼,發現只有這一段代碼進行了限制
if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&( $uploaded_size < 100000 ) )只能上傳jpeg或png的圖像,限制了大小,其他沒有任何防護,那就可以用
一句話木馬圖片
一句話木馬圖片的制作
一、建立一個bat文件,用記事本打開輸入cmd
二、將上傳的圖片和一句話php文件執行以下命令即可
發現一句話確實已經插入圖片中
上傳成功,用菜刀連接
結果連接不上去,這里我們上傳的是一張圖片,那對方服務器就認為我們上傳的是一張很正常的圖,因此只會當做圖片來解析,所以圖片里的php代碼不會被解析了,這里需要了解文件包含漏洞才能將圖片進行解析。因為文件包含漏洞也是很好玩的知識,這里就不詳細寫了,之后單獨總結出一篇博客來學習文件包含漏洞
我這里上傳的是3.jpg
在url地址欄中輸入
發現圖片已經被解析了,那么PHP代碼也肯定被服務器解析了,用菜刀進行連接
結果還是連不上去,發現有三行警告
做到這里實在連不上去,不知道是什么原因,這種方法就暫時先留到這,等找到解決方法了再繼續做
除下這種方法還可以用抓包修改文件的type
通過觀察這兩段代碼
只是限制了Content-Type,沒有限制后綴名,所以這里可以直接抓包修改Content-Type即可
發包,上傳成功
訪問成功
這里為了方便就不連接菜刀了,將一句話木馬改為
High級別
查看源碼
觀察源碼發現,代碼中增加了一段代碼
$uploaded_ext = substr( $uploaded_name, strrpos( $uploaded_name, '.' ) + 1);并且修改了這一段代碼
if( ( strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" ) &&( $uploaded_size < 100000 ) &&getimagesize( $uploaded_tmp ) )先來解讀一下第一段代碼,strrpos()函數查找.出現在$uploaded_name的位置然后加1,再利用substr()函數從變量$uploaded_name的指定位置截取部分字符串。所以這段代碼的作用就是為了截取上傳文件的后綴名
第二段代碼,strtolower()函數將無論是大寫或小寫的后綴名全改為小寫,以防大小寫繞過,并且getimagesize() 函數用于獲取圖像大小及相關信息,所以這里再用之前的php文件后綴名改為jpg或png就不可行了,不過也可以利用這個函數的漏洞進行繞過,既然對文件的開頭內容進行了檢測并且通過二進制識別是否為圖像,那么就可以利用文件頭欺騙,來讓getimagesize()函數檢測無效。
先了解一下常用圖片的文件頭標識
通過文件頭標識判斷圖片格式
文件頭欺騙
getimagesize() 函數在這里作用就是檢測是否為圖像的作用,這里就用最簡便的GIF的文件頭,在一句話木馬前加上GIF的文件頭標識
上傳
上傳成功,說明成功繞過
用文件包含來進行訪問
http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file:///D:\phpStudy1\PHPTutorial\WWW\DVWA\hackable\uploads\2.jpg但應該是我配置有問題,我的文件包含報錯,但這種方法沒錯
除此之外那,也可以上傳圖片馬,然后用文件包含進行解析,由于我這里配置的有問題就不再演示了,不過這種方法確實是可行的,看過許多大師傅們都是這樣做的
總結:雖然遇到了很多問題,不過也初步了解了文件上傳漏洞的原理和一些姿勢,接下來通過Upload-labs進行學習。
總結
以上是生活随笔為你收集整理的文件上传漏洞——DVWA练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件上传漏洞——upload-labs(
- 下一篇: 实验吧——SQL注入 Write up(