WAF的正確bypass
本文屬i春秋的原創(chuàng)獎(jiǎng)勵(lì)計(jì)劃,未經(jīng)許可禁止轉(zhuǎn)載!
前言 半年前的我,手握各種WAF的bypass,半年之后的我。就把思路分享出來(lái)了。別問(wèn)我什么!問(wèn)了我也不會(huì)告訴你,我是沒(méi)事閑的!是不是好多人遇見(jiàn)WAF,就一陣頭大呢~今天我就開(kāi)車(chē)?yán)瞺大家快上車(chē)!
正文 測(cè)試環(huán)境
php:我使用的是 phpStudy
WAF:各種WAF的官網(wǎng)
測(cè)試思路 php的本地環(huán)境是用來(lái)檢測(cè)sql語(yǔ)句是否可以執(zhí)行。
WAF官網(wǎng)用來(lái)測(cè)試語(yǔ)句是否被攔截。
重點(diǎn) :
1.HTTP數(shù)據(jù)包的認(rèn)識(shí)。
2.充分利用數(shù)據(jù)庫(kù)的注釋功能。
3.有對(duì)WAF的構(gòu)造思路。
測(cè)試代碼 本地PHP存在注入漏洞的代碼:
<?
php$id = $_GET['x'];
$conn = mysql_connect('127.0.0.1','root','Lyy1314...');
mysql_select_db('ceshi',$conn);
$sql = "select * from user where id={$id}";
$cun = mysql_query($sql);
echo "< charset=utf-8>";while($row = mysql_fetch_array($cun))
{
echo "url:".$row['URL']."<br>";
echo "password:".$row['password']."<br>";
echo "<hr>";
}
mysql_close($conn);
echo "您當(dāng)前執(zhí)行的SQL語(yǔ)句:";
echo urldecode($sql);
?>
GET型注入測(cè)試 - 偽造HTTP數(shù)據(jù)包 GET型注入相對(duì)于POST注入來(lái)說(shuō),在某些方面是比POST注入bypass更輕松一些的。這是為什么呢?答案是因?yàn)镻OST數(shù)據(jù)包中也包含了GET包哦~我們可以通過(guò)偽造POST數(shù)據(jù)包的方式進(jìn)行GET注入。
也就是說(shuō),GET的類(lèi)型最少有三種,甚至更多的數(shù)據(jù)包類(lèi)型可以進(jìn)行注入。
如:POST、PUT、GET。
1.測(cè)試普通的GET型注入

可以發(fā)現(xiàn),上面成功接收到了GET數(shù)據(jù)包提交的數(shù)據(jù)。這是理所當(dāng)然的!
2.測(cè)試POST提交的GET型注入

從上面可以看出,POST數(shù)據(jù)包種,確實(shí)包含了GET的數(shù)據(jù)包。所以,在有些時(shí)候進(jìn)行Bypass測(cè)試時(shí),適當(dāng)?shù)母南聰?shù)據(jù)包類(lèi)型,也是可以的哦。
在360主機(jī)衛(wèi)士的之前版本中,POST提交只攔截POST的數(shù)據(jù),當(dāng)你利用POST數(shù)據(jù)包進(jìn)行GET注入時(shí),它是不會(huì)進(jìn)行攔截的哦~ GET型注入測(cè)試?yán)@過(guò)云鎖 - 偽造HTTP數(shù)據(jù)包 首先,我們?nèi)ピ奇i的官網(wǎng)進(jìn)行Bypass測(cè)試! 我們?cè)谠奇i官網(wǎng)的URL后面加入 and 1=1 進(jìn)行測(cè)試。
當(dāng)然,正如所料 100% 被攔截

一般情況,大家都會(huì)扭頭就走~ 那我們現(xiàn)在來(lái)偽造個(gè)POST數(shù)據(jù)包,進(jìn)行測(cè)試把~

正如我們期待的那樣,偽造數(shù)據(jù)包后,WAF就被一棍子打死了~ 有時(shí),即使我們偽造數(shù)據(jù)包后,仍過(guò)不了WAF,不要灰心,因?yàn)檫@個(gè)時(shí)候WAF的規(guī)則絕對(duì)比GET包的規(guī)則少哦~ GET型注入測(cè)試 - 合理構(gòu)造HTTP數(shù)據(jù)包 - 思路 在http數(shù)據(jù)包中每個(gè)參數(shù)中間都會(huì)用&符連接,那么我們可不可以利用這個(gè)&符號(hào)呢? 下面我們先來(lái)進(jìn)行本地測(cè)試!

