从单一ID到机密报告披露——打破真实漏洞赏金计划中的模式

admin 2026-01-23 12:17:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 作者发现某漏洞赏金平台将报告文件ID仅做ASCII十六进制编码且结构固定,通过比对三段样本定位4位可变字符,用脚本暴力枚举成功越权下载他人完整漏洞报告,证明“看似复杂实则可预测”的访问控制缺陷,提醒研究者对任何编码参数都应先解码再评估其随机性。 综合评分: 88 文章分类: 漏洞分析,WEB安全,渗透测试,实战经验,安全工具


cover_image

从单一 ID 到机密报告披露 —— 打破真实漏洞赏金计划中的模式

haidragon haidragon

安全狗的自我修养

2026年1月22日 14:47 湖南

#

官网:http://securitytech.cc


#

这是我的第二篇博文。

这次的方法不同了。 没有花哨的攻击手段,也没有明显的漏洞。只有耐心、模式识别和大量的深夜好奇心。


了解应用程序流程

在深入研究实际漏洞之前,了解此应用程序如何处理漏洞报告非常重要。

当研究人员通过电子邮件报告漏洞时,团队会在其 Web 应用程序中创建一个内部问题——本质上是一个工单系统。每个报告都会被分配一个问题 ID,并生成一个专门的页面来跟踪该报告的整个生命周期。

本问题页面维护着:

  • 完整的通信历史记录
  • 状态更新
  • 上传的证据文件,例如屏幕截图、文本文件和 PDF 文件

每期内容都可以通过类似这样的 URL 访问:

/common/issue-tracking.php?id=228

之后,所有相关的证据文件都会从内部端点动态加载。这种流程旨在集中报告并简化协作,但如果访问控制处理不当,它也会成为一个严重的攻击面。

了解了这个工作流程之后,我开始研究这些报告资源的保护程度。


从简单的 ID 到更强大的功能

首先吸引我注意的是 id 参数的解码是多么容易。

乍一看,这个值似乎很复杂——一个很长的十六进制字符串——但当在 Burp Suite 中解码为 ASCII 十六进制时,它立即变成了可读字符。

不是哈希值, 也不是随机字节, 只是结构化文本。

光是这一点就足以让我放慢脚步,仔细观察。


值得再次考察的目标

我之前就研究过这个目标。 早期的报告包括存储型跨站脚本攻击(XSS)和双因素身份验证(2FA)配置错误等问题。过了一段时间后,我决定以全新的视角重新审视它。

夜已深——正是在这种时候,你不再匆忙,开始注意到别人忽略的事物。

该应用程序的报告流程非常简单: 如果您通过电子邮件报告漏洞,团队会在他们的 Web 应用程序中创建一个内部问题。每个报告都会生成一个类似工单的页面,其中包含完整的沟通记录以及上传的证据。

这些报告可通过类似这样的 URL 访问:

/common/issue-tracking.php?id=228

当然,我首先检查的就是这个端点是否存在经典的 IDOR 漏洞。经过充分测试后,很明显简单的 ID 操作不起作用,不存在直接的 IDOR 漏洞。我没有继续深入研究,而是回到我之前的报告,查看了原始邮件往来,其中提到了相同的问题跟踪 URL。

那时我决定深入挖掘——不是横向挖掘,而是纵向挖掘。


证据档案改变了一切

在报告页面中,我注意到所有上传的证据文件——图片、文本文件、PDF——都是从不同的端点加载的:

/common/admin/issue-tracking/file.php?id=585b243672692442373b4d4d2b33327c707b737428517b6c73266d3423747d6f364d3823255d3a

这里的参数 id 看起来像是经过编码的,而不是随机的。

我直接把它复制到 Burp Decoder 中,并将其解码为 ASCII 十六进制。

结果:

X$6ri$B7;MM+32|p{st(Q{ls&m4#t}o6M8#%:

乍一看,它显得很杂乱——大写字母、小写字母、数字、特殊字符——所有东西都混杂在一起。

但我并没有就此止步。

按回车键或点击查看完整尺寸的图片

解码为 ASCII 十六进制


模式开始显现

我查看了同一份报告中的另一个证据文件 URL:

/common/admin/issue-tracking/file.php?id=565b243672692442373b4d4b2b33327c707b737428517b6c73266d3423747d6f364d3823255d36

解码:

V$6ri$B7;MK+32|p{st(Q{ls&m4#t}o6M8#%6

现在事情开始变得有趣起来了。

比较两个解码值,只有四个部分发生了变化

  • 首字母大写变化
  • 中间两个大写字母变化
  • 最后一个字符变化
  • 其余保持不变

那不是随机性, 那是结构。

为了确保万无一失,我又查阅了一份证据文件:

/common/admin/issue-tracking/file.php?id=545b243672692442373b4d492b33327c707b737428517b6c73266d3423747d6f364d3823255d32

解码:

T$6ri$B7;MI+32|p{st(Q{ls&m4#t}o6M8#%2

至此,这种模式已无可辩驳。

按回车键或点击查看完整尺寸的图片

模式理解


自动化好奇心

一旦规律明确,手动测试就失去了意义。

我编写了一个 Python 脚本:

  1. 只暴力四个变量位
  2. 重新编码为 ASCII 十六进制
  3. 自动请求端点
  4. 记录有效响应

这不是盲目蛮力,而是结构驱动的约束枚举

于是我让脚本运行了。

按回车键或点击查看完整尺寸的图片

成功获取了一些其他有效 ID


当剧本开始反驳

脚本开始返回有效响应。

当我手动访问这些网址时……

我看到了其他研究人员的报告

完整 PDF, 截图, 内部漏洞细节。

无需认证, 无需授权。

那一刻问题变得严肃起来。

按回车键或点击查看完整尺寸的图片

已成功下载其他用户报告


为什么这很重要

这不是破解加密, 也不是暴力破解。

而是发现:看似复杂,其实可预测。

机密漏洞报告是平台最敏感的资产之一。


最后想说的话

无论看到什么编码值,都不要默认它是安全的。

尝试解码它。

大多数漏洞并非隐藏, 而是就在眼前。


  • 公众号:安全狗的自我修养
  • vx:2207344074
  • http://gitee.com/haidragon
  • http://github.com/haidragon
  • bilibili:haidragonx

#

#


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全狗的自我修养 haidragon haidragon《从单一 ID 到机密报告披露 —— 打破真实漏洞赏金计划中的模式》

评论:0   参与:  0