厦门凤凰创壹软件有限公司系统idcard参数SQL注入漏洞复现
厦门凤凰创壹软件有限公司系统idcard参数SQL注入漏洞复现
免责声明:本篇仅用于授权环境下的安全研究与防御建设,请勿对未授权系统实施文中任何请求。
0x00 漏洞概述
厦门凤凰创壹软件有限公司长期从事虚拟现实教学培训软件开发,其三维互动教学平台为各校精品专业建设、创新教学模式和教学内容提供支撑,平台 Web 目录以 /100vr/ 为路径前缀。该系统的个人信息提交接口 subinfo 存在SQL注入漏洞:idcard(身份证号)参数在服务端未经参数化处理,直接拼接进 SQL 语句,导致攻击者可以通过报错注入读取数据库信息。
漏洞描述指出,攻击者可以利用该漏洞获取数据库信息。由于该接口属于未认证即可访问的表单提交类功能,注入点对外开放,利用过程不依赖任何账号凭据,风险集中在数据库数据的保密性上。
公开漏洞库中存在针对该建站系统SQL注入漏洞的收录条目(CNVD-2020-09995,阿里云漏洞库编号 AVD-2021-700282),其 CVSS3 基础评分为 7.8,攻击路径为网络(AV:N/AC:L/Au:N/C:C/I:N/A:N),保密性影响评价为完全;不过该公开条目正文并未给出具体的接口与参数细节。另有一条 2019 年收录的同厂商系统SQL注入条目(CNVD-2019-23846),其描述文字与本篇 0x00 节所引漏洞描述一致,属于同一厂商系统的另一注入问题,两者不应混同。
0x01 影响范围
- 涉及系统:厦门凤凰创壹软件有限公司建站系统(100vr 虚拟现实教学平台)。
- 判定条件:Web 页面包含 /100vr/cssfiles 路径特征,或页面底部出现"技术支持:厦门凤凰创壹软件有限公司"字样。
- 受影响功能:/100vr/center/subinfo/ 个人信息提交接口,注入点为 idcard 参数。
厂商未公开受影响版本范围,公开检索亦未获得具体的版本划分信息,故无法给出精确版本边界。该类教学平台多部署于院校及培训机构网络环境,若接口暴露在公网且未部署过滤策略,数据库中的用户提交信息均面临被拖取的风险。至于实际部署数量与行业分布,公开渠道无可靠统计,本篇不做描述。
0x02 漏洞分析
subinfo 接口用于接收姓名、省份、城市、身份证号、性别、生日等表单字段。问题出在 idcard 参数上:服务端将其值以字符串拼接的方式并入 SQL 语句,未做预编译或严格类型校验。
复现所用载荷采用了单引号闭合加报错回显的经典路径:先以单引号闭合 idcard 值的引号上下文,拼接 updatexm l(1,concat(0x7e,md5(45643)),1) 触发 xm l 解析报错,报错信息中会携带 concat 的拼接结果;随后以 %23(URL 编码的注释符 #)截断后续 SQL 片段,并以 where 0%23 收尾维持语句语法完整。updatexm l 第二参数要求合法的 XPath 表达式,0x7e 开头的字符串必然解析失败,数据库从而把整段字符串作为错误信息回显到 HTTP 响应中——这条报错回显通道就是数据外带的关键。
由于报错回显的位置可以放置任意标量表达式,攻击者将 md5(45643) 替换为子查询,即可逐条读取任意表的数据。该接口返回状态码 500 且响应体直接携带报错内容,说明生产环境未屏蔽数据库错误信息,报错注入在此完全可行。
0x03 利用链与请求包
利用链为单请求闭环:构造指向 subinfo 接口的 POST 表单请求,在 idcard 参数中携带报错注入载荷,通过响应体中的特征字符串确认注入成立。以下请求包的主机地址以示意公网地址 192.0.2.10 代替。
注入请求包:
POST /100vr/center/subinfo/ HTTP/1.1
Host: 192.0.2.10
Content-Type: application/x-www-form-urlencoded
name=0&province=1&city=1&idcard=1' and updatexm l(1,concat(0x7e,md5(45643)),1))%23 where 0%23&sex=1&birthday=1各字段说明:
- name=0、province=1、city=1、sex=1、birthday=1:正常表单字段,取值无特殊含义,仅保证表单结构完整。
- idcard:注入点。1' 闭合引号;and updatexm l(1,concat(0x7e,md5(45643)),1) 触发报错回显;第一个 %23 注释 idcard 值右侧的原有 SQL;where 0 与第二个 %23 补齐外层语句并注释残余片段。
成功判定: 响应状态码为 500,响应体中出现 0b32d6a87c09c32b3cd90dfd5ef5699。该字符串即 md5(45643) 的十六进制结果(完整值 0b32d6a87c09c32b3cd90dfd5ef5699f,判定时匹配其前 31 位),响应回显该值说明报错通道生效、注入成立。
后续利用(说明性推断): 在报错通道确认可用的前提下,理论上可将载荷中的 md5(45643) 替换为 (select ...) 形式的标量子查询以提取数据,此为本类报错注入的通用后续路径,属基于注入原理的推断,本篇未做实测展开。
0x04 检测与修复建议
检测排查建议:
1. 资产定位:在边界与站点梳理中检索页面包含 /100vr/cssfiles 引用或"技术支持:厦门凤凰创壹软件有限公司"落款的系统,确认部署范围。
2. 日志审计:检查 Web 访问日志中对 /100vr/center/subinfo/ 的 POST 请求,重点筛查 idcard 参数中出现单引号、updatexm l、extractvalue、concat、select 等特征的记录;同步核对数据库审计日志中的异常报错与非常规查询。
3. 数据核查:确认接口对应数据表是否已被异常读取,必要时复核相关用户提交数据的访问痕迹并评估泄露影响。
修复建议:
1. 将 subinfo 接口的全部参数改为参数化查询(预编译语句),从根源上消除拼接;对 idcard 等字段同步实施格式校验(长度、字符集、编码规则)。
2. 核对厂商公告中的受影响范围,升级至官方修复版本或更高版本;升级前备份配置和数据。
3. 暂不能升级时,限制该接口的访问来源,配置最小数据库权限,并在 WAF 上部署针对报错注入的拦截规则。
4. 关闭生产环境的数据库错误回显,统一返回通用错误页,避免报错通道被用于数据外带。
5. 持续检查 Web 和数据库审计日志,发现异常查询或数据导出后及时处置。
0x05 参考资料
1. 阿里云漏洞库:厦门凤凰创壹软件有限公司建站系统存在SQL注入漏洞(CNVD-2020-09995):https://avd.aliyun.com/detail?id=AVD-2021-700282
2. CNVD 收录页:https://www.cnvd.org.cn/flaw/show/CNVD-2020-09995
3. 厦门凤凰创壹软件有限公司官网:http://www.onesoft.com.cn/

Wayyt 8小时前
最新评论