GPT都解决不了的Burp无用流量过滤问题
2023-3-23 10:10:21 Author: NOVASEC(查看原文) 阅读量:63 收藏

0x02 一本正经胡说八道的ChatGPT
开始是想看看有没有办法,阻断某个域名的流量,并且不显示在历史流量窗口。

意思是拦截客户端请求设置里有个Drop选项

发现实际上规则匹配中并没有这个Drop功能。

再问,ChatGPT说可以先把要抓的域名加入Scope,再在拦截页面通过手动Drop报文,这个时候就不会在历史流量模块记录。
这个回答比较鸡肋,手动删除每一个报文,哪里还有时间测试。

而且,实际测试发现删除的包也会存在于历史流量中。

后面再询问ChatGPT就发现它的CPU烧坏了,开始忽悠我了。

再查了查Burp的API,想看看有没有API操控这个流量记录,结果是没有找到操控流量记录的API

兜兜转转发现确实没有办法直接解决 通过Burp的流量不在Burp历史流量记录中显示的问题。 

流量来过了就是来过了,Burp可以无情,但是确实没有办法无痕。

0x03 自动删除流量包的解决思路

退而取其次,说他的主要目的就是能够 在测试过程中不看到这个流量记录,只要测试时看不到可以就当他没进来过。

所以就开始寻找 如何在流量历史隐藏无用流量 的方案。

历史模块中可以通过很多方案来过滤报文,但是大多都是针对性的过滤(如后缀、类型、状态码等),没有办法直接区分有用和无用域名的流量,不太通用。

看到其中有个隐藏无用响应的功能如果结合能自动删除指定域名的报文的插件,并且设置不显示无响应浏览,就能够实现无用域名流量的过滤


刚好前段时间发文描述的Knife插件中有个dissmissed功能,可以自动删除指定域名的报文,结合起来刚好解决了这个问题。

bit4woo/knife: https://github.com/bit4woo/knife

Dismissed -> Drop Host:自动drop后续来自当前Host的流量,不发送请求。可以配合History上方的过滤器"Hide items without responses" 使其不显示在History中

0x04 基于Exclude Scope的解决思路

推荐给老王这个Drop方案以后,我觉得此事已经结束。但老王又提了一个BUG: 

Drop以后我访问不了百度了,我要访问下百度,但是还不想看到百度的流量。

这就是Drop解决不了的问题了,又开始寻找新的解决方案。

想到这个Show In-Scope这个从接触Burp至今都没怎么设置过的功能。 

以前感觉这个功能很鸡肋,不能包含或者排除自己想排除的host,只能针对某一个URL来操作。


Burp右键自带的的add to scope也是基于URL的快捷操作,实际测试感觉没什么用处。

渗透测试时的操作都是基于域名来的划分范围的,只操作URL没有任何意义。

打开Target ->Scope设置,发现当前版本(2022.8.5)支持通过正则表达式来配置Include in Scope和Exclude from Scope。

不知道是什么时候出来的功能,但是测试发现 能通过高级Scope配置来实现排除指定域名的功能。

排除指定域名示例,如.*.baidu.com:

配置Include in Scope 为 [.*]配置Exclude from Scope [.*\.baidu\.com]

添加Scope规则

Show In Scope过滤前

Show In Scope过滤后

测试发现成功排除了baidu.com的所有流量,并且其他流量都在Scope范围内,也不影响主动扫描Scope等操作。

但是高级Scope设置操作过程都是手动的,如果能够通过右键实现是最好的。

打开Knife插件,发现它右键有个[Add Host To Scope]功能,能将当前选中的所有请求的HOST都加入到Include Scope当中。

研究发现是使用Burp的includeInScope API来实现的:

knife add host to scope源码

通过处理URL为 URL格式(根目录),来实现包含某个主机的域名范围。

knife add host to scope效果

另外发现Burp还有个excludeFromScope API,同理可以实现将主机的短URL除掉。

通过拷贝代码逻辑,成功在knife中添加了一个右键功能[Add Host To ExScope] 将域名添加到排除范围。

(不得不说,Knife在扩展性这块很友好)

0x05 实现Exclude Scope API的BUG

测试发现这块还是有较大的瑕疵

如果只添加了排除Scope,默认不会设置设置包含Scope为 [.*]号:

注:这里因为操作前手动开启高级模式,所以显示的是正则,默认普通模式是显示过滤前缀.

实际使用InScope过滤时会发现一个流量也不显示:

