聚星彩票系统 /upload/uploadfile/upload.php 文件上传漏洞复现
聚星彩票系统 /upload/uploadfile/upload.php 文件上传漏洞复现
0x00 漏洞概述
聚星彩票系统是一款在线彩票管理系统,提供彩票销售、管理和数据分析等功能,常见于博彩类业务站点的后端支撑。该系统的通用上传接口 /upload/uploadfile/upload.php 存在文件上传漏洞:接口对调用者不设身份校验,对文件名不做起名限制,对文件内容也缺乏有效检查,攻击者可以直接提交任意 PHP 脚本并落至站点可访问目录,进而触发执行、获得远程代码执行能力,最终导致服务器被完全控制或敏感数据泄露。该问题综合评分 8.5(CVSS),定级为高危。
0x01 影响范围
- 受影响产品:聚星彩票系统(详情记载的厂商官网为 kvxr.com)。
- 受影响版本:公开渠道未提供具体版本信息,本文不作推测,以官方公告为准。
- 资产识别:页面响应体中同时包含
t_12pxAlpha与hidClientMobileVer两处特征,可据此识别暴露资产。 - 利用条件:攻击者能通过网络访问该上传接口即可利用,无需登录或任何前置认证。
0x02 漏洞分析
/upload/uploadfile/upload.php 是系统的文件上传处理端点,接收 multipart/form-data 请求,文件内容放在名为 Filedata 的表单字段中。从既有利用样例的请求结构看,问题集中在三点:
其一,Filedata 字段的 filename 完全由请求方控制,服务端对扩展名没有白名单限制,.php 等可执行后缀可以原样通过。
其二,文件内容不做实质校验。样例中在正文前置了 GI 两个字节(推断:用于伪装图片文件头、绕过基于内容前缀的检测;声明的内容类型也写成了 image/png,但文件名仍保留 PHP 后缀),说明服务端可能仅做前缀层面的"像不像图片"检查,而非真正的图片解析校验。
其三,上传完成后,服务端在响应体中回传形如 upload/<文件名> 的相对路径(JSON 结构收尾),等于直接告诉调用方文件落在了哪里——攻击者无需猜测路径即可访问触发。
三者叠加,构成"任意内容、任意名字、路径自报"的完整上传链。判定上,上传请求返回 HTTP 状态码 200 即视为被接受,再从响应体提取 upload/ 后的文件名即可拼出可访问路径。
0x03 利用链与请求包
利用链分两步:向 upload 接口提交带 PHP 后缀的脚本文件,再访问返回路径触发执行。
第一步:提交上传请求(以目标 http://192.0.2.10 为例;multipart 边界为随机值,以下仅为示意,请求体长度随边界与文件内容变化,不写死):
POST /upload/uploadfile/upload.php HTTP/1.1
Host: 192.0.2.10
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xm l,application/xm l;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,ru;q=0.8,en;q=0.7
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryK5K4sDixsMVCpfAF
------WebKitFormBoundaryK5K4sDixsMVCpfAF
Content-Disposition: form-data; name="Filedata"; filename="test.php"
Content-Type: image/png
GI
<?php /* PHP 脚本内容占位,利用时替换为可执行脚本 */ ?>
------WebKitFormBoundaryK5K4sDixsMVCpfAF--成功判定:响应状态码为 200,且响应体中包含形如 "upload/test.php"} 的路径回显。从响应体提取 upload/ 与引号之间的文件名,即可得到访问路径 /upload/<文件名>。
第二步:触发执行。访问 /upload/<文件名>,服务端解析 PHP 脚本即完成从"文件写入"到"代码执行"的跨越。既有利用样例以写入 test.php 后请求验证、以响应是否包含预期标记来确认脚本被执行;该样例的验证请求指向站点根目录 /test.php(推断:实际可访问路径以第一步响应体回传的 upload/ 相对路径为准,样例验证路径的写法仅作流程示意)。武器化利用样例写入的脚本支持主流连接器连接与命令执行(默认命令 whoami)等多种运行模式,拿到执行点后即可进一步控制服务器。
利用链小结:识别资产(t_12pxAlpha + hidClientMobileVer 页面特征)→ POST multipart 到 /upload/uploadfile/upload.php,Filedata 携带 PHP 后缀文件名与脚本内容 → 依据"200 + 路径回显"确认上传成功 → 访问回传路径触发执行。全程未携带任何 Cookie 或 Token,与"无需认证即可利用"的定性一致。
0x04 检测与修复建议
检测方面:
1. 在 Web 访问日志中检索对 /upload/uploadfile/upload.php 的匿名 POST 请求,重点排查 filename 为 .php 等可执行后缀、声明类型与实际内容不符的记录。
2. 检查站点 upload 目录(及历史备份)中是否存在来源不明、创建时间与日志中匿名上传时间吻合的脚本文件,并排查疑似后门。
3. 依据 t_12pxAlpha 与 hidClientMobileVer 页面特征盘点暴露资产,确认上传接口是否公网可达。
修复方面:
1. 核查公网、办公网边界及第三方托管环境中的部署,确认上传接口的暴露范围和版本;核对厂商公告中的受影响范围,升级至官方修复版本或更高版本,升级前备份配置和数据。
2. 服务端对上传文件的类型与扩展名实施白名单校验,拒绝 .php 等可执行后缀;采用真正的图片解析校验替代前缀比对,杜绝"伪图片"绕过。
3. 将上传目录设置为不可执行,并与脚本解析目录隔离;对上传后的文件名做随机化重命名,避免路径可预测。
4. 暂不能升级时,在网关层限制上传接口的访问来源,仅允许可信地址调用。
0x05 参考资料
- 聚星彩票系统厂商官网(详情记载,站点带浏览器访问校验):https://www.kvxr.com/

Wayyt 6小时前
最新评论