burpsuite 设置https_强化 web 攻击神器 Burp Suite (二) — 切换ip技能点

1前言

      上篇文章(强化 web 攻击神器 Burp Suite (一) — 验证码识别技能点)给 Burp Suite 添加验证码识别技能点,对于现代化的渗透测试神器来说,自动化切换 ip 也是必备技能,本文通过动态设置 HTTP 代理来完善此功能。

2快速开发

    2.1 原理分析

    对于 HTTP 代理,HTTP 客户端向代理发送请求报文,代理服务器需要正确地处理请求和连接(例如正确处理 Connection: keep-alive),同时向服务器发送请求,并将收到的响应转发给客户端。

2022d27f19a68d24b5f47516792c8086.png

图片来源:《HTTP 权威指南》

    原理较为简单,具体看数据包对比。

    正常访问

a7c5ead21ff0a674c6f5efa232611b49.png

    http 流
GET / HTTP/1.1Host: myip.ipip.netUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:69.0) Gecko/20100101 Firefox/69.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateConnection: keep-aliveUpgrade-Insecure-Requests: 1Cache-Control: max-age=0HTTP/1.1 200 OKDate: Mon, 01 Apr 2020 16:58:35 GMTContent-Type: text/plain; charset=utf-8Content-Length: 67Connection: keep-alive...... IP...113.*.*.*  .................. ...... ......  ......

    代理访问

    HTTP 代理 180.143.244.66:18637

f91f5a9071336622ffbdb61737d047e6.png

    http 流

GET http://myip.ipip.net/ HTTP/1.1Host: myip.ipip.netUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:69.0) Gecko/20100101 Firefox/69.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateConnection: keep-aliveUpgrade-Insecure-Requests: 1Cache-Control: max-age=0HTTP/1.1 200 OKDate: Mon, 01 Apr 2020 17:18:45 GMTContent-Type: text/plain; charset=utf-8Content-Length: 69Connection: close...... IP...180.143.244.66  .................. ...... ......  ......

    可以看到正常访问和代理访问在数据层就是请求路径和目标不同。使用代理就是把数据带上目标信息先发送到代理服务器,要在 Burp Suite 中实现代理功能,动态修改请求目标和请求 header 即可 。

    2.2 代码编写

    参考官方文档,修改 HTTP 请求,需要在脚本中实例化 IHttpListener 类并重写 processHttpMessage 方法。

HTTP_PROXY={    'ip':'14.118.163.95',    'port':19048    }class BurpExtender(IBurpExtender, IHttpListener):    def registerExtenderCallbacks(self, callbacks):        self._callbacks = callbacks        self._helpers = callbacks.getHelpers()        callbacks.setExtensionName("IP switch")        callbacks.registerHttpListener(self)    def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):            # 只处理请求        if not messageIsRequest:            return        httpService = messageInfo.getHttpService()        # 修改请求目标为代理中转        messageInfo.setHttpService(                        self.helpers.buildHttpService(                            HTTP_PROXY['ip'],                            HTTP_PROXY['port'], True                        )                    )          requestInfo = self.helpers.analyzeRequest(messageInfo)        new_headers = requestInfo.headers        # 修改 http 头        req_head = new_headers[0]        new_headers[0] = re.sub('\/'," http://myip.ipip.net/",req_head)        body = messageInfo.request[requestInfo.getBodyOffset():len(messageInfo.request)]        messageInfo.request = self.helpers.buildHttpMessage(                            new_headers,                            body)

    2.3 对接平台

    接入代理平台或者 aws.

3实战演练

     继续使用上篇后台做演示。

efddac19bd77f232788d3d6d270b18dd.png

    正常访问。

aea2315d83a39dfdb5cab820cd28588c.png

    开启拓展。

7b2bbeab5ed8c958b6813096ee1ee666.png

4参考

1、HTTP 代理原理及实现(一)
    https://imququ.com/post/web-proxy.html 2、 Burp Suite 文档
    https://portswigger.net/burp/extender/api/burp/IHttpListener.html 3、使用AWS API网关动态绕过防火墙
    https://rhinosecuritylabs.com/aws/bypassing-ip-based-blocking-aws/

c292dde295cf279a7c166b9c3e6b3414.png


版权声明:本文为weixin_36362920原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。