网络安全实验室5.上传关
字数 1437 2025-08-24 16:48:16
网络安全实验室图片上传漏洞实战教学
实验概述
本教学文档基于先知社区提供的网络安全实验室上传漏洞实战案例,详细分析三种不同类型的图片上传漏洞利用方式。这些实验展示了如何通过修改文件后缀名绕过上传限制,获取系统密钥。
实验环境
- 实验平台:网络安全实验室
- 实验类型:文件上传漏洞利用
- 实验难度:初级到中级
实验一:基础后缀名修改绕过
实验URL: http://lab1.xseclab.com/upload1_a4daf6890f1166fd88f386f098b182af/
实验步骤
-
准备阶段:
- 准备一张合法的JPG格式图片
-
上传操作:
- 将准备好的JPG图片上传至目标URL
-
拦截修改:
- 使用抓包工具(如Burp Suite)拦截上传请求
- 修改文件后缀名(如将
.jpg改为.s或直接删除后缀名)
-
结果:
- 放行修改后的数据包
- 获取密钥:
IKHJL9786#$%^&
技术要点
- 服务器仅检查前端文件类型,未对后端接收的文件名进行严格验证
- 通过修改或删除后缀名可以绕过简单的文件类型检查
实验二:PHP后缀名绕过
实验URL: http://lab1.xseclab.com/upload2_31cc2e024f91058a742d8bed95c7ca4f/
实验步骤
-
准备阶段:
- 准备一张合法的JPG格式图片
-
上传操作:
- 将JPG图片上传至目标URL
-
拦截修改:
- 拦截上传请求
- 将文件后缀名修改为
.php
-
结果:
- 放行修改后的数据包
- 获取密钥:
76tyuhjsdvytig#$%^&
技术要点
- 服务器可能仅检查文件内容头部信息或前端MIME类型
- 通过修改为可执行文件后缀名(如PHP)可以绕过限制
- 这种漏洞可能导致服务器被上传webshell等恶意文件
实验三:双后缀名绕过
实验URL: http://lab1.xseclab.com/upload3_67275a14c1f2dbe0addedfd75e2da8c1/
实验步骤
-
准备阶段:
- 准备一张合法的JPG格式图片
-
上传操作:
- 将JPG图片上传至目标URL
-
拦截修改:
- 拦截上传请求
- 将文件后缀名修改为
.jpg.php
-
结果:
- 放行修改后的数据包
- 获取密钥:
76tyuh12OKKytig#$%^&
技术要点
- 服务器可能使用不安全的文件名解析逻辑
- 某些系统会解析最后一个点之后的内容作为文件类型
- 双后缀名可以同时满足前端检查和后端执行需求
防御措施
基于这些实验,我们可以总结出以下防御文件上传漏洞的措施:
-
服务器端验证:
- 不仅验证文件扩展名,还要验证文件内容
- 使用MIME类型检测而非仅依赖文件扩展名
-
文件重命名:
- 上传后为文件生成随机名称,避免保留用户提供的文件名
-
黑名单/白名单:
- 使用严格的白名单机制,仅允许特定类型的文件上传
- 禁止可执行文件的上传(如php, asp, jsp等)
-
文件内容检查:
- 检查文件头部信息是否符合声称的文件类型
- 对图片文件进行二次渲染处理
-
权限控制:
- 上传目录设置为不可执行
- 使用单独的非web可访问目录存储上传文件
总结
这三个实验展示了文件上传功能中常见的三种漏洞利用方式:
- 简单后缀名修改或删除
- 修改为可执行文件类型
- 使用双后缀名绕过检查
这些漏洞都源于服务器对用户上传文件的验证不充分,攻击者可以利用这些漏洞上传恶意文件,进而可能导致服务器被完全控制。开发人员必须实施多层次的文件上传验证机制来防范此类攻击。