写在前面:合法学习边界
本文讲解文件上传漏洞与 WebShell 原理。请不要在真实网站上传木马、绕过上传限制或获取未授权访问。所有测试都应在自建靶场、授权测试环境或明确授权目标上完成。WebShell 属于高风险行为,未经授权上传或执行可能涉及违法犯罪。
一、文件上传漏洞的本质
文件上传漏洞的本质是:系统允许用户上传文件,但没有正确限制文件类型、存储位置、访问路径或执行条件,最终导致恶意文件被保存并能被执行。
它通常包含几个条件:
| |
二、常见绕过点
1. MIME 类型检查
有些系统只检查 Content-Type。修改请求头可能会绕过前端或简单后端检查。
2. 文件扩展名校验
只检查最后扩展名时,某些 Web 服务器可能仍能解析双扩展名、特殊后缀或不常见后缀。
3. 黑名单不完整
黑名单容易遗漏:
| |
4. 上传目录可执行
如果上传文件放在 Web 根目录,并且 PHP/JSP/ASP 能解析,风险会更高。
5. 文件名处理不当
例如保存时使用原文件名,可能带来路径穿越、覆盖或执行风险。
三、WebShell 是什么
WebShell 是可以通过 Web 访问执行的脚本文件。它通常被上传到 Web 目录后,由 Web 服务解释执行。
常见类型:
| |
学习时必须强调:WebShell 不是学习工具,而是攻击后果。真实工作中,发现 WebShell 应立即保留证据、隔离系统、清理后门、分析入侵链路。
四、WebShell 的典型行为
| |
因此在应急响应中,发现 WebShell 后不能只删除文件,还要追查:
| |
影响与危害
文件上传漏洞能造成:
| |
风险等级:高到严重。
五、防御清单
1. 白名单文件类型
只允许真正需要的扩展名,例如:
| |
2. 限制存储位置
上传文件不要放在可执行目录,最好放到对象存储或专门静态资源目录。
3. 重命名文件
不要使用用户原始文件名作为存储文件名。
4. 设置目录不可执行
如果上传目录只需要静态访问,就不要允许脚本执行。
5. WAF 和日志审计
监控上传频率、异常扩展名、异常文件名、异常响应和 WebShell 特征。
修复
| |
验证操作步骤
| |
六、报告写法
示例:
| |
七、小结
文件上传漏洞的关键是“文件能不能落地、能不能访问、能不能执行”。WebShell 是上传漏洞被利用后的结果。学习时要理解边界,而不是把命令当成目标。