更优雅的BurpSuite被动扫描流量转发插件实现
2023-11-9 01:50:29 Author: xz.aliyun.com(查看原文) 阅读量:9 收藏

背景

最近在为扫描器添加被动扫描模式,发现在 BurpSuite 中设置上游代理,IntruderRepeater 模块也会走上游代理,这对于设置上游搞内网很合适,但对于被动扫描器来说有点不适合了,一般这两个模块都是手动测试时才会用到,这时流量都被转发到被动扫描器就不是很好了,会增加很多无用扫描(即使被动扫描器存在流量去重功能)。

找了一圈没发现 Burp 中可以设置这一块,想到@c0ny1师傅写过一个插件 passive-scan-client ,测试时发现,插件根本没有工作,issues中也有这种情况反馈,修复之后测试发现和Burp中设置上游没什么两样。

排错

IDEA 调试

在IDEA 配置远程调试


简单起见,这里直接使用社区版作为调试, 命令行启动 Burp 社区版

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar burpsuite_community_v2023.10.2.4.jar

生成 jar 文件

BurpSuite中加载该插件,启动

然后IDEA 点击 Debug 启动刚才的配置 ,找个代码位置下个断点

访问测试网站,比如 http://testphp.vulnweb.com/ ,ok,IDEA 中已经可以看到拦截了。

debug 时发现程序在String headerValue = "Basic " + Base64.encode(user_pass.getBytes()); 这一行就直接结束了。

神奇的一幕就发生了,明明是空,怎么就进来的?

老方法输出一下看看


所以不设置用户名、密码时这里会出错,这类应该使用isEmpty()函数进行判断。但是为什么debug 看到的也明明是空,username又不是 null,为什么会发生这种情况?

所有的这个判断都修改一下,先结束排错。

改造

该插件通过继承实现了IProxyListener中的processProxyMessage方法来实现获取请求信息,这个方法翻了一下官方 api,没有找到可以控制相关模块的地方。

官方 API 太难看了,不太友好,找了一会,各种搜索还是没发现,想到@算命縖子师傅有个插件,我用过类似功能


通过继承IHttpListener实现processHttpMessage 方法,该方法有个int参数,就是用来判断各种模块的,接下来就很简单了,通过 toolFlag 的值来进行判断是ProxyIntruder 还是Repeater 模块。逻辑改好了。

@Override
public void processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo) {
        // 插件开启
        if (Config.IS_RUNNING && !messageIsRequest) {
            // 开启监控 Proxy,并且该消息是 Proxy 模块的
            if(Config.PROXY && toolFlag == IBurpExtenderCallbacks.TOOL_PROXY) {
            ......

BurpExtender.this.callbacks.registerProxyListener(BurpExtender.this);

修改为

BurpExtender.this.callbacks.registerHttpListener(BurpExtender.this);

剩下就是依葫芦画瓢增加 GUI 控制。具体的看代码这里就不贴了,地址: https://github.com/yhy0/passive-scan-client

效果图:


默认只会监控 Proxy模块,另外两个看情况开启,比如前端收集到一堆 api,这时通过Intruder模块进行 Fuzz,配合被动扫描器的比如 403 绕过,进行一起测试,非常巴适。

这里还将被动扫描器的Basic认证请求头单独拎出来了,可以自主设置,不然不看代码都不清楚这一块内容,还有就是@c0ny1师傅不知道基于怎样的考虑,将转发流量这一操作,每个流量间隔 5 秒钟,时间太长了,之前我都不知道这个时间是用来干嘛的,这里修改了一下默认 100 毫秒 。

整体下来没什么难度,修改后的插件也算是解决一个小痛点了,师傅们使用被动扫描器时可以使用该工具选择需要转发的数据。

相关代码已提交 pr,项目原地址:https://github.com/c0ny1/passive-scan-client

等不及的可以去这里拿:https://github.com/yhy0/passive-scan-client

本人才疏学浅,如有疏漏之处,不吝赐教。

参考

https://github.com/c0ny1/passive-scan-client

https://github.com/smxiazi/xia_sql


文章来源: https://xz.aliyun.com/t/13005
如有侵权请联系:admin#unsafe.sh