1、环境搭建:
DVWA+phpstudy+网站安全狗。
直接安装安全狗可能会遇到找不到apache服务的情况;
先停止apache,再安装apache服务:
安装完安全狗时输入刚注册服务时的apache2.4
下面的样子就是安装成功了。
拿dvwa的sqli模块进行测试,安全狗已经在拦截了:
2、分块传输测试
分块传输编码(Chunked transfer encoding)是超文本传输协(HTTP)中的一种数据传输机制,允许HTTP由网页服务器发送给客户端应用 (通常是网页浏览器)的数据可以分成多个部分。分块传输编码只在HTTP协议1.1版本(HTTP/1.1)中提供。
这里测试使用dvwa的存储型xss模块进行测试。现在直接请求肯定是被安全狗拦截的。
分块传输需要在http header中添加以下字段:Transfer-Encoding: chunked
表示本次请求使用分块传输
并将body内容进行分块:
每块的第一部分是该块的内容长度,第二部分是分块内容。
上图手动封装的body内容,可以看到已经正常提交了,但是注意看响应包 服务端并没识别;
查阅资料过程中,发现业内做的比较好的WAF已经可以识别直接分块传输的请求信息,这时可以在长度标志位后加分号进行注释
在长度后面加上;以及注释内容
再次测试顺利提交。
3、插件
3.1BurpSuite插件
使用burp插件提交测试下:插件地址https://github.com/c0ny1/chunked-coding-converter 可直接安装jar文件
右键选择encoding request body。使用分块传输插件封装请求body信息。
3.2 Sqlmap
这里测试使用洛米唯熊大佬改的sqlmap版本,增加了--chunk参数。https://pan.baidu.com/s/1xzkjewrOZp-gzuAvdsFEfw 密码:z0lq
好像只支持POST的,这里的dvwa是get的使用burp改下请求方法即可。
Host: 172.16.51.146
Upgrade-Insecure-Requests: 1
DNT: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://172.16.51.146/dvwa/vulnerabilities/sqli/?id=11&Submit=Submit
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7
Cookie: security=low; PHPSESSID=4ouef6ek87ejnb22plijms67j5; safedog-flow-item=F95211F8D9C416B5B4BBD63DDFF0C114
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 21
id=0000&Submit=Submit
python sqlmap.py -r xx.log -v 4 --chunk
可以看到自动将请求内容进行分块传输。