HTTP异常排名算法介绍
如果你曾使用过Burp Intruder或Turbo Intruder,肯定对通过反复按长度、状态码等排序表格,手动筛选数千个响应的过程非常熟悉。我开发了一种名为HTTP异常排名的算法,能够高效地为你挑选出最值得关注的响应。
HTTP异常排名现已集成到Turbo Intruder中,无需任何操作即可自动将最异常的发现结果置顶。我们还在2025.10版本的Burp Suite API中集成了该算法,方便用户在自己的工具中使用。由于它能高效筛选海量结果集,对希望构建基于AI功能的用户尤其有用。本文将深入解析算法原理,首先通过一个快速演示展示其效果:
HTTP异常排名原理
HTTP异常排名源自2016年我在"反斜杠驱动扫描器:自动化人类直觉"研究中开发的差异比对逻辑。该扫描器通过识别像" vs “这样的载荷对之间的细微响应差异,来发现未知的注入漏洞类。准确比对HTTP响应是个公认难题,因为响应通常包含大量噪声,但我最终找到了一种可靠方法:基于计算大量响应属性(如状态码、行数、精确字节序列等),识别稳定属性,并用于响应比较。这使得我能回答"这两个载荷的响应是否持续不同"的问题,并自动化发现了一些优质漏洞。完整细节请参阅白皮书和演示文稿。
HTTP异常排名根据每个响应与其他响应的差异程度进行评分。首先,算法基于每个属性的稳定程度计算权重。
| 载荷 | 状态码 | 内容类型 | 词数统计 | 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 |
以上述响应集为例:
- 状态码仅有两个唯一值,因此权重较高
- 内容类型从未变化,因此无用
- CRC32每个响应都唯一,因此无用(可能用户名被反射)
- 词数统计有三个唯一值,因此有用但权重低于状态码
算法随后检查每个响应,根据该响应中属性值的独特程度结合权重进行评分。此示例中,ADMIN因具有唯一词数统计而获得最高分。这种方法使其能够检测并标记存在微小差异的响应,即使整体响应内容噪声很大——具体示例请观看上方视频。
随着收集更多响应,评分准确度会提升。计算量较大但算法复杂度为O(N),因此扩展性良好。在Turbo Intruder中,我为避免浪费CPU周期,设置仅在攻击完成时计算评分。
Turbo Intruder集成
我对Turbo Intruder的愿景之一是尽可能减少用户点击。为实现这一目标,现在攻击完成时会自动按异常排序列对结果表排序。如果该策略不适用,用户可通过table.setSortOrder()覆盖设置,按任意列自动排序。
如果你看到"异常排名"列但值始终为0,说明需要更新Burp Suite。该功能在2025.10及后续版本中可用。欢迎反馈使用体验,以及是否希望该功能也加入Burp Intruder。
享受使用吧!