因此,需要在发现InScope为空时,添加[.*]到包含Scope,但是发现没有判断Scope为空的API,并且API不能够添加 [.*] 域名

只有一个判断URL是否在Scope内的函数[isInScope],而且也只能基于URL操作,不能操作[.*]和[http://.*]。

尝试在添加完排除范围后在自动设置一个[.*]到Scope,发现URL这里就不可行。


需要通过其他的方案来实现 域名[.*]

0x06 通过操作项目配置文件的API实现

查找了很久的API发现两个比较有用的API:

String saveConfigAsJson(String... configPaths);获取当前项目配置文件的Json格式
void loadConfigFromJson(String config);将Json格式的配置文件导入到当前Burp项目结构中。
另外发现Scope设置也在项目配置中并且配置是实时生效的

因此考虑,通过Json操作库来实时修改Json配置并加载间接实现[.*]通配符域名的添加。

成功实现[.*]通配符域名的添加
后续,同样通过修改配置文件的操作,扩展实现添加域名正则的右键操作:
【Add Host To ExScope Adv】和【Add Host To InScope Adv】
如[www.baidu.com]会添加正则[www\.baidu\.com]

这是基于前缀的功能的【Add Host To ExScope】和【Add Host To InScope】进一步优化。
然后应老王的再次要求,对【Add Host To ExScope Adv】和【Add Host To InScope Adv】功能再次进行了扩展。

当开启Scope_Set_Base_OnWildcard_SubDomian为True时,会基于主域名的正则格式操作(把最前面的一级替换为.*)
此时添加Host[www.baidu.com],实际会添加正则[.*\.baidu\.com]
0x07 操作项目配置文件的API扩展

最后,通过对配置文件的实时操作,实现了更多的功能:

Project Scope Clear 清空当前的In-Scope和Ex-Scope范围
Project Config Save 保存当前的配置文件到指定文件。
Project Config Load 加载指定配置文件加载到当前项目。
注:Config保存加载都需要先设置Auto_Load_Project_Config为True.
另外还添加了[启动时自动加载项目配置文件][默认排除域名正则]等功能.
Auto_Load_Project_Config 会在插件启动时自动从项目配置文件中导入项目配置,这是比较通用的需求
如:修改enable_http2为false,让高版本burp不默认使用HTTP2协议。

(可项目内修改后Project Save Config,也可以直接在配置文件修改后Project Load Config)

0x08 总结
本来觉得就一点点功能,应该不是很费事,但是发现写了很久才解决这个问题,不过能实现算是解决一个盲点。
感谢knife的开源
其他更多的Adv配置文件操作可以查看项目更新地址。
winezer0/knife-plus: burpsuite knife插件维护分支(用于搜索,下载release)https://github.com/winezer0/knife-plus
winezer0/knife_PullRequests: burpsuite knife插件PR分支(用于提交本分支的更新记录)https://github.com/winezer0/knife_PullRequests
整个实现过程中还是使用了GPT的,它帮我找到了使用Gson操作Json字符串的代码。
0x9 免责声明

在学习本文技术或工具使用前,请您务必审慎阅读、充分理解各条款内容。

1、本团队分享的任何类型技术、工具文章等文章仅面向合法授权的企业安全建设行为与个人学习行为,严禁任何组织或个人使用本团队技术或工具进行非法活动。

2、在使用本文相关工具及技术进行测试时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。如您仅需要测试技术或工具的可行性,建议请自行搭建靶机环境,请勿对非授权目标进行扫描。

3、如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。

4、本团队目前未发起任何对外公开培训项目和其他对外收费项目,严禁任何组织或个人使用本团队名义进行非法盈利。

5、本团队所有分享工具及技术文章,严禁不经过授权的公开分享。

如果发现上述禁止行为,我们将保留追究您法律责任的权利,并由您自身承担由禁止行为造成的任何后果。

END

如您有任何投稿、问题、建议、需求、合作、后台留言NOVASEC公众号!

或添加NOVASEC-余生 以便于及时回复。

感谢大哥们的对NOVASEC的支持点赞和关注

加入我们与萌新一起成长吧!

本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!


文章来源: http://mp.weixin.qq.com/s?__biz=MzUzODU3ODA0MA==&mid=2247488798&idx=1&sn=6426cbfe877da8863e857e7157c226e5&chksm=fad4c809cda3411f2afcf772e8e2d21e8a4ab266cb197ff8f31380f07c32dab28b1d1bc45464#rd
如有侵权请联系:admin#unsafe.sh