sqlmap通过中间服务器绕过waf

好吧,以前说的话,现在来买单了。

0x1原理

很简单,如下图:

1、sqlmap发送原始的请求给中间服务器

2、中间服务器修改payload

3、中间服务器转发给目标,并将结果原样返回给sqlmap

0x2代码

0x3使用说明及演示

修改脚本阶段:

1、确定原请求:确定包含注入点的请求,编写原始请求的python代码,建议可以通过burpsuit插件(Reissue Request Scripter plugin)直接创建python脚本。

For you:

== Reissue RequestScripter plugin ==

Plugin that generatescript to reproduce a specific HTTP request.

- Github : https://github.com/h3xstream/http-script-generator

2、修改请求target函数:将1中创建的py脚本,直接放入SQLMidServer中request_target()函数内,并在注入点的位置拼接self.inject_payload。如下,我把sqlmap的payload拼接到了user-agent后面:

3、修改注入规则:修改modify_payload()函数中的规则。如下,sqlmap原始payload中的单引号%27,被我替换成了shelly%27。这里简单演示,以后有空再来丰富各种绕waf的规则。

使用阶段:

4、运行SQLMidServer

5、对SQLMidServe进行注入:sqlmap通过post提交注入请求,注入点为inject_payload。

如:python sqlmap-r sql.txt

sql.txt内容如下:

POST / HTTP/1.1

Host: 127.0.0.1:8000

Cache-Control:max-age=0

User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/62.0.3202.94 Safari/537.36

Upgrade-Insecure-Requests:1

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Accept-Language:zh-CN,zh;q=0.9

Connection: close

Content-Type:application/x-www-form-urlencoded

Content-Length: 26

inject_payload=*

6、查看sqlmap结果

中间服务器:

目标服务器:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171215G05NPS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券