网络安全实验室5.上传关
字数 1437 2025-08-24 16:48:16

网络安全实验室图片上传漏洞实战教学

实验概述

本教学文档基于先知社区提供的网络安全实验室上传漏洞实战案例,详细分析三种不同类型的图片上传漏洞利用方式。这些实验展示了如何通过修改文件后缀名绕过上传限制,获取系统密钥。

实验环境

  • 实验平台:网络安全实验室
  • 实验类型:文件上传漏洞利用
  • 实验难度:初级到中级

实验一:基础后缀名修改绕过

实验URL: http://lab1.xseclab.com/upload1_a4daf6890f1166fd88f386f098b182af/

实验步骤

  1. 准备阶段

    • 准备一张合法的JPG格式图片
  2. 上传操作

    • 将准备好的JPG图片上传至目标URL
  3. 拦截修改

    • 使用抓包工具(如Burp Suite)拦截上传请求
    • 修改文件后缀名(如将.jpg改为.s或直接删除后缀名)
  4. 结果

    • 放行修改后的数据包
    • 获取密钥:IKHJL9786#$%^&

技术要点

  • 服务器仅检查前端文件类型,未对后端接收的文件名进行严格验证
  • 通过修改或删除后缀名可以绕过简单的文件类型检查

实验二:PHP后缀名绕过

实验URL: http://lab1.xseclab.com/upload2_31cc2e024f91058a742d8bed95c7ca4f/

实验步骤

  1. 准备阶段

    • 准备一张合法的JPG格式图片
  2. 上传操作

    • 将JPG图片上传至目标URL
  3. 拦截修改

    • 拦截上传请求
    • 将文件后缀名修改为.php
  4. 结果

    • 放行修改后的数据包
    • 获取密钥:76tyuhjsdvytig#$%^&

技术要点

  • 服务器可能仅检查文件内容头部信息或前端MIME类型
  • 通过修改为可执行文件后缀名(如PHP)可以绕过限制
  • 这种漏洞可能导致服务器被上传webshell等恶意文件

实验三:双后缀名绕过

实验URL: http://lab1.xseclab.com/upload3_67275a14c1f2dbe0addedfd75e2da8c1/

实验步骤

  1. 准备阶段

    • 准备一张合法的JPG格式图片
  2. 上传操作

    • 将JPG图片上传至目标URL
  3. 拦截修改

    • 拦截上传请求
    • 将文件后缀名修改为.jpg.php
  4. 结果

    • 放行修改后的数据包
    • 获取密钥:76tyuh12OKKytig#$%^&

技术要点

  • 服务器可能使用不安全的文件名解析逻辑
  • 某些系统会解析最后一个点之后的内容作为文件类型
  • 双后缀名可以同时满足前端检查和后端执行需求

防御措施

基于这些实验,我们可以总结出以下防御文件上传漏洞的措施:

  1. 服务器端验证

    • 不仅验证文件扩展名,还要验证文件内容
    • 使用MIME类型检测而非仅依赖文件扩展名
  2. 文件重命名

    • 上传后为文件生成随机名称,避免保留用户提供的文件名
  3. 黑名单/白名单

    • 使用严格的白名单机制,仅允许特定类型的文件上传
    • 禁止可执行文件的上传(如php, asp, jsp等)
  4. 文件内容检查

    • 检查文件头部信息是否符合声称的文件类型
    • 对图片文件进行二次渲染处理
  5. 权限控制

    • 上传目录设置为不可执行
    • 使用单独的非web可访问目录存储上传文件

总结

这三个实验展示了文件上传功能中常见的三种漏洞利用方式:

  1. 简单后缀名修改或删除
  2. 修改为可执行文件类型
  3. 使用双后缀名绕过检查

这些漏洞都源于服务器对用户上传文件的验证不充分,攻击者可以利用这些漏洞上传恶意文件,进而可能导致服务器被完全控制。开发人员必须实施多层次的文件上传验证机制来防范此类攻击。

网络安全实验室图片上传漏洞实战教学 实验概述 本教学文档基于先知社区提供的网络安全实验室上传漏洞实战案例,详细分析三种不同类型的图片上传漏洞利用方式。这些实验展示了如何通过修改文件后缀名绕过上传限制,获取系统密钥。 实验环境 实验平台:网络安全实验室 实验类型:文件上传漏洞利用 实验难度:初级到中级 实验一:基础后缀名修改绕过 实验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可访问目录存储上传文件 总结 这三个实验展示了文件上传功能中常见的三种漏洞利用方式: 简单后缀名修改或删除 修改为可执行文件类型 使用双后缀名绕过检查 这些漏洞都源于服务器对用户上传文件的验证不充分,攻击者可以利用这些漏洞上传恶意文件,进而可能导致服务器被完全控制。开发人员必须实施多层次的文件上传验证机制来防范此类攻击。