文章总结: 本文分析集合循环引用导致拒绝服务漏洞的测试流程。攻击者利用集合嵌套与贡献者机制无确认的缺陷,构造循环引用使受害者页面加载时陷入无限循环,造成持久化功能失效。危害等级高,需管理员介入修复。建议平台校验循环引用并限制嵌套深度。 综合评分: 78 文章分类: 漏洞分析,web安全,红队
集合循环引用导致拒绝服务漏洞
原创
游山玩水 游山玩水
山水SRC
2026年9月30日 08:48 河南
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
免责声明
本公众号分享的所有渗透测试技术文章仅面向合法授权的安全测试、学习交流与研究用途。读者必须确保自身行为符合《网络安全法》等相关法律法规,严禁将其用于任何未授权攻击等非法活动。因不当使用或传播相关内容所引发的任何法律责任与风险,由行为人自行承担,本公众号(或本人)概不负责
测试流程
测试前提
-
功能基础
:目标平台支持“集合(List/Collection)”功能,允许用户创建集合并保存文章、视频或其他对象(包括其他集合)。
-
贡献者机制
:集合支持添加“贡献者(Contributor)”,且添加过程无需对方确认(或攻击者可控),被添加者即拥有该集合的某些权限(如查看、编辑)。
-
对象引用
:系统允许将集合 A 保存(嵌套)到集合 B 中,即集合可以作为对象被添加到另一个集合。
-
后端校验缺失
:服务端在处理“Save to Collection”请求时,未检测循环引用(如 A 包含 B,B 又包含 A)。
-
账户要求
:攻击者拥有一个账号,受害者(至少一个)账号,且攻击者可以获取受害者的用户 ID 或用户名。
#
测试流程
步骤一:准备攻击环境
- 攻击者登录账号,创建两个集合:
- 集合 A(
list_id=1,命名为Attacker_List_1) - 集合 B(
list_id=2,命名为Attacker_List_2)
- 将受害者 V1 添加为集合 A 的贡献者,将受害者 V2 添加为集合 B 的贡献者(利用 Contributor 机制,无需受害者确认)。
步骤二:构造循环引用
- 拦截“Save to Collection”请求(通常为
POST /api/save-to-collection或类似接口)。 - 对集合 A 执行保存操作:将集合 B 的 ID 作为对象保存进集合 A。
- 请求参数示例:
list_id=1&object_id=2&object_type=collection - 服务器返回
200 OK,表示集合 A 现在包含了集合 B。
- 对集合 B 执行保存操作:将集合 A 的 ID 作为对象保存进集合 B。
-
请求参数示例:
list_id=2&object_id=1&object_type=collection -
服务器返回
200 OK,表示集合 B 现在包含了集合 A。 -
此时形成循环引用:集合 A ↔ 集合 B
。
步骤三:触发受害者端功能失效
-
受害者 V1 和 V2 分别登录账号,访问
/saved/页面(即“已保存”或“我的收藏”页面,该页面通常会列出用户作为贡献者或所有者的集合,并可能递归加载内容)。 -
页面加载时,后端尝试解析集合 A 和 B 的嵌套关系,由于循环引用,陷入无限循环或栈溢出,最终导致渲染失败。
-
截图证明
:受害者看到错误页,显示
"Sorry, something went wrong..."或类似 500 错误。
步骤四:验证无法自助恢复
-
受害者尝试通过 UI 删除集合、取消贡献者关系、移除嵌套对象等操作,均因后端逻辑在循环处理中异常而失败(或操作被拒绝)。
-
对照组验证
:攻击前,受害者 V1/V2 访问
/saved/页面正常;攻击后,持续报错,证明漏洞已造成持久化影响。
#
危害等级与影响
| 维度 | 影响描述 | | — | — | | 功能失效(拒绝服务) | 高。受害者(甚至更多用户,若集合被公开或共享)无法正常访问“已保存”页面,导致核心功能不可用。攻击者可针对特定高价值目标(如管理员、明星账号)实施定向打击。 | | 持久化影响 | 中。由于循环引用存储在数据库中,受害者无法自助修复,需平台管理员介入手动修改数据库才能恢复,增加运维成本。 |
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:山水SRC 游山玩水 游山玩水《集合循环引用导致拒绝服务漏洞》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论