HTTP异常排名算法:智能识别Web安全测试中的关键响应

本文介绍了HTTP异常排名算法,该算法能够自动分析HTTP响应差异,高效识别安全测试中的异常结果。文章详细讲解了算法原理、集成应用场景,并展示了在Turbo Intruder工具中的实际应用效果。

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。

享受使用吧!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计