upload-labs_通关tips
字数 1943 2025-08-11 08:36:04
文件上传漏洞全面攻防指南
0x001 文件上传漏洞原理
攻击者上传可执行文件到服务器并执行,上传的文件类型通常包括:
- 木马
- 病毒
- 恶意脚本
- Webshell
0x002 漏洞利用条件
- 上传的文件能够被服务器当作脚本解析
- 攻击者能够访问上传文件的路径
0x003 查找上传点方法
- 使用工具扫描目录
- 查看是否有UPLOAD等目录
- 寻找任何上传功能点(文件或图片上传)
0x004 文件上传漏洞类型及绕过方法
0x004.1 前端验证绕过
特征:上传被限制但数据包未到达代理工具就弹出提示
绕过方法1:
- 按F12查看前端代码
- 找到验证函数(如checkFile)
- 将返回false改为返回true
绕过方法2:
- 上传合法文件(如jpg)
- 抓包修改文件扩展名为php
0x004.2 MIME验证绕过
特征:服务器检查Content-Type
绕过方法:
- 上传正常图片文件并抓包
- 记录图片的Content-Type(如image/jpeg)
- 上传恶意文件时使用记录的Content-Type替换原本的application/octet-stream
0x004.3 黑名单验证(部分后缀名)
特征:常见php扩展名被过滤
绕过方法:
- 尝试其他可解析为PHP的扩展名:
- .phtml
- .phps
- .php1
- .php4
- .pht
原理:Apache配置中可能包含:
AddType application/x-httpd-php .php .phtml .phps .php1 .php4 .pht
0x004.4 黑名单验证(.htaccess)
绕过方法:
- 上传.htaccess文件,内容为:
<FilesMatch ".jpg$">
SetHandler application/x-httpd-php
</FilesMatch>
- 上传.jpg格式的恶意文件
0x004.5 黑名单验证(user.ini)
利用条件:
- 服务器脚本语言为PHP
- 服务器使用CGI/FastCGI模式
- 上传目录下有可执行的php文件
绕过方法1:
- 创建.user.ini文件,内容:
auto_prepend_file=123.jpg
- 上传123.jpg的一句话木马
- 访问目录下的php文件触发
绕过方法2:
- 上传文件名格式:
123.php.(加点空格点)
原理:Apache从右向左解析,最终解析为php文件
0x004.6 黑名单验证(大小写绕过)
特征:未使用strtolower函数统一大小写
绕过方法:
- 使用大小写混合扩展名,如:
- .PhP
- .pHp
- .pHP
0x004.7 黑名单验证(空格绕过)
特征:未过滤文件名末尾空格
绕过方法:
- 上传文件名格式:
123.php(php后加空格) - 使用Burp Suite修改请求,在扩展名后添加空格
0x004.8 黑名单验证(点号绕过)
特征:未使用deldot()过滤文件名末尾的点
绕过方法:
- 上传文件名格式:
123.php.
原理:strrchr($file_name,'.')获取最后一个点后的内容
0x004.9 黑名单验证(数据流绕过)
特征:未过滤::$DATA数据流标记
绕过方法:
- 上传文件名格式:
123.php::$DATA - 访问时去掉
::$DATA
原理:NTFS文件系统中的数据流特性
0x004.10 黑名单验证(双写绕过)
特征:使用str_ireplace替换危险扩展名
绕过方法:
- 上传文件名格式:
123.phphpp - 替换后变为
123.php
0x004.11 白名单绕过(%00截断)
利用条件:
- PHP版本<5.3.4
- magic_quotes_gpc关闭
绕过方法:
- 上传文件名格式:
123.php%00.jpg - 检测时为jpg,保存时%00截断生效
0x004.12 白名单绕过(路径可控)
绕过方法:
- 上传文件名格式:
123.php .jpg(php后加空格) - 抓包修改空格为十六进制00
0x004.13 图片马
绕过方法:
- 在恶意脚本前添加文件头,如
GIF89a - 配合文件包含漏洞执行
0x005 防御措施
- 文件类型白名单:严格限制允许上传的文件类型
- 文件名过滤:过滤特殊字符和危险扩展名
- 文件大小限制:防止上传过大文件
- 安全上传路径:限制上传目录权限
- 文件内容检查:检查文件真实类型和内容
- 权限控制:限制上传文件的执行权限
- 安全编码:使用安全的文件处理函数
- 日志记录:记录所有上传行为
- 随机化文件名:防止直接访问上传文件
- 杀毒扫描:对上传文件进行病毒扫描
0x006 高级技巧
- 结合解析漏洞:利用服务器解析特性(如IIS6.0解析漏洞)
- 图片渲染:通过二次渲染绕过内容检查
- 条件竞争:利用文件上传与删除的时间差
- 特殊字符:尝试使用特殊字符绕过(如; +等)
- HTTP头注入:修改Content-Disposition等头部
通过全面理解这些攻击手法和防御措施,可以有效提升文件上传功能的安全性。