文件上传操作漏洞场景挖掘思路
字数 1581 2025-08-29 22:41:32
文件上传操作漏洞场景挖掘思路
文件下载相关漏洞
1. 文件ID遍历/注入
漏洞特征:
- 下载接口出现敏感信息
- 存在数字ID参数(userId, orderid等)
- GET/POST参数中包含文件标识
测试方法:
- 尝试ID值+1/-1修改
- 观察响应变化(如数据量、包长变化)
- 构造SQL注入测试:
id=2-1观察是否执行运算 - 尝试IDOR越权(需注意鉴权字段)
示例:
apis/download?id=1 → 包长6360
apis/download?id=2 → 包长6364
apis/download?id=2-1 → 包长6360(确认SQL注入)
2. 任意文件读取
常见参数:
- file, filePath, files, filename等
测试方法:
- 尝试路径遍历:
file=../../etc/passwd - 测试伪协议:
file:///etc/passwd - 观察图片链接形式:
http://file//etc/passwd
权限判断:
- 尝试读取
/root/.bash_history判断root权限 - 读取
/proc/self/status获取当前进程UID/GID - 读取
/etc/passwd获取系统用户信息
3. type参数文件读取
测试方法:
- 修改type参数尝试读取文件
- 即使看似无关的参数也可能存在风险
4. 400状态码路径遍历
特殊场景:
- 直接在URL路径上进行遍历测试
- 响应400时仍可能成功读取
文件上传相关漏洞
1. 路径可控覆盖
判断方法:
- 观察请求/响应包中的路径回显
- 修改路径参数测试是否可控
利用方法:
- 使用
../实现跨目录上传 - 覆盖网站关键文件
- 上传webshell到web目录
2. 上传路径推测
方法:
- 删除回显路径的第一层目录尝试
- 拼接常见web目录结构
- 如回显
saber/1.txt尝试直接上传到根目录
3. OSS云存储相关
验证方式:
- 未上云且可预览:直接上传HTML测试XSS
- 阿里云OSS:查找同厂商其他站点静态文件测试覆盖
- 泄露bucket桶名:利用脚本覆盖文件
4. 内容类型绕过
方法:
- 上传.jpg后缀但Content-Type改为text/html
- 上传.htaccess文件控制解析
- 上传SVG/PDF等包含恶意代码
5. 高级利用技巧
XXE利用:
- 修改XLSX/PPTX文件插入XXE payload
- 利用DOCTYPE声明读取文件或SSRF
软链接攻击:
- 创建指向敏感文件的软链接并打包为zip上传
- 系统解压时会读取目标文件内容
CSRF组合:
- 可控img参数构造CSRF请求
- 结合退出功能实现强制登出
RCE利用:
- 文件名重命名参数可能调用系统命令
- 使用
|等符号注入命令
导出功能相关漏洞
1. CSV注入
方法:
- 在导出数据中插入公式:
=cmd|' /C calc'!A0 - 当用户打开Excel时会执行命令
2. PDF导出SSRF
测试步骤:
- 插入
<iframe src="http://dnslog.cn">测试解析 - 确认后使用file协议读取文件:
<script>document.write('<iframe src="file:///etc/passwd">')</script> - 文件内容会出现在导出的PDF中
3. 未授权导出+CSRF
利用链:
- 发现导出功能发送结果到指定邮箱
- 构造CSRF请求将结果发送到攻击者邮箱
- 诱骗已登录用户点击
4. 参数置空技巧
方法:
- 对模糊查询功能尝试置空参数
- 使用
%通配符测试信息泄露
防御建议
- 严格校验文件上传路径和名称
- 实施完善的权限控制系统
- 对用户输入进行严格过滤和转义
- 禁用危险的文件操作函数
- 限制文件上传类型和内容检查
- 实施CSRF防护机制
- 对导出功能增加权限校验和确认步骤
通过系统性地测试上述各个场景,可以全面挖掘文件操作相关的安全漏洞,包括但不限于任意文件读取、文件覆盖、RCE、SSRF、CSRF等高风险漏洞。