Hetty Scope高级规则:正则表达式过滤实战指南

Hetty Scope高级规则:正则表达式过滤实战指南

【免费下载链接】hetty An HTTP toolkit for security research. 【免费下载链接】hetty 项目地址: https://gitcode.com/GitHub_Trending/he/hetty

引言:为何默认过滤规则总是不够用?

在Web安全测试中,你是否经常遇到这些困境:抓包工具捕获海量无关请求、关键API被淹没在日志洪流中、需要精确匹配特定参数的请求却无从下手?Hetty作为专注安全研究的HTTP工具包,其Scope模块提供的正则表达式过滤功能正是解决这些问题的利刃。本文将系统讲解如何构建URL、Header、Body三级正则过滤规则,通过20+实战案例带你掌握从基础匹配到复杂场景的全流程技巧,最终实现"指哪打哪"的精准请求拦截。

核心概念:Hetty Scope规则引擎架构

Scope模块工作原理

Hetty的Scope系统通过Scope结构体管理一组Rule规则,每个请求到达时会依次通过规则链进行匹配:

func (s *Scope) Match(req *http.Request, body []byte) bool {
    for _, rule := range s.rules {
        if matches := rule.Match(req, body); matches {
            return true  // 任意规则匹配即命中
        }
    }
    return false
}

Rule规则三维结构

每个规则包含三个可配置维度,形成立体过滤网络:

type Rule struct {
    URL    *regexp.Regexp  // URL路径匹配
    Header Header          // 请求头匹配(Key+Value)
    Body   *regexp.Regexp  // 请求体匹配
}

type Header struct {
    Key   *regexp.Regexp   // 头字段名匹配
    Value *regexp.Regexp   // 头字段值匹配
}

匹配优先级:URL → Header → Body,任意维度匹配成功则整条规则生效。

实战指南:正则表达式规则编写详解

1. URL匹配规则(最常用)

基础语法示例
场景需求正则表达式匹配效果
精确匹配API路径^/api/v1/users$仅匹配/api/v1/users
包含特定参数的请求user_id=\d{6}匹配包含6位数字用户ID的请求
排除静态资源^(?!.*\.(js|css|png)$).*排除JS/CSS/PNG文件请求
多域名匹配^(https?://)(example\.com\|test\.org)匹配两个域名的HTTP/HTTPS请求
高级技巧:路径参数提取
# 捕获RESTful API中的资源ID(使用分组)
^/api/v2/resources/(\d+)/details$

在Hetty中可通过后续处理提取分组内容,实现动态数据追踪。

2. Header匹配规则

请求头匹配逻辑

Header规则采用"与"逻辑:Key和Value同时匹配才生效。特殊场景下可仅配置Key或Value。

实用配置示例
目标场景Key正则Value正则应用场景
认证令牌请求^Authorization$^Bearer\s+[A-Za-z0-9]+$捕获JWT令牌请求
特定User-Agent^User-Agent$^Mozilla/5\.0.*Chrome/仅匹配Chrome浏览器请求
JSON格式响应^Content-Type$^application/json筛选JSON响应体
代码实现示例
// 创建匹配JSON响应的Header规则
headerRule := Rule{
    Header: Header{
        Key:   regexp.MustCompile(`^Content-Type$`),
        Value: regexp.MustCompile(`^application/json`),
    },
}

3. Body匹配规则

适用场景
  • JSON/XML结构化数据过滤
  • 表单参数匹配
  • 敏感信息检测(如API密钥、手机号)
常用正则模板
# JSON字段匹配
"user_email":\s*"([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})"

# JWT令牌检测
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\.[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+

# 手机号(中国)匹配
1[3-9]\d{9}

规则组合策略:构建企业级过滤系统

规则优先级设计

Hetty按规则添加顺序依次匹配,建议遵循"精准规则优先"原则:

mermaid

典型规则集示例(电商系统)

var rules = []Rule{
    // 1. 核心交易API(最高优先级)
    {URL: regexp.MustCompile(`^/api/checkout/complete$`)},
    
    // 2. 用户认证相关
    {
        URL: regexp.MustCompile(`^/api/auth/`),
        Header: Header{
            Key: regexp.MustCompile(`^Authorization$`),
        },
    },
    
    // 3. 包含敏感数据的响应
    {Body: regexp.MustCompile(`"credit_card":\s*"\d{4}-\d{4}-\d{4}-\d{4}"`)},
    
    // 4. 排除健康检查请求
    {URL: regexp.MustCompile(`^/health$`)},
}

性能优化建议

  1. 简化前缀匹配:优先使用^锚定开头,避免全量扫描
  2. 限制回溯深度:复杂规则使用非贪婪匹配.*?
  3. 规则数量控制:生产环境建议不超过20条规则
  4. Body匹配谨慎使用:大型响应体匹配会显著影响性能

调试与验证:确保规则按预期工作

测试工具

Hetty内置调试模式可输出匹配过程:

hetty --debug scope

常见问题排查

问题现象可能原因解决方案
规则不生效正则转义错误使用regexp.QuoteMeta()处理特殊字符
匹配结果过多正则过于宽泛添加^$锚定边界
性能下降Body规则复杂或数量过多拆分规则,优先URL过滤
Header匹配失败Key大小写问题添加(?i)忽略大小写,如(?i)^content-type$

规则有效性验证清单

  •  所有正则表达式已通过在线工具测试(推荐Regex101)
  •  包含正反例测试用例(至少5个)
  •  性能测试:1000请求/秒场景下CPU占用率<10%
  •  规则文档与代码同步更新

高级技巧:超越基础匹配

负向匹配技巧

排除特定路径的请求:

# 匹配所有/api/请求,但排除/api/logs
^/api/(?!logs).*$

条件组合匹配

匹配"POST请求且包含特定表单字段":

Rule{
    URL: regexp.MustCompile(`^/submit-form$`),
    Header: Header{
        Key: regexp.MustCompile(`^Content-Type$`),
        Value: regexp.MustCompile(`^application/x-www-form-urlencoded$`),
    },
    Body: regexp.MustCompile(`user_role=admin`),
}

动态规则管理

通过Hetty API实时更新规则:

PUT /api/scope/rules
Content-Type: application/json

{
  "rules": [
    {"url": "^/new-endpoint$"}
  ]
}

总结与展望

掌握Scope正则表达式过滤规则,能让你的安全测试效率提升80%以上。核心要点:

  1. 三维匹配:URL路径、Header字段、Body内容协同过滤
  2. 规则策略:精准优先、数量控制、性能平衡
  3. 持续优化:定期审计规则有效性,移除冗余配置

Hetty团队计划在v1.2版本中引入规则热重载和AI辅助生成功能,彻底解决复杂场景下的规则编写难题。

实用资源

收藏本文,下次配置Scope规则时直接查阅示例!关注Hetty技术专栏,下期将带来《拦截规则与自动化攻击结合实战》。

【免费下载链接】hetty An HTTP toolkit for security research. 【免费下载链接】hetty 项目地址: https://gitcode.com/GitHub_Trending/he/hetty

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值