一、文件上传为什么是高危漏洞?
文件上传漏洞是Web安全中危害最高、利用最直接的漏洞之一。一旦成功上传脚本文件,攻击者可直接获取网站权限、控制服务器、篡改网站数据。
但新人实战中90%的上传都会失败:要么直接禁止上传、要么上传成功无法访问、要么文件被重命名、要么被WAF查杀。
二、文件上传漏洞核心原理
网站提供文件上传功能(头像、附件、图片、素材),后端未严格校验文件后缀、文件类型、文件内容,导致可上传php、jsp、asp等可执行脚本文件,并且文件目录可访问、可执行,最终造成服务器沦陷。
三、新手上传失败的核心原因
1. 后缀黑名单拦截
绝大多数站点禁止php、jsp、exe等高危后缀,直接拦截上传。新人只会直接传原生脚本,完全不会绕过。
2. MIME类型校验
后端校验文件Content-Type,仅允许image/png、image/jpeg等图片类型,脚本文件直接拦截。
3. 文件内容检测
部分站点会检测文件头部内容,即使修改后缀,文件内容为脚本特征,依然会被识别拦截。
4. 上传目录不可执行
很多站点上传目录做了权限限制、禁止脚本执行,即便上传成功也无法解析运行,无法拿到Web权限。
5. 文件重命名机制
后端自动随机重命名文件、修改后缀,导致脚本文件失效,无法访问利用。
四、新手必须掌握的基础上传绕过思路
1、后缀绕过:大小写绕过、双后缀绕过、空字符绕过、特殊字符截断;
2、类型绕过:修改数据包Content-Type伪装图片类型;
3、图片马绕过:图片头部+脚本内容,绕过内容检测;
4、配合解析漏洞利用,让伪装文件正常解析执行。
五、总结
文件上传漏洞的核心不是“能不能传上去”,而是传上去能不能执行。真实场景中单纯的上传成功没有任何价值,只有满足“可上传、可访问、可解析、可执行”四个条件,才算完整漏洞。