文章总结: HTTPAnomalyRank算法自动筛选异常HTTP响应,通过计算属性权重和响应评分识别差异,已集成到TurboIntruder和BurpSuiteAPI,提高安全测试效率,建议更新工具以使用功能。
综合评分: 100
文章分类: 渗透测试,漏洞分析,安全工具,WEB安全
HTTP 异常等级算法:自动筛选异常响应
James Kettle
securitainment
2025年11月19日 11:33
中国香港
HTTP Anomaly Rank 简介
如果你使用过 Burp Intruder 或 Turbo Intruder,一定经历过这样的场景:面对成千上万条响应结果,不停地按长度、状态码等字段来回排序表格,试图从中找出异常。为了解决这个痛点,我开发了一个名为 HTTP Anomaly Rank 的算法,它能自动帮你筛选出最值得关注的响应。
HTTP Anomaly Rank 现已集成到 Turbo Intruder 中。攻击完成后,它会自动将最异常的发现排在结果表顶部,你完全不需要手动操作。
在 Burp Suite 2025.10 版本中,我们还将此算法集成到了 API,让你可以轻松地在自己的工具中使用。由于它能高效处理海量结果集,因此特别适合用于构建基于 AI 的安全测试功能。
算法原理
HTTP Anomaly Rank 源自我在 2016 年开展 Backslash Powered Scanner: Automating Human Intuition 研究时开发的差异化检测逻辑。当时,我构建 Backslash Powered Scanner 的目标是通过识别载荷对(如 "vs ")响应中的细微差异,来发现未知类别的注入漏洞。
精确比对 HTTP 响应是个公认的难题,因为响应内容往往充满噪声。经过多次尝试,我找到了一种可靠的方法:
- 计算大量响应属性(比如状态码、行数、精确字节序列等)
- 识别出哪些属性是稳定的
- 使用这些稳定属性进行响应比较
这种方法让我能够回答「这两个载荷的响应是否存在持续性差异」这一问题,并成功自动发现了一些很有价值的漏洞。完整细节请参阅相关白皮书和技术演讲。
HTTP Anomaly Rank 的核心思路是:为每个响应打分,分数反映它与其他响应的差异程度。算法分两步工作:
第一步:计算属性权重
算法首先为每个属性计算权重,权重取决于该属性的稳定性。
| Payload | Status | Content-Type | Word-count | CRC32 |
| — | — | — | — | — |
| administrator | 403 | text/html | 812 | d753916d |
| admin | 403 | text/html | 812 | 5129f3bd |
| sales | 503 | text/html | 97 | 710639db |
| accounting | 200 | text/html | 812 | 3978f20f |
| ADMIN | 403 | text/html | 811 | 9fa1cbc1 |
| root | 503 | text/html | 97 | 27df2486 |
| test | 403 | text/html | 812 | e45449e7 |
以上面的响应集合为例,算法会这样分析各个属性:
-
Status有 3 个不同的值(403、503、200),属于适中的变化程度,因此获得较高权重
-
Content-Type始终为
text/html从不改变,完全没有区分度,因此无参考价值 -
CRC32在每个响应中都各不相同(可能是因为用户名被反射到响应中),变化过于频繁,同样无参考价值
-
Word-count有 3 个不同的值(812、97、811),具有区分度,但权重略低于
Status
第二步:计算响应评分
接下来,算法会为每个响应打分。评分依据是:该响应的各属性值有多罕见。在这个例子中,ADMIN获得了最高分,原因在于它的 Word-count值为 811,这是所有响应中独一无二的值——其他响应的 Word-count要么是 812(出现 4 次),要么是 97(出现 2 次)。
算法优势
这种方法能够检测并标记出存在细微差异的响应,即使整体响应内容充满噪声。上面的演示视频展示了具体效果。
随着收集的响应数量增加,评分准确性也会不断提高。虽然计算过程比较消耗计算资源,但算法复杂度为 O(N),具有良好的线性扩展性。在 Turbo Intruder 的实现中,我将评分计算推迟到攻击完成后才执行,这样可以避免在攻击过程中浪费 CPU 资源。
Turbo Intruder 集成
我对 Turbo Intruder 的设计理念之一是:尽可能减少用户的手动操作。为了实现这一目标,攻击完成时,工具会自动按异常等级列对结果表排序。
如果自动排序不符合你的需求,你也可以使用 table.setSortOrder()方法自定义排序方式,按任意列排序结果表。
敬请期待更多 Turbo Intruder 的易用性改进!
使用提示
如果你看到 “Anomaly Rank” 列但数值始终显示为 0,说明你需要更新 Burp Suite。该功能仅在 2025.10 及更高版本中可用。
欢迎分享你的使用体验,也欢迎反馈是否希望 Burp Intruder 也集成这个功能。
祝使用愉快!
Introducing HTTP Anomaly Rank
免责声明:本博客文章仅用于教育和研究目的。提供的所有技术和代码示例旨在帮助防御者理解攻击手法并提高安全态势。请勿使用此信息访问或干扰您不拥有或没有明确测试权限的系统。未经授权的使用可能违反法律和道德准则。作者对因应用所讨论概念而导致的任何误用或损害不承担任何责任。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:securitainment James Kettle《HTTP 异常等级算法:自动筛选异常响应》