红盟发卡系统多语言参数任意文件读取漏洞复现
红盟发卡系统多语言参数任意文件读取漏洞复现
0x00 背景概述
红盟发卡系统(部分公开资料中称红盟云卡)是一款面向虚拟商品在线售卖场景的发卡系统,基于 ThinkPHP 框架开发,支持多规格商品、订单查询等功能,在中小电商与自动发卡场景中有较多部署。该系统历史上曾多次被公开披露安全问题,例如 2024 年 7 月公开的 order/orderContent 反序列化 RCE 等。
本条漏洞于 2024 年 6 月 4 日对外披露,类型为文件读取,CVSS 评分 7.5,风险等级高危,无 CVE/CNVD 编号。其核心表现是:攻击者通过构造特殊 URL,即可读取系统敏感信息。需要说明的是,该漏洞在披露记录中的名称提及了 /index/chadan/queryorderpage 路径,但公开流传的验证代码全部请求均走 /index/ajax/lang 接口,两者关系无法进一步核实;本复盘以公开可验证的利用链为准,不对 queryorderpage 端点做任何缝合或猜测。
0x01 漏洞成因
系统的 /index/ajax/lang 接口用于加载多语言包,接受一个名为 lang 的参数。当该参数被传入一个相对路径时,服务端会按该路径加载并执行对应的本地文件,且对参数内容缺少约束。
从利用特征看,payload 形如 lang=../../application/databa se,与 ThinkPHP 6.0.13 及更早版本多语言本地文件包含问题(公开编号 QVD-2022-46174)的触发特征高度一致——即多语言特性开启且 lang 参数可控时,lang 值会被拼接进文件包含逻辑。该系统基于 ThinkPHP 开发,推测其问题正是这一框架层缺陷在业务路由上的具体体现,此点为推断,未经源码级核实。
由于 application/databa se.php 是 PHP 配置文件,被包含执行后其中的数据库连接配置(主机、用户名、密码、库名等)会随执行结果输出到响应中,验证代码正是以响应体中是否出现 hostname 关键字作为成功判据。
0x02 影响范围
- 受影响产品:红盟发卡系统。
- 具体受影响版本:披露记录中未给出明确的版本区间,官方公告亦未检索到;凡部署了存在该多语言加载接口且 lang 参数未做过滤版本的实例,原则上均在风险范围内。
- 资产识别特征:可通过页面特征 body="assets/shop/dist/uaredirect.js" 识别该系统在互联网上的暴露面。
- 利用前提:接口未做访问控制即可直接触发,无需任何认证与会话。
0x03 复现环境
- 目标系统:公网或内网部署的红盟发卡系统实例(本复盘以 192.0.2.10 作为示例目标地址)。
- 访问方式:任意 HTTP 客户端即可,无需登录、无需 Cookie、无需自定义请求头。
- 前置确认:可先访问站点首页,确认页面源码包含 assets/shop/dist/uaredirect.js 特征,再进行后续验证。
0x04 复现过程
整个利用链只有一步:向 /index/ajax/lang 发起 GET 请求,lang 参数携带指向数据库配置文件的相对路径。
检测与利用一体请求包(可直接复用):
GET /index/ajax/lang?lang=../../application/databa se HTTP/1.1
Host: 192.0.2.10
User-Agent: Mozilla/5.0 (compatible; security-research)
Accept: */*
Connection: close请求要点:
1. lang 参数值为 ../../application/databa se,即相对站点入口向上回溯后定位到 application 目录下的 databa se 配置文件(实际拼接逻辑由服务端完成,无需携带 .php 后缀的写法与该接口的多语言文件定位方式一致)。
2. 请求不需要跟随重定向,也不需要携带任何认证信息。
成功响应的判定条件为两点同时满足:
- HTTP 状态码为 200;
- 响应体中出现 hostname 字样——这是 databa se 配置文件被包含执行后,其中数据库主机配置项随输出回显的直接证据。
满足上述两点即证明目标存在该漏洞。此时响应体中除了 hostname,通常还会伴随数据库用户名、密码、数据库名等完整连接配置(响应内容依实例配置而定,具体字段以实际返回为准)。
在上述固定 payload 之外,公开验证代码还支持自定义模式:将 lang 参数替换为任意相对路径(例如 ../../application/databa se 这类形式的其他路径),即可尝试读取实例上的其他本地文件。这也意味着漏洞的实际影响不限于数据库配置,凡 Web 进程可读且能被该包含逻辑处理的文件均在潜在读取范围内。
复现注意:databa se.php 属于 PHP 文件,其内容是随包含执行而输出,并非以源码形式原样回显;因此响应中看到的是配置项的键名与值混合的执行结果,据此判断即可,不应期待得到完整的源码文本。
0x05 参考信息
1. https://nosec.org/home/detail/6065.html —— 本漏洞的公开披露页(2024-06-04,文件读取,CVSS 7.5)。
2. https://cn-sec.com/archives/2939408.html —— 红盟云发卡系统反序列化 RCE 公开分析,佐证该产品基于 ThinkPHP 及历史漏洞背景。
3. https://www.cnblogs.com/ZyonSec/p/19021582 —— ThinkPHP lang 参数本地文件包含问题的公开分析,与本漏洞 payload 特征一致的成因参考。
(注:截至复盘时未检索到官方修复公告,相关修复建议以披露页中的缓解措施为准:收敛接口暴露面、限制访问来源、核查日志并对已泄露凭据立即轮换。)

Wayyt 1小时前
最新评论