BurpSuite插件-HAE修改、测试、规则分享

  • A+
所属分类:安全工具
 
△△△点击上方“蓝字”关注我们了解更多精彩




0x00 前言

啥都不想干,水文快乐一下。



0x01 HAE介绍

HaE - Highlighter and Extractor (信息高亮与提取)

HaE是基于 BurpSuite 插件 JavaAPI 开发的请求高亮标记与信息提取的辅助型插件。

该插件可以通过自定义正则的方式匹配响应报文或请求报文,可以自行决定符合该自定义正则匹配的相应请求是否需要高亮标记、信息提取。

即,这是一个能帮你发现请求与响应报文中敏感信息的实用插件。
HAE下载地址:https://github.com/gh0stkey/HaE/releases/tag/1.5.1
HAE使用方法:https://github.com/gh0stkey/HaE/blob/master/README_zh.md
使用案例参考:BurpSuite系列 | HaE与Authz高效漏洞挖掘https://mp.weixin.qq.com/s/5vNn7dMRZBtv0ojPBAHV7Q

编者说:这HAE插件真的挺好,挖掘敏感信息挺方便的。
编者说:致敬作者gh0stkey



0x02 HAE使用问题与修改

HAE导入规则配置文件以后,在UI中,规则顺序都是随机乱排,无法进行指定排序。
这就导致了有时候找不到我的规则地址和新增的那一条New rule在哪里。

