《Hae规则分享-致力于发现每一个越权漏洞》震撼来袭

一、前置使用条件

1、高版本jdk

由于Hae必须用到新版的Burpsuite,所以要保证你的JDK版本至少在11或以上

2、高版本Burp

由于**本文分享的Hae规则仅适用于Hae3.0.2(或更高)**,并且HaE 3.0版本开始采用Montoya API进行开发,不兼容旧版本。

所以使用新版HaE需要升级你的BurpSuite版本(>=2023.12.1),即需要使用2024版本的Burpsuite

二、高版本Burp

1、下载地址

2024版Burpsuite推荐下载链接:(吾爱破解)

BurpSuite v2024.3.1.2汉化无cmd框版(2024.04.16更新) - 『逆向资源区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

我使用的是2024.3.1版本,如下(应该只要是2024版本的都能正常运行)

image-20240513201724636

往最下面翻就可以看见下载链接了哈

image-20240513201807853

2、安装教程

内附有破解过程哈,中文版和汉化版都有,根据需要来使用就行,如果还不破解的话就看下面这个文章,过程差不多的

BurpSuite 汉化版(含注册机)安装教程 - Susie\ - 博客园 (cnblogs.com)

要是看完之后,实在实在还是不会破解,就来问我吧。。。。。

三、Hae下载

这个就没啥说的话,就在官网下载最新版即可,官网如下

gh0stkey/HaE: HaE - Highlighter and Extractor, Empower ethical hacker for efficient operations. (github.com)

截止本文章发出时,最新版本为3.0.2,本文分享的规则也是基于Hae3.0.2开发并测试,所以不能下载以前的版本哈,预计后续版本会兼容,也就是必须要Hae版本>=3.0.2才能使用该规则

四、更新内容

1、完美解决误报问题

​ 经过向Hae项目官方提交issue建议后,官方添加了新的规则作用域,在新的作用域基础上优化了正则,完美解决之前版本由于数据包中Cookie等请求头字段导致的所有误报问题,实现真正的“漏id就秒”,不放过任何一个常规id——即参数名以id结尾(不区分大小写),参数值为2-15位数字的id传参

image-20240513202814703

​ 至于非常规类的id参数,比如不可越权的参数值(由字母和数字组成)也在考虑当中,但认为这种情况还是相对比较少,所以先发布该版本,后续根据师傅们的使用反馈判断是否需要添加。

2、基本解决Hae卡顿问题

  • 由于HaE 3.0版本开始采用Montoya API进行开发,因此使用新版HaE会大大减少资源占用量,
  • 同时我在原先的Hae规则中,删除了大量我平时不会关注的信息,从而进一步减少资源损害

上面两个操作就基本解决了使用Hae导致Burpsuite卡顿或死机的情况出现,师傅们可以放心大胆的使用啦!

3、优化了部分匹配规则

  • ID匹配规则:先前版本由于尽可能避免Cookie中的误报,所以匹配到的id参数值要求是1-12位,由于现在Hae的更新,不会出现误报问题,所以更新ID匹配规则的作用域和匹配规则,如下

    • 匹配GET和POST传参中的所有符合下列条件的参数即参数值
    • 参数名由id结尾(大小写不区分),参数值为2-15位纯数字的传参键值对
    • 真正实现”露id就秒”,只要把功能点全部点一遍,看见数据对应的id就替换来测越权就行了,手拿把掐,
    • 下次问你为什么挖不到越权可就不能是没看到那个点了哈
  • 删除大量无用规则

    • 例如3条匹配云key的泛类规则
      • 由于百度、京东等云的ak信息辨识度不高,导致出现大量误报,我个人不喜欢看Burp像看彩虹一样,所以就直接删除了这三条规则
      • 好处就是Hae更简洁,清晰
      • 坏处就是无法检索aksk,但我个人认为这个概率太低了一点,我宁愿舍弃掉这一点概率,来让我挖洞挖着更舒服,师傅们觉得有必要的话也可以自行添加
    • 删除url传参匹配规则
    • …..
  • 添加部分规则

    • 添加车牌号识别规则
      • 五一看到一个信息泄露漏洞案例跟车牌号有关,感觉挺有意思的,就添加上了
  • 总结下来就是:一切为了越权和信息泄露服务

五、实战效果

测试中的效果如下(我个人觉得是要比以前花花绿绿的彩虹看着更舒服哈,师傅们觉得呢)

屏幕截图1.png

而且能够做到精准锁头,即能出现颜色的每个包,基本都有用,比如上图的GET明文id

屏幕截图 2024-05-13 233117

看到这个sub_kdt_id,就直接发到repeter替换这个id测越权呗,有没有漏洞一目了然,现在你认为测一个越权需要5秒钟吗?

至于挖SRC的成果,师傅们自己看图奥,图当然更有说服力啦

屏幕截图 2024-05-13 211004

五一测试的结果,什么含金量不必多说吧,师傅们快用起来吧,也不能单纯认为这个就能挖到洞了哈,有时候还是要具体分析,多学,多挖,多问,还是那句话——不要让时代的悲哀,成为你的悲哀!!!

六、规则文件

