而且,实际测试发现删除的包也会存在于历史流量中。
后面再询问ChatGPT就发现它的CPU烧坏了,开始忽悠我了。
再查了查Burp的API,想看看有没有API操控这个流量记录,结果是没有找到操控流量记录的API。
兜兜转转发现确实没有办法直接解决 通过Burp的流量不在Burp历史流量记录中显示的问题。
流量来过了就是来过了,Burp可以无情,但是确实没有办法无痕。
退而取其次,老王说他的主要目的就是能够 在测试过程中不看到这个流量记录,只要测试时看不到可以就当他没进来过。
所以就开始寻找 如何在流量历史隐藏无用流量 的方案。
历史模块中可以通过很多方案来过滤报文,但是大多都是针对性的过滤(如后缀、类型、状态码等),没有办法直接区分有用和无用域名的流量,不太通用。
看到其中有个隐藏无用响应的功能,如果结合能自动删除指定域名的报文的插件,并且设置不显示无响应浏览,就能够实现无用域名流量的过滤。
刚好前段时间发文描述的Knife插件中有个dissmissed功能,可以自动删除指定域名的报文,结合起来刚好解决了这个问题。
bit4woo/knife:
https://github.com/bit4woo/knife
Dismissed -> Drop Host:自动drop后续来自当前Host的流量,不发送请求。可以配合History上方的过滤器"Hide items without responses" 使其不显示在History中
推荐给老王这个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在扩展性这块很友好)
测试发现这块还是有较大的瑕疵。
如果只添加了排除Scope,默认不会设置设置包含Scope为 [.*]号:
注:这里因为操作前手动开启高级模式,所以显示的是正则,默认普通模式是显示过滤前缀.
因此,需要在发现InScope为空时,添加[.*]到包含Scope,但是发现没有判断Scope为空的API,并且API不能够添加 [.*] 域名。
只有一个判断URL是否在Scope内的函数[isInScope],而且也只能基于URL操作,不能操作[.*]和[http://.*]。
尝试在添加完排除范围后在自动设置一个[.*]到Scope,发现URL这里就不可行。
需要通过其他的方案来实现 添加通配符域名[.*]。
查找了很久的API发现两个比较有用的API:
String saveConfigAsJson(String... configPaths);
获取当前项目配置文件的Json格式
void loadConfigFromJson(String config);
将Json格式的配置文件导入到当前Burp项目结构中。
最后,通过对配置文件的实时操作,实现了更多的功能:
(可在项目内修改后Project Save Config,也可以直接在配置文件修改后Project Load Config)
winezer0/knife-plus:
burpsuite knife插件维护分支(用于搜索,下载release)
https://github.com/winezer0/knife-plus
winezer0/knife_PullRequests:
burpsuite knife插件PR分支(用于提交本分支的更新记录)
https://github.com/winezer0/knife_PullRequests
在学习本文技术或工具使用前,请您务必审慎阅读、充分理解各条款内容。
1、本团队分享的任何类型技术、工具文章等文章仅面向合法授权的企业安全建设行为与个人学习行为,严禁任何组织或个人使用本团队技术或工具进行非法活动。
2、在使用本文相关工具及技术进行测试时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。如您仅需要测试技术或工具的可行性,建议请自行搭建靶机环境,请勿对非授权目标进行扫描。
3、如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。
4、本团队目前未发起任何对外公开培训项目和其他对外收费项目,严禁任何组织或个人使用本团队名义进行非法盈利。
5、本团队所有分享工具及技术文章,严禁不经过授权的公开分享。
如果发现上述禁止行为,我们将保留追究您法律责任的权利,并由您自身承担由禁止行为造成的任何后果。
END
如您有任何投稿、问题、建议、需求、合作、请后台留言NOVASEC公众号!
或添加NOVASEC-余生 以便于及时回复。
感谢大哥们的对NOVASEC的支持点赞和关注
加入我们与萌新一起成长吧!
本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!!