网络安全从入门到精通(第十章-5) Bypass - 绕过Waf(上)

本文内容:
			~什么是bypass
			~Waf检测机制
			~常见绕Waf手法
			~建议
每日一次:
			一定要在合法的情况下进行渗透测试,不要越界!!!

一、什么是bypass?

0,安装安全狗
		
		没啥说的,直接百度安全狗,下载安装
	
		注意的是:安装狗的时候,PHP study运行模式一定要跳到“系统服务”

1,什么是Waf
		WAF是一个缩写,他的全名叫做Web应用防护系统(Web Application
		Firewall),是通过通过执行一系列针对HTTP/HTTPS的安全策略来
		专门为Web应用提供保护的一款产品。

		在互联网快速发展的今天,网站安全问题屡见不鲜,
		于是乎WAF类产品开始走红。
2,Waf分类
		~硬件Waf
			较贵,这样的网站,尽量还是避免。除非拿到授权
		~软件Waf
			常见:安全狗、云锁、悬镜、护卫神、云盾
			
		Waf的核心就是正则匹配

3,Bypass是什么?
		Bypass他就是绕过的意思呀,我们渗透测试人员通过特殊语句的构建
		进行渗透测试,然后达到绕过WAF的手法

二、Waf检测机制

1,Dom型 XSS的绕过
		~原理就是Waf不会解码
			//Xss的常用编码是native

2,先了解的知识
		记住一句话,安全和客户体验都是需要平衡的,
		特别是对于WAF而言,你想想,用了WAF之后,然后网页动不动就拦截,
		比如我是用户,然后因为我用户名叫and然后我就被拉黑了,
		因为我不小心输了个'页面就出问题,这个当然不可以,
		
		所以WAF一般都是通用的,并不是单独定制的,既然是通用的,
		那么他在拦截上会比较谨慎,所以WAF的正则一般是搭配式的。

三、常见绕Waf手法

1,and 与 1=1一般是拦截的
		~但是and  可以试试-1 = -1,若返回正常
		~接着在		试试-2 = -1	,若报错,则说明,这存在注入点

2,数据库的逻辑符号
		& 的作用和 and  就差不多
		我们可以试试 & 1=1或者& 1=2	//当然换成负数也行
		
		但是 “&” 在url中特殊的含义,所以服务器有时候会搞不清
		这个时候  我们只需要对 “&” 进行url编码

3,更简单的
		我们直接试试“+、-、*”等等运算符号
		一半“-”被执行,直接运行“*”
		
		比如:id=1*1	//看看返回是否正常,正常的话
			在id=1*0	//这个时候若返回异常,则这个页面基本存在sql注入
			
			或者试试id=1*2  与	id=2页面是否相等

4,绕waf的时候不要想着编码select等等,
		服务器怎么之后你是对select编码呢
		做什么事,你得有一定得道理
		
		编码绕过是waf是很少见的
		
5,mysql的内联注释	
		~什么是内联注释?
			内联注释是MySQL为了保持与其他数据兼容,
			将MySQL中特有的语句放在/!...*/中,
			这些语句在不兼容的数据库中不执行,
			而在MySQL自身却能识别,执行。
			
			
			补充:
					/**/		数据库注释	
						
					/*!/		内联注释	-->		这是可以运行的
					
					/*!50001*/	
			//表示数据库版本>=5.00.01时中间的语句才能被执行
			//所以有的版本被狗拦截,我们打开burp稍微爆破配合本地mysql
			//验证一下  直接会发现  漏网之鱼不是一般的多
			
	说明:Waf一般默认注释的东西是安全的,即很多东西不进行拦截
			
5+,内联注释可以套内联注释
		写入联合语句,被狗拦截,可以稍微减去点语句,看看是什么被拦截了
		
6,简单总结补充
		大小写绕过 (很老的WAF才有用)

		替换绕过 (很老的WAF才有用)【和上传文件那个pphphp一样】

		特殊字符绕过 (%0a换行)``

		编码绕过 (比如会多次解码的东西,例如我们DOM XSS绕狗那个)

		等价替换 (利用其它函数替代)[union #%0aselect 拦截][union all #%0aselect 不拦截]
			//需要一定的数据库功底

		容器特性(例如Apache的Hpp,或者是IIS的%分割)
			IIS的容器:
				s%e%l%e%c%t ==>  select
			apache容器:
				url id=1&id=2	//显示出id=2的内容,这类似覆盖的意思
				
				利用这一特性:
			url id=1/*&id=2 union select 1,2 from admin limit 1,1 %23*/
				//%23即#		这其实也算是参数污染
				
		白名单(管理员权限或者是127.0.0.1本地访问不拦截)
			可以X-Forwarded-For伪造IP,简称XFF,代表客户端的真实IP
			
		缓冲区	(数据太多了,超出了WAF检测的范围)
			简单说,Waf仅仅是个门卫,不敢随意丢弃你发送给服务器的数据
			但是数据太多,他也不能一一的检查完毕,所以仅仅检测开头的一些
			数据,对后边的数据直接放行
			
			至于多少数据会溢出,这得自己检测了:
			
			burp,抓包,在下边直接添加数据-->  
				id=2 /*很多字符*/ union select 1,2 from admin limit 1,1
				填充字符一般4000多长度就可以了
			
			对于get的方法,也可以在下边直接加数据,因为post传参的优先级
			比get要高在很多网页	//可以自己测试 get id=1,下边post id=2
			//看看返回界面是id=1,还是id=2
			
	注意:
		~在多说一下,并不是填充的越多越多,有的太多,数据库执行不了了
		~get那传参长度是有限制的,所以。。。

四、建议

1,有很多同学有自己的想法
	
		建议自己去挨边的试试,有想法就去做
		
		下载一个win server 200x 的安装一个狗,自己多试
		
2,多说一下
		有些同学看到有的网站有狗,开始按照上边的方式去测试
		还说,IP被Ban了怎么办
		。。。。。。你们不会在自己的虚拟机上搭建狗,进行测试吗
		等测试成功了,就一条语句打出去,怎么会被Ban掉IP
		
		知识要活学活用~~~
原创文章 61 获赞 13 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43970718/article/details/104532980