我們發(fā)現(xiàn)即使 &符后面的參數(shù)被 /* 包含住,這可以被接收到。并沒(méi)有被注釋掉! 那是因?yàn)椋?/* 被HTTP當(dāng)成了參數(shù)a的值,而并不是當(dāng)成了注釋?zhuān)?有時(shí)候,我們可以利用這個(gè)方法,加其他的方法來(lái)bypass。
后記 挖WAF的bypass時(shí),一定要從多方面入手,編碼,協(xié)議,語(yǔ)句等,甚至有時(shí)都會(huì)利用系統(tǒng)的截?cái)啵?/p>
推薦大家買(mǎi)一本關(guān)于 HTTP協(xié)議 方面的書(shū)籍進(jìn)行閱讀,因?yàn)?,只有越接近底層,才能越了解它。最后從方方面面進(jìn)行繞過(guò)。
有編程功底的,可以思考一下WAF的編寫(xiě)方式,哪里容易出現(xiàn)漏洞等~比如我們常常用來(lái)截?cái)辔募?00,在安全狗中卻能截?cái)喟踩穼?duì)HTTP協(xié)議的檢測(cè)。比如菜刀過(guò)狗時(shí),EVAL%00()是不會(huì)被殺的!不要只靠別人!思路是你自己的!你學(xué)到的知識(shí)也是屬于你自己的!
相關(guān)文章
詳解Laravel5.6通過(guò)路由進(jìn)行API版本控制的簡(jiǎn)單方法
這篇文章主要介紹了詳解Laravel5.6通過(guò)路由進(jìn)行API版本控制的簡(jiǎn)單方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
YII2框架自定義全局函數(shù)的實(shí)現(xiàn)方法小結(jié)
這篇文章主要介紹了YII2框架自定義全局函數(shù)的實(shí)現(xiàn)方法,總結(jié)分析了YII2框架自定義全局函數(shù)相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2020-03-03
支付寶接口開(kāi)發(fā)集成支付環(huán)境小結(jié)
本文主要給大家分享的是在做支付寶接口開(kāi)發(fā)集成支付環(huán)境的全過(guò)程,非常的詳細(xì),搭配示例代碼,是篇非常不錯(cuò)的文章,這里推薦給大家,有需要的小伙伴參考下。2015-03-03
ThinkPHP中Widget擴(kuò)展的兩種寫(xiě)法及調(diào)用方法詳解
這篇文章主要介紹了ThinkPHP中Widget擴(kuò)展的兩種寫(xiě)法及調(diào)用方法,詳細(xì)分析了Widget擴(kuò)展的寫(xiě)法及相應(yīng)的調(diào)用技巧,需要的朋友可以參考下2017-05-05
thinkPHP線(xiàn)上自動(dòng)加載異常與修復(fù)方法實(shí)例分析
這篇文章主要介紹了thinkPHP線(xiàn)上自動(dòng)加載異常與修復(fù)方法,結(jié)合實(shí)例形式分析了針對(duì)服務(wù)器代碼不支持斜杠方式的情況下相關(guān)處理技巧,需要的朋友可以參考下2016-12-12
laravel 數(shù)據(jù)驗(yàn)證規(guī)則詳解
今天小編就為大家分享一篇laravel 數(shù)據(jù)驗(yàn)證規(guī)則詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10
php 實(shí)現(xiàn)301重定向跳轉(zhuǎn)實(shí)例代碼
本文主要介紹php 實(shí)現(xiàn)301重定向跳轉(zhuǎn),通過(guò)實(shí)例代碼讓大家更好的理解重定向的方法,有需要的小伙伴可以參考下2016-07-07
thinkPHP使用post方式查詢(xún)時(shí)分頁(yè)失效的解決方法
這篇文章主要介紹了thinkPHP使用post方式查詢(xún)時(shí)分頁(yè)失效的解決方法,通過(guò)使用JavaScript動(dòng)態(tài)修改頁(yè)面元素結(jié)合thinkPHP查詢(xún)語(yǔ)句解決分頁(yè)失效的問(wèn)題,需要的朋友可以參考下2015-12-12

