ChainedQuiz≤1.3.3未授权IDOR漏洞技术分析

admin 2025-12-27 01:59:56 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析了WordPress插件ChainedQuiz小于等于1.3.3版本的未授权IDOR漏洞。漏洞因使用可预测自增ID作Cookie且服务端缺权校验,致使攻击者无需登录即可篡改他人答题记录与成绩,严重威胁在线考试业务。修复建议包括使用不可预测令牌、更新操作前校验归属权以及及时升级官方补丁。 综合评分: 88 文章分类: 漏洞分析,WEB安全,漏洞POC,代码审计,安全开发


cover_image

Chained Quiz ≤ 1.3.3 未授权 IDOR 漏洞技术分析

云梦DC

云梦安全

2025年12月26日 09:24 河南

2025 年 12 月,安全研究员 Karuppiah Sabari Kumar(0xsabre) 披露了 WordPress 插件 Chained Quiz 中的一处严重逻辑漏洞,并分配编号 CVE-2025-10493

该漏洞属于未授权的不安全直接对象引用(IDOR),攻击者无需登录,即可通过篡改 Cookie,劫持并修改其他用户的答题记录与成绩


一、漏洞基本信息

  • 插件名称:Chained Quiz

  • 影响版本:≤ 1.3.3(部分报告标注至 1.3.5)

  • 漏洞类型:IDOR / Improper Authorization

  • 攻击条件:未授权(Unauthenticated)

  • 攻击入口admin-ajax.php

  • CWE

  • CWE-639:Authorization Bypass Through User-Controlled Key

  • CWE-285:Improper Authorization


二、漏洞本质一句话总结

插件使用“可预测的数据库 ID”作为用户身份凭证,并完全信任客户端 Cookie。

这是一个非常经典、但现实中极易出现的逻辑安全错误


三、业务背景:Chained Quiz 如何记录答题?

在 Chained Quiz 中:

  • 每一次用户答题
  • 都会在数据库中生成一条记录
  • 使用自增字段 completion_id 标识本次答题结果

插件通过一个 Cookie 来“关联用户与答题记录”:

chained_completion_id<quiz_id>=<completion_id>

例如:

chained_completion_id1=2

📌 问题在于:

  • 这个 completion_id 是自增整数
  • Cookie 由客户端完全控制
  • 服务端未校验“这个答题记录是否属于当前用户”

四、漏洞复现流程(HTTP 级,可实测)

Step 1:正常用户完成一次答题

当用户完成 quiz 后,浏览器中会出现类似 Cookie:

chained_completion_id1=2

此值用于后续提交或更新答题状态。


Step 2:攻击者准备请求

攻击者:

  • 不需要登录
  • 不需要管理员权限
  • 只需访问同一个 quiz

并拦截一次正常的答题提交请求(例如使用浏览器开发者工具)。

请求目标为:

POST /wp-admin/admin-ajax.php

Step 3:篡改 Cookie(关键)

攻击者将自己的 Cookie 修改为其他可能存在的 completion_id,例如:

chained_completion_id1=1

或:

chained_completion_id1=2

同时,还可以篡改请求参数中的:

  • answer
  • points
  • question_id

Step 4:发送请求并观察结果

服务器在处理请求时:

  • 直接使用 Cookie 中的 completion_id
  • 从数据库中取出对应记录
  • 执行 UPDATE 操作
  • 完全不校验记录归属

📌 结果是:

他人的答题记录被覆盖、篡改或重写


五、为什么这是“未授权 IDOR”而不是普通逻辑 Bug?

这个漏洞满足 IDOR 的所有典型特征:

✅ 1️⃣ 对象标识符可预测

  • completion_id 为自增整数
  • 可被枚举

✅ 2️⃣ 标识符完全由用户控制

  • 存储在 Cookie 中
  • 客户端可任意修改

✅ 3️⃣ 服务端缺乏鉴权校验

  • 不校验用户身份
  • 不校验 ownership
  • 不校验 session 绑定关系

✅ 4️⃣ 攻击无需登录

  • admin-ajax.php 前台可访问
  • 默认配置即可触发

六、漏洞影响分析

在实际场景中,该漏洞可导致:

  • 篡改他人答题内容
  • 修改分数、成绩
  • 污染排行榜
  • 伪造通过记录
  • 破坏证书、积分、评估系统可信度

⚠️ 如果 Chained Quiz 被用于:

  • 在线考试
  • 内部培训考核
  • 教育平台评测

那么该漏洞属于业务完整性级别的高危漏洞


七、从开发视角看:问题出在哪里?

❌ 错误设计 1:把数据库 ID 当“身份凭证”

数据库主键 ≠ 安全凭证 它必须永远假设是可猜的


❌ 错误设计 2:信任客户端 Cookie

Cookie 只是“存储介质”,不是“信任来源”。


❌ 错误设计 3:缺失最基本的授权校验

服务端至少应该校验:

  • 当前用户是否存在
  • completion_id 是否属于该用户
  • 是否允许修改

八、修复与防御建议

对插件开发者:

  • completion_id 不应直接暴露给客户端
  • 使用不可预测的 token(UUID / HMAC)
  • 每次 UPDATE 前校验 ownership
  • 将用户 ID 与答题记录强绑定

对站点运维:

  • 升级至官方修复版本(如已发布)
  • 审计是否存在异常答题记录
  • 谨慎在“考试/评测”场景使用未审计插件

九、一个通用安全结论

CVE-2025-10493 再次说明:

认证(Authentication)≠ 授权(Authorization) 有 Cookie ≠ 有权限

IDOR 往往不是技术难题, 而是**“少写了一行判断”**造成的系统级风险。


结语

Chained Quiz 的这个漏洞没有花哨技巧, 却能造成真实、直接、严重的业务破坏。


免责声明:

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

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

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

本文转载自:云梦安全 云梦DC《Chained Quiz ≤ 1.3.3 未授权 IDOR 漏洞技术分析》

评论:0   参与:  3