跟以前一样,把Hae的配置文件Rules.yml内容替换成我下面的内容就可以了哈

rules:
- group: 疑似漏洞
  rule:
  - name: GET 明文id
    loaded: true
    f_regex: (\b(?<!_)(id|\w+id)=(\d{2,15})\b(?![-_\\/]))
    s_regex: ''
    format: '{0}'
    color: green
    scope: request line
    engine: nfa
    sensitive: false
  - name: GET JSON id
    loaded: true
    f_regex: ((?:'|")?([a-zA-Z_]*[iI][dD])(?:'|")?\s*:\s*(?:('|")?(\d{2,15})(?![a-zA-Z0-9_\\/-])('|")?|\s*(\d{2,15})(?![a-zA-Z0-9_\\/-])))
    s_regex: ''
    format: '{0}'
    color: green
    scope: request line
    engine: nfa
    sensitive: false
  - name: GET JSON编码 id
    loaded: true
    f_regex: ((?:%22|%27)?([a-zA-Z_]*id[a-zA-Z0-9.]*)(?:%22|%27)?\s*(?:%3A|:)\s*(?:%22|%27)?(\d{2,15})(?!([a-zA-Z0-9_\\/-]))(?:%22|%27)?)
    s_regex: ''
    format: '{0}'
    color: green
    scope: request line
    engine: nfa
    sensitive: false
  - name: POST 明文id
    loaded: true
    f_regex: (\b(?<!_)(id|\w+id)=(\d{2,15})\b(?![-_\\/]))
    s_regex: ''
    format: '{0}'
    color: green
    scope: request body
    engine: nfa
    sensitive: false
  - name: POST JSON id
    loaded: true
    f_regex: ((?:'|")?([a-zA-Z_]*[iI][dD])(?:'|")?\s*:\s*(?:('|")?(\d{2,15})(?![a-zA-Z0-9_\\/-])('|")?|\s*(\d{2,15})(?![a-zA-Z0-9_\\/-])))
    s_regex: ''
    format: '{0}'
    color: green
    scope: request body
    engine: nfa
    sensitive: false
  - name: POST JSON编码 id
    loaded: true
    f_regex: ((?:%22|%27)?([a-zA-Z_]*id[a-zA-Z0-9.]*)(?:%22|%27)?\s*(?:%3A|:)\s*(?:%22|%27)?(\d{2,15})(?!([a-zA-Z0-9_\\/-]))(?:%22|%27)?)
    s_regex: ''
    format: '{0}'
    color: green
    scope: request body
    engine: nfa
    sensitive: false
- group: 指纹信息
  rule:
  - name: Shiro
    loaded: true
    f_regex: (=deleteMe|rememberMe=)
    s_regex: ''
    format: '{0}'
    color: red
    scope: any header
    engine: nfa
    sensitive: true
- group: 敏感信息
  rule:
  - name: 密码
    loaded: true
    f_regex: ((|'|")([p](ass|wd|asswd|assword))(|'|")(:|=)( |)('|")(.*?)('|")(|,))
    s_regex: ''
    format: '{0}'
    color: red
    scope: response body
    engine: nfa
    sensitive: false
  - name: 账号
    loaded: true
    f_regex: ((|'|")(([u](ser|name|ame|sername))|(account))(|'|")(:|=)( |)('|")(.*?)('|")(|,))
    s_regex: ''
    format: '{0}'
    color: yellow
    scope: response body
    engine: nfa
    sensitive: false
  - name: JDBC
    loaded: true
    f_regex: (jdbc:[a-z:]+://[a-z0-9\.\-_:;=/@?,&]+)
    s_regex: ''
    format: '{0}'
    color: red
    scope: any
    engine: nfa
    sensitive: false
- group: 基础信息
  rule:
  - name: 邮箱
    loaded: true
    f_regex: (([a-z0-9][_|\.])*[a-z0-9]+@([a-z0-9][-|_|\.])*[a-z0-9]+\.((?!js|css|jpg|jpeg|png|ico)[a-z]{2,}))
    s_regex: ''
    format: '{0}'
    color: yellow
    scope: response body
    engine: nfa
    sensitive: false
  - name: 身份证
    loaded: true
    f_regex: '[^0-9]((\d{8}(0\d|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]'
    s_regex: ''
    format: '{0}'
    color: red
    scope: response body
    engine: nfa
    sensitive: false
  - name: 电话号
    loaded: true
    f_regex: '[^\w]((?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8})[^\w]'
    s_regex: ''
    format: '{0}'
    color: yellow
    scope: response body
    engine: nfa
    sensitive: true
  - name: 银行卡号
    loaded: true
    f_regex: ^[\dX]{16,19}$
    s_regex: ''
    format: '{0}'
    color: red
    scope: response body
    engine: nfa
    sensitive: true
  - name: 车牌号
    loaded: true
    f_regex: ([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳])
    s_regex: ''
    format: '{0}'
    color: yellow
    scope: response body
    engine: nfa
    sensitive: true

留言

师傅们在使用的过程中,有什么Bug或者对规则的优化建议,都可以来找我哈,感谢师傅们!!!