WAF繞過
safedog
BT(寶塔)
XXX云盾
寶塔過濾的比安全狗厲害一些,在真實情況下現(xiàn)在很多網(wǎng)站都是用寶塔
上傳參數(shù)名解析:明確哪些東西能修改?
Content-Disposition: 表單數(shù)據(jù),一般可更改
name:表單參數(shù)值,不能更改,改完之后,數(shù)據(jù)包是有問題的,跟前端的表單值會對不上,這樣后端會無法判斷你上傳的地方,如果要更改,那前端得跟著一起更改
Filename:文件名,可以更改,但是更改的意義不大
Content-Type:文件MIME,視情況更改,如果對方是mime判斷的話,修改之后可以達到繞過,那如果對方不是的話,那更改的意義就不是很大了
防護軟件通過數(shù)據(jù)包文件里面的代碼(用我們記事本打開看到的文件代碼)里面是否存在后門判斷出我們上傳的數(shù)據(jù)包有問題,從而進行攔截的
代碼的變異是我們后面要學(xué)習(xí)的,我們這篇文章現(xiàn)在不講它
檢測有參數(shù)值的,后面有數(shù)據(jù)的,其中文件名是比較關(guān)鍵的,如果后綴寫成.php的,那絕對會被檢測到。它攔截你就是檢測到你php的關(guān)鍵字
我們常規(guī)的繞過思路,就是讓他檢測不到php,要么就是換一個腳本類型,然后這個腳本類型能夠執(zhí)行出php,兩個方法都行,因為我們最終目的是讓這個文件執(zhí)行出腳本的后綴。
采用ph p去繞過,是可以成功的,但是不會被后臺當(dāng)成一個腳本去執(zhí)行,這樣子也是不行的
我們可以使用php. 、php 去繞過,最后發(fā)現(xiàn)被安全狗給攔截了。
常見繞過方法:
數(shù)據(jù)溢出-防匹配(xxx…)
把數(shù)據(jù)搞大,數(shù)據(jù)量過多的話,程序會按照程序的寫法去里面找,但是數(shù)據(jù)太多了,程序也會有崩潰,或者匹配了多少條之后,他就找不下去了
有時候文件名過長的話,會把服務(wù)器搞崩;在form-data;那里添加大量的垃圾數(shù)據(jù),末尾結(jié)束記得加個;,進行繞過最后繞過防護,上傳腳本。
這是垃圾數(shù)據(jù)的一個典型情況,末尾是要加;,是有差異的。因為你加了;,默認name是一個表單,注意一下;不要在filename里面插,沒有任何意義
符號變異-防匹配(' " ;)
;代表的是一對一的關(guān)系,結(jié)束了。沒有帶雙引號的是程序自帶的東西,帶雙引號里面的就是不固定的,一般在程序里面,將單引號括起來的話,基本上在程序開發(fā)里面單引號和雙引號都可以。分號代表一個語句的結(jié)束,數(shù)據(jù)包截止的后面是沒有分號的,如果加一個分號,那就代表后面還有
就是很多東西,他都存在一個函數(shù)替換,這個單引號和雙引號,他能夠?qū)崿F(xiàn)的效果是一樣的,我們?yōu)槭裁床话褑我栕兂呻p引號呢,防護軟件可能檢測的是雙引號里面的東西,單引號的東西不檢測呢,測試了一下,發(fā)現(xiàn)還是攔截了
我們可以去掉一個單引號或者雙引號,相當(dāng)與沒有一個閉合,他會認為這個數(shù)據(jù)就是:.php,程序開發(fā)里面大家都知道,如果你把一些東西,沒有用單引號和雙引號括起來,會誤認為是一個函數(shù)或者程序里面一個自帶的東西,但是用雙引號括起來的話,會認為是一個字符串
防護軟件的匹配形式只能夠自己去測試,才能知道是什么形式,是"qq.php,還是qq.php,:qq.php,如果相當(dāng)于是第三種情況的話,我們就實現(xiàn)了繞過,那就是沒有匹配到,因為他匹配到的話,那他絕對會實現(xiàn)攔截
安全狗現(xiàn)在的匹配規(guī)則是匹配單引號、雙引號里面的東西,因為你不寫,他就能夠上傳成功,相當(dāng)于11.php沒有匹配到,因為他沒有接收到,他就繞過了,他如果接收到,絕對會攔截
在前面加可以繞過,在后面加就不能繞過,說明安全狗目前的匹配規(guī)則是取最后一個雙引號,然后把前面的取出來
我這個測試是沒有必要的,這只是說大家以后碰到同類的防護軟件,不管是安全狗還是寶塔,安全公司里面的產(chǎn)品,那么大家在研究的時候,也是這么個研究方法,大家不要自己繞過就繞過了,我們學(xué)的是研究的方法后期只要腦瓜子靈活一點,是沒有任何問題是可以繞過的,方法學(xué)不到,那講了也是白講,我希望大家學(xué)的是繞過的方法,以后自己就能做這個事情
繞過思路就是盡可能讓他找不到php就可以了
“x”.php,繞過成功,上傳的是.php,可以當(dāng).php執(zhí)行?;蛘?x"x.php,上傳成功是x.php,當(dāng)我們知道方法就非常好玩了。
數(shù)據(jù)截斷-防匹配(%00 ; 換行)
x.jpg;.php,它的意義是很明顯的,因為安全狗也是程序,當(dāng)它碰到截斷,也是會截斷的,后面的.php就沒有匹配到,最后上傳的后綴是.php就行了
換行相當(dāng)于代碼中有/n在中間了,如果程序當(dāng)中用/n來表示換行,數(shù)據(jù)包識別我們這種寫法,其實區(qū)塊傳輸和換行是一個原理
filename=“x.p
h
p”
重復(fù)數(shù)據(jù)-防匹配(參數(shù)多次)
代碼中匹配的遞歸循環(huán),對方在驗證你格式后綴的時候,如果他是單次驗證,就會造成pphpph繞過
最后一個是filename=“x.php”;就可以了。這不是垃圾數(shù)據(jù),垃圾數(shù)據(jù)會比這個多很多
filename=“Content-Disposition: form-data;name=“upload_file"x.php”,最后上傳成功了,因為安全狗認為x.php是沒有給filename的,但是他實際上是給了filename。借助原有數(shù)據(jù)包自帶的正常的東西,把他作為干擾條件寫到filename里面,就實現(xiàn)把x.php給繞過了。
/也可以做為一個條件去繞過,filename=”/jpeg;/x.php",/相當(dāng)于一個截斷,中間被注釋了
#Payload:
大量垃圾數(shù)據(jù)緩沖溢出(Content-Disposition,filename等)
filename=“x.php
filename='x.php
filename=“a.jpg;.php”;
filename=“a.php%00.jpg”
filename=“Content-Disposition: form-data;name=“upload_file”;x.php”
filename=“x.jpg”;filename=“x.jpg”;…filename=“x.php”;
filename=”/jpeg;/x.php"
filename=
"
x
.
p
h
p
"
通過這篇文章,讓大家明白研究的方法,我的研究方法就是不停的去測試,但是我們?nèi)y試總有一個先后順序,前提條件下,我們得知道什么東西能改,什么東西不能改,這個注入語句核心類是不能改的,改的話,這個語句是會出問題的,那么最終的效果也是不能達到。同樣的,我們在測試上傳繞過也是這么個道理,你一定要知道那些地方,你不能動他。動他這個數(shù)據(jù)包就會有問題,那些地方你就不能改,你要對能修改的地方使勁的進行修改,然后在測試的時候,把每個waf的東西給搞清楚,以后你在研究他的時候就很容易上手,安全狗是目前比較容易過的WAF,有些東西其實都是一樣的道理
搜索引擎搜索fuzz web字典
在做waf繞過的時候,fuzz是通常的一種方式
在filename=""這個地方加載字典進行變化,數(shù)據(jù)包發(fā)包量不要過大,不然安全狗的CC開關(guān)會直接封住你的IP。
這種就是全用工具去幫你跑,你就不要去思考問題,我們稱之為fuzz模糊測試,就是用大量可能性在這里不斷進行測試,其中抓到一種可以成功的可能,就完事了
假如你在入侵一個網(wǎng)站,你用100種方法去測試,F(xiàn)UZZ就是這么個情況文章來源:http://www.zghlxwxcb.cn/news/detail-695318.html
文件上傳安全修復(fù)方案
后端驗證:采用服務(wù)端驗證模式
因為前端可以禁用js腳本運行,就可以繞過了
后綴檢測:基于黑名單,白名單過濾
MIME檢測:基于上傳自帶類型檢測
內(nèi)容檢測:文件頭,完整性檢測
三種檢測都上,比別人更安全,相關(guān)代碼就幾個函數(shù),每個語言不一樣,有些寫的高級點的,就用面向?qū)ο蟮膶懛?,寫的低階寫個函數(shù)也行,在低階點的,就在上傳的那個點,寫一個過濾就完事了,參考如下:
自帶函數(shù)過濾:參考uploadlabs函數(shù)
getimage不上傳圖片就不會載入函數(shù),只有上傳圖片才可以,所以它從理論上,已經(jīng)把文件的屬性給定義了。
自定義函數(shù)過濾:function check file(){}
把黑白名單兩個都加在一起,既不是php,也不是jsp,他也必須是jpg,png常見的格式,這里可以搞雙重驗證,黑白兩個都加,自己去查一下資料,檢測傳過來的參數(shù)名的值,看一下里面有沒有關(guān)鍵字,php。
WAF防護產(chǎn)品:寶塔,云盾,安全公司產(chǎn)品等
其它語言也有相關(guān)函數(shù),都是可以舉一反三的
沒有上傳漏洞,再做繞過,始終是個0,沒有辦法判定是否存在上傳漏洞,只能去盲猜。你既不能保證是否有漏洞,還得去測試是否能夠繞過
前期一般是先繞過WAF,再去判定是否有上傳漏洞,因為你有時候去判定是否有上傳漏洞的時候,WAF已經(jīng)觸發(fā),也不知道能不能成功文章來源地址http://www.zghlxwxcb.cn/news/detail-695318.html
到了這里,關(guān)于24 WEB漏洞-文件上傳之WAF繞過及安全修復(fù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!