凤凰创壹系统 subjcmenusupport 文件 SQL 注入漏洞复现
凤凰创壹系统 subjcmenusupport 文件 SQL 注入漏洞复现
0x00 漏洞概述
凤凰创壹是一家从事教学培训软件开发的企业,其产品主打三维互动教学,为各类院校的精品专业建设、创新教学模式与教学内容提供支撑平台。该系统采用 100VR 相关的 Web 业务架构,前端页面与业务接口均挂在 /100vr/ 路径之下。
本篇分析的漏洞存在于系统业务接口 /100vr/center/subjcmenusupport 中。该接口在处理 POST 请求时,直接将请求体中的 courseid 参数拼接入 SQL 语句执行,未做参数化处理与输入校验,攻击者无需认证即可构造注入语句读取数据库信息。该问题 CVSS 评分为 8.0,属于高危级别,于 2020 年 11 月被披露,无公开 CVE 编号。漏洞成功利用后,攻击者可以利用报错注入的方式逐步获取数据库中的数据内容。该漏洞验证程序备注指出,厂商在披露时点暂未提供修复方案。
0x01 影响范围
受影响对象为厦门凤凰创壹软件有限公司建站系统的业务接口,具体判定条件如下:
- Web 服务存在
/100vr/center/subjcmenusupport接口,且该接口接受courseid参数并直接参与数据库查询; - 接口对攻击者可达,包括将其暴露在公网或跨网段可达的部署。
来源信息中未提供明确的具体受影响版本区间,也未关联公开 CVE 编号,版本层面的影响范围需以厂商公告为准(披露时点厂商暂未提供修复方案)。从页面识别特征看,站点页面中引用 /100vr/cssfiles 静态资源路径,或页脚含「技术支持:厦门凤凰创壹软件有限公司」字样,均可判定属于该系统的部署实例。凡上述接口可达且未修复的环境,均处于风险之中;结合公开渠道可见该产品线此前还曾被披露其他注入点、未授权访问与目录遍历等问题,相关部署宜整体纳入排查范围。
0x02 漏洞分析
该系统以课程(course)为核心组织教学资源,/100vr/center/subjcmenusupport 接口按课程编号查询相关支持内容。从该漏洞的验证程序逻辑来看,接口在处理 POST 请求体中的 courseid 参数时,将其以字符串拼接的方式直接合入 SQL 查询,未做任何过滤、转义或参数化绑定,形成了典型的字符型注入点。
验证语句采用的是 MySQL updatexm l() 报错注入技术:构造 courseid=867'and updatexm l(1,concat(0x7e,md5(45643)),1)# 作为参数值提交。单引号用于闭合参数在 SQL 语句中的原有引用,updatexm l() 函数在第二个参数不满足合法 XPath 表达式时会抛出解析错误,并把拼接内容(此处为 0x7e 波浪符加上 md5(45643) 的计算结果)带出到错误信息中回显,末尾以 # 注释符截断原语句剩余部分。选择 md5(45643) 作为回显内容是无害化验证的常见做法——其计算结果固定为 0b32d6a87c09c32b3cd90dfd5ef5699f,不含引号等特殊字符,且足以证明注入语句确实在数据库层面被执行。
值得注意的是,该接口对注入请求返回 HTTP 500 状态码,错误信息直接进入了响应体,说明系统未开启统一错误屏蔽,报错回显通道是畅通的。这意味着攻击者只需将 concat() 中的子查询替换为任意 SELECT 语句,即可逐段读取数据库中的表结构、账号凭证与业务数据。由于接口位于业务路径下且验证请求未携带任何认证凭证即可触发,推断该接口在认证校验之外,登录前即可访问。
0x03 利用链与请求包
利用链只有一个步骤:向存在缺陷的接口提交携带报错注入语句的 POST 请求,依据响应状态码与错误信息内容判定漏洞存在。
第一步,确认目标为凤凰创壹系统。依据 0x01 节的页面特征(/100vr/cssfiles 资源引用或「技术支持:厦门凤凰创壹软件有限公司」页脚字样)识别目标。假设目标部署于 192.0.2.30(本地复现时可替换为 127.0.0.1 的对应端口)。
第二步,向 /100vr/center/subjcmenusupport 接口提交如下请求包:
POST /100vr/center/subjcmenusupport HTTP/1.1
Host: 192.0.2.30
Content-Type: application/x-www-form-urlencoded
courseid=867'and updatexm l(1,concat(0x7e,md5(45643)),1)%23其中请求体经 URL 解码后为:
courseid=867'and updatexm l(1,concat(0x7e,md5(45643)),1)#对应命令行复现方式:
curl -i "http://192.0.2.30/100vr/center/subjcmenusupport" -X POST -d "courseid=867'and updatexm l(1,concat(0x7e,md5(45643)),1)%23"第三步,判定结果。若服务端返回状态码 500,且响应体中包含字符串 0b32d6a87c09c32b3cd90dfd5ef5699(即 md5(45643) 回显值的前缀部分),说明注入语句已被数据库执行,报错回显通道确认可用,漏洞存在。
在此基础上,将验证语句中 concat() 内的 md5(45643) 替换为 (select ...) 形式的子查询,攻击者即可逐步枚举数据库名、表名、字段与数据记录,完成对数据库信息的读取。验证程序仅包含上述检测请求,未内置进一步取数的利用步骤,本节对后续取数方式的描述依据漏洞说明中「攻击者可以利用漏洞获取数据库信息」的影响定性,具体取数路径以实测环境为准。
0x04 检测与修复建议
检测方面:
1. 排查公网、办公网边界及第三方托管环境中的凤凰创壹系统部署,确认 /100vr/center/subjcmenusupport 等业务接口的暴露范围;
2. 依据 0x03 节请求包对疑似目标进行验证,若返回 500 且响应体出现报错回显特征字符串,即可确认注入点存在;
3. 检查 Web 访问日志与数据库审计日志,检索针对 subjcmenusupport 接口的异常 POST 请求、包含 updatexm l/extractvalue 等函数特征的查询,以及异常数据导出行为。
修复方面:
1. 核对厂商公告中的受影响范围,跟进官方修复方案并及时升级(披露时点厂商暂未提供修复方案,需持续关注厂商官网 http://www.onesoft.com.cn/ 的更新动态),升级前备份配置和数据;
2. 从代码层面修复根因:对 courseid 等请求参数使用参数化查询,进行严格输入校验,数据库连接遵循最小权限原则;
3. 暂时无法修复的环境,限制接口的访问来源,仅允许可信地址段访问;依据验证程序备注中的建议,如非必要,禁止公网访问该系统;
4. 在系统前端部署 WAF 规则,对 SQL 注入特征进行拦截,并对数据库操作实施监控;
5. 发现异常查询或数据导出后及时处置,复核相关数据,评估是否存在凭证泄露并轮换相关凭据。
0x05 参考资料
1. 凤凰创壹软件官方网站:http://www.onesoft.com.cn/

Wayyt 2小时前
最新评论