您的位置首页 >要闻 > 人工智能 >

Web 安全初级|文件上传漏洞实操学习原理、利用方式与防御方案

文件上传漏洞是 Web 安全里最经典的入门漏洞,成因是服务端对上传文件的后缀、文件内容、文件头、存储路径校验不严,攻击者上传脚本文件(php、asp、jsp 等),让服务器解析执行恶意代码,拿到 Web 权限;下面从原理、常见校验绕过手法、实操步骤、防御方案整理,仅用于本地靶场学习,严禁在未授权网站测试。

一、漏洞基础信息

项目说明
漏洞名称文件上传漏洞(File Upload Vulnerability)
核心成因服务端校验逻辑缺失 / 校验可绕过
危害上传一句话木马、获取 Webshell、服务器提权、篡改网站、拖库
适用场景存在文件上传功能:头像上传、附件上传、素材上传
学习前提本地搭建靶场(DVWA、Upload-Labs、Pikachu)

⚠️ 重要提醒:只允许在自己搭建、拥有授权的靶场练习,未经授权渗透、测试外网网站属于违法行为。

二、常见服务端校验方式与对应的绕过思路

  1. 前端 JS 校验(最容易绕过)
  2. 后缀黑名单校验

校验逻辑写在浏览器 JS 里,提交前判断后缀。

绕过:抓包(Burp Suite)拦截上传请求,修改文件名后缀;或者禁用浏览器 JS 再上传。

禁止.php、.asp等脚本后缀,但是过滤不全。

绕过:

  • 后缀变种:xxx.php%00.jpg(00 截断,老版本 PHP、老中间件才支持)
  • 双后缀:xxx.php.jpg、xxx.jpg.php
  • 大小写绕过:xxx.PHP
  1. MIME 类型校验(Content-Type)
  2. 文件头校验(GIF 图片头)
  3. 路径可控 + 重命名逻辑缺陷

只检查请求头里的文件类型,不校验真实文件内容。

绕过:抓包修改 Content-Type 为image/jpeg,文件本身仍是脚本。

读取文件前几个字节,判断是不是图片。

绕过:在一句话木马文件最前面添加 GIF 文件头GIF89a,伪装成图片。

服务端没有统一重命名,文件名直接可控;配合解析漏洞,图片马被当作脚本执行。

三、基础实操流程(靶场练习流程)

  1. 打开靶场上传页面,准备一句话脚本(例如 php 一句话);
  2. 正常上传 jpg 图片,用 Burp 抓包,观察上传数据包;
  3. 修改文件名、MIME、文件内容,尝试绕过校验;
  4. 上传成功后,获取上传后的文件访问地址;
  5. 访问该地址,测试脚本是否被服务器解析执行;
  6. 成功执行后,使用菜刀 / 蚁剑连接 Webshell;
  7. 结束练习后,及时清理靶场恶意文件。

四、常用绕过手法对比表

校验方式绕过难度稳定性
前端 JS 校验低高
MIME 头校验低高
黑名单后缀过滤中依赖中间件版本
文件头校验(GIF 伪装)中较高
白名单校验(只允许 jpg/png)高很难绕过

重点:白名单是推荐方案,只允许指定后缀,比黑名单安全得多。

五、安全防御方案(开发侧)

✅ 优先使用后缀白名单,只允许 jpg、png 等业务需要的后缀,禁止脚本后缀

✅ 服务端校验,不能只靠前端 JS 校验

✅ 上传目录设置禁止脚本解析(Nginx/Apache 配置,禁止该目录执行 php)

✅ 上传文件统一重命名,随机文件名,不要使用用户提交的原始文件名

✅ 限制文件大小,限制上传频率

✅ 校验文件真实内容,不只看后缀和文件头

✅ 上传目录独立部署,不和业务代码放在同一目录

六、高频踩坑点(新手实操常见问题)

❌ 直接在公网网站尝试上传,触犯法律

❌ 以为 00 截断万能,新版本 PHP 已经不再支持 %00 截断

❌ 上传成功但是无法解析:中间件解析规则、目录权限、解析漏洞不存在

❌ 图片马上传后无法执行:上传目录禁止脚本解析,这是正常防御效果

❌ 混淆概念:上传成功 ≠ 漏洞利用成功,必须能够被服务器解析执行才是高危

【相关 FAQ】

问题 1:文件上传漏洞实操学习中,前端 JS 校验怎么绕过?

回答 1:文件上传漏洞实操时,前端 JS 校验可以用 Burp Suite 抓包拦截请求,修改文件名后缀;或者直接禁用浏览器 JavaScript,再提交上传文件。

问题 2:文件上传漏洞实操里,图片马上传成功为什么不一定能执行?

回答 2:文件上传漏洞实操中,图片马只是伪装成图片,能否执行取决于上传目录是否开启脚本解析、中间件是否存在解析漏洞;如果上传目录禁止解析脚本,就算上传成功也无法利用。

问题 3:文件上传漏洞实操练习,黑名单和白名单校验哪个更安全?

回答 3:文件上传漏洞实操里,白名单更安全;黑名单容易漏掉冷门脚本后缀,攻击者可以用变种后缀绕过,白名单只放行业务需要的图片后缀。

问题 4:做文件上传漏洞实操,哪些地方不能去测试?

回答 4:文件上传漏洞实操只能在自己搭建、拥有授权的靶场练习;任何互联网上的网站、企业系统,没有书面授权,一律不能上传测试,属于违法。

【参考资料】

[2026-11-08] Upload-Labs 靶场官方文档

[2026-11-08] DVWA 文件上传模块安全说明

[2026-11-08] OWASP 文件上传安全防御指南

[2026-11-08] Web 安全文件上传漏洞绕过与防御总结

【免责声明】

本文仅用于 Web 安全学习、靶场练习,不提供任何可直接用于攻击外网的利用代码;未经授权对任何网站实施上传攻击、渗透测试,违反《网络安全法》等相关法律法规,风险由使用者自行承担。