怪兽网站模板,网站建设费用估计,网站备案 个体工商户,南海最新军事新闻一、漏洞概述 定义 文件上传漏洞指未对用户上传的文件进行充分安全校验#xff0c;导致攻击者可上传恶意文件#xff08;如Webshell、木马#xff09;#xff0c;进而控制服务器或执行任意代码。 危害等级 ⚠️ 高危漏洞#xff08;通常CVSS评分7.0#xff09;#xff… 一、漏洞概述 定义 文件上传漏洞指未对用户上传的文件进行充分安全校验导致攻击者可上传恶意文件如Webshell、木马进而控制服务器或执行任意代码。 危害等级 ⚠️ 高危漏洞通常CVSS评分7.0可能导致 服务器完全沦陷 数据泄露 钓鱼攻击跳板 内网渗透入口 二、常见漏洞触发点 未校验文件类型 仅依赖前端JS验证或未校验Content-Type。 黑名单机制缺陷 漏掉冷门可执行后缀如 .phtml, .php5。 路径处理不当 用户可控制上传路径如 filename../../uploads/shell.php。 未重命名文件 保留用户输入的文件名导致覆盖或解析漏洞。 服务器配置错误 如Apache的AddHandler错误配置导致文本文件按脚本解析。 三、攻击方式
1. 直接上传Webshell 经典PHP Webshell php ?php eval($_POST[cmd]); ? 绕过技巧利用短标签 ?、编码混淆、图片马注入。
2. 钓鱼文件攻击 上传伪装成图片/文档的恶意文件如 invoice.pdf.exe。
3. 配合其他漏洞利用 文件包含漏洞上传含恶意代码的图片通过LFI执行。 解析漏洞IIS/nginx错误解析文件名如 shell.php.jpg。 四、绕过防御技巧
1. 前端绕过 禁用JS或修改前端校验代码如删除onsubmit事件。
2. 黑名单绕过 尝试非常规后缀.php5, .phtml, .phar, .htaccessApache。 大小写混合.PhP, .pHp。 双写后缀.pphphp → 过滤后变为 .php。
3. MIME类型绕过 修改Content-Type为合法类型 httpContent-Type: image/png
4. 文件头伪造 在恶意文件头部添加合法标识 php GIF89a;
?php system($_GET[cmd]); ?
5. .htaccess攻击Apache 上传覆盖.htaccess文件定义解析规则 apache AddType application/x-httpd-php .abc
6. 特殊符号截断 %00截断需PHP5.3 filenameshell.php%00.jpg
7. 解析漏洞利用 IIS 6.0 /uploads/shell.asp;.jpg 被解析为ASP文件。 Nginx畸形路径 /uploads/shell.jpg/.php 错误解析为PHP。 五、防御方案
1. 白名单校验 文件扩展名仅允许 .jpg, .png, .pdf 等必要类型。 MIME类型从服务器端检测 magic number真实文件类型。
2. 重命名文件 使用随机哈希值重命名如 a3F8d9.jpg避免用户控制文件名。
3. 存储隔离 上传目录禁止脚本执行通过服务器配置 nginx location /uploads/ {deny all;
}
4. 文件内容检测 检查图片文件的宽高属性验证是否为真实图片。 使用杀毒引擎扫描上传文件。
5. 限制文件大小 设置合理的最大上传尺寸如10MB。
6. 日志与监控 记录所有上传行为对异常文件如 .php触发告警。
7. WAF防护 配置规则拦截 ?php、eval( 等危险关键词。 六、实战案例 Discuz! 任意文件上传漏洞 通过修改上传请求的 filename 参数绕过后缀检测。 WordPress插件漏洞 某些插件未校验非Ajax上传路径导致可直接上传PHP文件。 七、测试工具 Burp Suite 拦截修改上传请求测试绕过逻辑。 Webshell管理工具 AntSword、Cknife、Behinder需合法授权使用。 八、学习资源 OWASP文件上传防护指南 Unrestricted File Upload | OWASP Foundation Upload Labs靶场 GitHub搜索 upload-labs 练习绕过技巧 《Web安全攻防渗透测试实战指南》第6章