文章总结: 该文档分析了文件上传功能可能存在的多种安全漏洞。核心风险包括:当文件名后缀可控时,直接上传Webshell获取服务器权限;文件名存入数据库时可能引发SQL注入;文件名或内容展示时可能导致存储型XSS。此外,若上传文件被解压或经ImageMagick等工具处理,还可能触发相应组件的漏洞。文章建议通过随机文件名、固定后缀、OSS存储及严格的输入过滤来加固安全。 综合评分: 89 文章分类: WEB安全,漏洞分析,渗透测试,红队,漏洞POC
一个文件上传的功能,可能出现哪些类型的漏洞?
原创
xazlsec
信安之路
2025年9月11日 08:19 山西
今天我们来总结一下假如遇到一个文件上传的功能,那么可能会存在哪些类型的漏洞呢?一个文件上传功能,实现的原理可能是这样的:
1、大多是情况下是上传图片文件,也有少部分情况是上传 pdf、doc 等文档以及压缩包
2、上传文件后,会保存在目标系统硬盘上,也可能是 OSS 平台
3、上传的文件名可能会存入数据库,方便后续使用
4、上传的文件名及文件内容会被展示给自己或者他人查看
通过功能原理,其涉及多个部分,比如系统硬盘、展示、存取数据库等,知道了原理,那么分析漏洞类型就容易多了。
1、写入硬盘时
在文件写入硬盘时,可能存在文件名后缀可控,直接上传 webshell 的情况,如果上传后的目录为网站系统本身,且该目录可执行,那么就可能被直接 getshell,也就是我们常说的文件上传漏洞。
可能存在文件上传漏洞的条件:
1、文件后缀可控,上传动态脚本
2、上传目标必须是网站系统,且上传后的目录可以执行动态脚本
3、如果上传后的路径为 oss 系统,且存在相对应的子域名,那么可以上传 html 文件,造成存储型 XSS 漏洞
安全的做法:上传文件的文件名和后缀不被用户控制,采用随机文件名+固定后缀的方式命名,且上传后的目标路径最好是 oss 系统,且不用子域名解析。
2、存取数据库时
只要与数据库交互,那么就有可能存在 SQL 注入漏洞,所以上传的文件名,禁止包含特殊字符,大概率可以预防 SQL 注入漏洞。
3、文件或者文件名展示时
只要涉及到显示,那么就有可能存在 XSS 漏洞,如果文件名可控,未做 XSS 相关防护,那么就可以用作 XSS 攻击,如果可以上传 html 类文件,那么攻击者就可以控制上传文件的内容,来做到类似存储型 XSS 的效果。
还有一种是构造恶意 PDF 文件,展示时触发 XSS:
4、其他情况
如果上传后的文件被其他处理,比如解压缩,那么可以构造恶意压缩包,利用解压软件的问题,触发漏洞利用,还比如图片经过 ImageMagick 处理,利用 ImageMagick 的漏洞也是可以的,再比如视频文件被 FFmpeg 处理,利用 FFmpeg 的历史漏洞,也可能存在安全风险。
总之在测试时,一个小小的功能,在了解其实现原理的情况下,根据所涉及的组件和流程,一一测试,不放过任何细节,那么功夫一定不负有心人,加油!
查看原文:《一个文件上传的功能,可能出现哪些类型的漏洞?》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论