(就是想要这个UI显示有点顺序

这是近视眼无法忍受的,所以我对进行了分析。

最后发现是由于java JSONObject对象执行tostring命令时,输出的字符串时无序的。

百度发现其实是因为java JSONObject对象内部使用的是无序的hashmap保存json数据

解决方案:
重写JSONObject类,将其中的hashmap替换成linkedmap即可。
PS:我的重写方法是下载JSONObject.java源码到代码中,将其中的hashmap替换成linkedmap,并将所有import的JSONObject修改为本地JSONObject地址
HAE打包命令gradle fatJar  (需先配置gradle环境)

修改后的插件使用效果及使用方法(下载地址在文末)
重写JSONObject后,在burpsuite中插件的显示顺序完全和json文件中的顺序相同了。

但是此时还是没有在插件中实现自动排序功能,最终也没有实现自动排序,只能等作者以后ToDo开发一个自动排序的功能啦

因此,如果如果想要UI显示的有所顺序,需要主动将JSON文件进行排序。


附上在线格式化和排序网址。
JSON排序在线工具-BeJSON.comhttps://www.bejson.com/json/jsonsort
在线JSON校验格式化工具(Be JSONhttps://www.bejson.com/json/format/




0x03 HAE公共规则
开篇就说过,这是一个基于正则匹配规则的标记插件。

因此,该工具很重要的部分其实是进行正则匹配规则编写。

作者提供了一个公共规则库,其中有很多的网站指纹规则,还有少量敏感数据匹配规则。
公共规则网站https://gh0st.cn/HaE/

截取一下其中规则看看:

"Alibaba OSS": {        "loaded": true,        "regex": "([A|a]ccess[K|k]ey[I|i][d|D]|[A|a]ccess[K|k]ey[S|s]ecret)",        "color": "green",        "engine": "dfa",        "scope": "any",        "action": "any"    },    "Linkfinder": {        "loaded": false,        "regex": "(?:"|')(((?:[a-zA-Z]{1,10}://|//)[^"'/]{1,}\.[a-zA-Z]{2,}[^"']{0,})|((?:/|\.\./|\./)[^"'><,;|*()(%%$^/\\\[\]][^"'><,;|()]{1,})|([a-zA-Z0-9_\-/]{1,}/[a-zA-Z0-9_\-/]{1,}\.(?:[a-zA-Z]{1,4}|action)(?:[\?|#][^"|']{0,}|))|([a-zA-Z0-9_\-/]{1,}/[a-zA-Z0-9_\-/]{3,}(?:[\?|#][^"|']{0,}|))|([a-zA-Z0-9_\-]{1,}\.(?:php|asp|aspx|jsp|json|action|html|js|txt|xml|do|jspx|htm)(?:[\?|#][^"|']{0,}|)))(?:"|')",        "color": "gray",        "engine": "nfa",        "scope": "response",        "action": "any"    },    "Windows Path": {        "loaded": true,        "regex": "([a-zA-Z]:[\\/](?:[a-zA-Z0-9\.\-_ ]+[\\/])*([a-zA-Z0-9\.\-_ ]+))",        "color": "green",        "engine": "dfa",        "scope": "response",        "action": "any"    },    "Fingerprint: Nagios": {        "loaded": true,        "regex": "(Nagios access)",        "color": "gray",        "engine": "dfa",        "scope": "response",        "action": "any"    },

(真不错)



0x04 HAE自定义规则与调试

我们终究要有自己的东西,这样才能活出自己的样子

1、编写HAE规则要学会使用Java的正则表达式。
Java 正则表达式 | 菜鸟教程https://www.runoob.com/java/java-regular-expressions.html

2、nfa和dfa的区别
配置规则中有一个"engine": "dfa" 或"nfa"指定匹配使用正则的关系。(DFA比较快)
基本概念:确定有限自动机(Deterministic Finite Automaton) 简称DFA。dfa是匹配速度,是确定的。非确定有限自动机(Nondeterministic Finite Automaton) 简称NFA,nfa是匹配结果,是不确定的。
区别:DFA比较快,但不提供Backtrack(回溯)功能,NFA比较慢,但提供了Backtrack功能。NFA是基于表达式的(Regex-Directed),而DFA是基于文本的(Text-Directed)。
DFA引擎在任意时刻必定处于某个确定的状态,而NFA引擎可能处于一组状态之中的任何一个,所以,NFA引擎必须记录所有的可能路径,NFA之所以能够提供Backtrack的功能,原因就在这里。
(PS:了解一下就行,自己写规则的时候,dfa模式没匹配出数据就改nfa模式)

3、调试HAE正则的环境
我的思路:在本地搭建一个httpserver,其中将要匹配的规则写在一个html或txt文件中,在burpsuite repeater模块实时访问该文件测试匹配功能。

python3 一句话搭建http服务器
python3 -m http.server 8000

一个简单的html页面
<html><body><h1>TEST</h1>access_key    Accesskeyaccesskeyid:222;AccesskeyID=111111</body></html>

重点:其中的坑:
1、如果本来正常的规则,后面由于增加了新的规则导致不能匹配,说明正则配置错误。尝试修改引擎模式和正则表达式。

2、html、txt等默认都是静态文件,直接重复访问链接是会返回304,而不是返回内容repeater模块才会重新刷新。

3、很正经的思路,但是测试过程中发现,插件实际上没有匹配我的html和txt文件。
经过排查由于Config.java中为了减少一些无用数据的匹配,过滤了一些匹配后缀和数据流格式。我将其过滤规则清空,重新编译了一个为测试而生的debug版本 (下载地址在文末,不建议作为日常使用)
public static String excludeSuffix = "";
public static String[] excludeMIME = new String[] {};

调试页面截图




0x05 我的调试规则分享(真的耗时间)
#AliyunAccessKey (OK NFA)([A|a][Cc]{2}[Ee][Ss]{2}[Kk][Ee][Yy][Ii]?[Dd]?[Ss]?[Ee]?[Cc]?[Rr]?[Ee]?[Tt]?[=: "]{0,4}[w]{0,}) 
#手机号 (OK NFA)[^(0-9)]+(1[3-9]d{9})[^(0-9)]
#身份证 (OK NFA)[^(0-9)]((d{8}(0d|10|11|12)([0-2]d|30|31)d{3}$)|(d{6}(18|19|20)d{2}(0[1-9]|10|11|12)([0-2]d|30|31)d{3}(d|X|x)))[^(0-9)]
#密码字段Passwd (OK NFA)(["]?([Pp][Aa]?[Ss]{0,2}[Ww][Oo]?[Rr]?[Dd]["s]?[=: "s]{0,4}.*?)[s;"])|(["]?([Pp][Aa][Ss]{2}[^Ww]["s]?[=: "s]{0,4}.*?)[s;"])
#邮箱Email (OK NFA)(([a-zA-Z0-9][_|.])*[a-zA-Z0-9]+@([a-zA-Z0-9][-|_|.])*[a-zA-Z0-9]+.((?!js|css|jpg|jpeg|png|ico)[a-zA-Z]{2,}))
#Aliyun_oss_url (OK NFA)([w-.]+.oss.aliyuncs.com)
#Secret_key (OK NFA)([Ss][Ee][Cc][Rr][Ee][Tt][_]?[Kk][Ee][Yy][=: "]{0,4}[w]{0,}) 
#Internal IPv4 (OK NFA)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3})
#Internal IPv6 (OK NFA)(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
#Public Linkfinder (OK NFA)(?:"|')(((?:[a-zA-Z]{1,10}://|//)[^"'/]{1,}.[a-zA-Z]{2,}[^"']{0,})|((?:/|../|./)[^"'><,;|*()(%%$^/\[]][^"'><,;|()]{1,})|([a-zA-Z0-9_-/]{1,}/[a-zA-Z0-9_-/]{1,}.(?:[a-zA-Z]{1,4}|action)(?:[?|#][^"|']{0,}|))|([a-zA-Z0-9_-/]{1,}/[a-zA-Z0-9_-/]{3,}(?:[?|#][^"|']{0,}|))|([a-zA-Z0-9_-]{1,}.(?:php|asp|aspx|jsp|json|action|html|js|txt|xml|do|jspx|htm)(?:[?|#][^"|']{0,}|)))(?:"|')
#AWS ClientID (OK NFA|DFA) (A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}
#Windows Path   (OK NFA|DFA) ([a-zA-Z]:[\/]{1,2}(?:[a-zA-Z0-9.-_ ]+[\/]{1,2})*([a-zA-Z0-9.-_ ]+))  


再次说明:
1、启用的正则如果语法错误,将导致HAE插件无法使用
2、修改后 在repeater模块实时测试
3、注意不要复制前后的规则前后的空格


0x06 总结
修改后的代码及编译好的插件,请公众号后台回复【享】获取

再次致敬作者gh0stkey

END



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

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


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

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


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



本文始发于微信公众号(NOVASEC):BurpSuite插件-HAE修改、测试、规则分享

发表评论