09 文件上传漏洞怎么测试?
2026/9/17...大约 2 分钟
09|文件上传漏洞怎么测试?
开场先讲漏洞的本质和危害链:上传 + 可执行 = 服务器失守——两个条件缺一个都不成立。这个双条件认知是分析框架。
回答思路
第一步:测试点按校验环节逐一绕过(对位关系是本题主体)
| 校验环节 | 绕过姿势 |
|---|---|
| 前端校验 | 改包绕过(纯摆设) |
| 后缀黑名单 | 传 .php5、大小写、双后缀、%00 截断 |
| Content-Type 校验 | 改包里的 MIME 类型 |
| 文件头校验 | 图片马(真图片头加脚本代码) |
| 路径可控 | ../../../ 传到可执行目录 |
第二步:讲上传后的验证路径(第二段)
- 能否直接 URL 访问到上传的文件
- 上传目录有没有执行权限(配置层)
- 是否走了对象存储隔离(存 OSS 不落 Web 目录是根本缓解)
测的不只是「传得上去」,还有「传上去之后能不能作恶」。
第三步:防御讲标准答案
白名单后缀(只允许 jpg png——黑名单思路天然不安全)、重命名(随机文件名去掉原始信息)、文件存储和 Web 服务隔离、文件头校验、目录去执行权限——多层防御。
收尾:讲业务现实
头像、证件照、聊天附件全是上传点,UGC 业务上传接口是攻击者最爱——测试时按「传什么、存哪里、能不能访问执行」三问设计用例。
考察重点
| 维度 | 说明 |
|---|---|
| 企业动机 | 文件上传是拿服务器权限的直接通道(牛客 93 题收录)——一次失守就是最高级别事故,有 UGC 功能的业务必考 |
| 过线标准 | 双条件框架 + 至少三种绕过姿势 |
| 区分度 | 讲图片马、%00 截断、存储隔离的是攻防两栖的;只会「传个脚本试试」的是入门 |
| 加分项 | 「传上去之后能不能作恶」的第二段验证思路 |
| 减分项 | 只测前端拦截就下结论安全——前端校验在攻击者面前等于没有 |
来源
整理自知识星球帖《面试情报 05|安全测试 20 题》,返回题库。