Web 漏洞靶场练习(第一弹)
字数 2089 2025-11-07 08:41:54
Web漏洞靶场教学文档:文件上传漏洞深度解析与实践
一、文件上传漏洞概述
1.1 漏洞定义
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,"文件上传"本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。
1.2 攻击成功条件
- 上传的文件能够被Web容器解释执行
- 文件上传后所在的目录是Web容器所覆盖到的路径
- 用户能够从Web上访问这个文件
- 用户上传的文件内容未被安全检查、格式化、图片压缩等功能改变
二、WebShell基础
2.1 PHP一句话木马
<?php @eval($_POST['cmd']); ?>
此代码允许攻击者通过POST参数'cmd'执行任意PHP代码。
三、文件上传绕过技术详解
3.1 黑名单绕过技术
3.1.1 大小写绕过
原理:利用系统对大小写不敏感的特性
示例:
- 原始文件名:a.php
- 绕过方式:a.PHP、a.Php、a.pHp等
- 适用场景:黑名单仅包含小写.php的情况
3.1.2 空格绕过
原理:系统保存时会自动去除文件名首尾空格
方法:
- 上传时使用Burp抓包
- 在文件名前或后添加空格:
a.php或a.php - 放包上传
3.1.3 点号绕过
原理:系统会自动过滤文件名末尾的点
方法:将文件名改为a.php.
3.1.4 ::$DATA绕过(仅限Windows)
原理:利用NTFS文件系统特性
方法:
- 文件名改为:
a.php::$DATA - 访问时需删除URL中的
::$DATA
3.1.5 单次过滤绕过
原理:利用过滤规则只执行一次的特性
示例流程:
- 原始文件名:
a.php. . - 删除末尾点:
a.php. - 去除首尾空格:
a.php. - 黑名单检测通过(因黑名单中无
.php.)
3.1.6 后缀双写绕过
原理:利用删除特定字符串后形成有效后缀
条件:过滤规则是删除检测到的黑名单后缀
示例:
- 原始文件名:
a.pphphp - 过滤删除
php:a.php - 成功绕过检测
3.2 白名单绕过技术
3.2.1 MIME类型检测绕过
原理:修改Content-Type头欺骗服务器
常见MIME类型:
- JPEG图像:image/jpeg
- PNG图像:image/png
- GIF图像:image/gif
方法:
- 上传PHP文件
- Burp抓包修改Content-Type为image/jpeg等允许类型
- 放包上传
3.2.2 路径栏00截断绕过
条件:
- PHP版本 < 5.3.4
- magic_quotes_gpc = off
- 上传路径可控
原理:利用0x00(空字符)作为字符串结束符
方法:
- 上传文件名为
aa.jpg - 修改保存路径为
../upload/test.php%00aa.jpg - 最终路径被截断为
../upload/test.php
四、upload-labs靶场实战
4.1 Pass-01:禁用JS绕过
漏洞点:前端JavaScript验证
绕过方法:
- 浏览器禁用JavaScript
- Firefox:about:config → javascript.enabled = false
- 开发者工具 → 设置 → 禁用JavaScript
- 删除HTML中的checkFile()函数
4.2 Pass-02:MIME类型绕过
漏洞点:仅验证$_FILES['upload_file']['type']
绕过方法:Burp修改Content-Type为image/jpeg等允许类型
4.3 Pass-03:后缀伪造绕过
前置配置:确保服务器能解析.php3、.php5等后缀
方法:修改文件后缀为.php3、.php5等
4.4 Pass-04:.htaccess配置解析绕过
前置配置:
- 开启mod_rewrite模块
- 修改httpd.conf中AllowOverride None为AllowOverride All
- 添加RewriteEngine On配置
方法:
- 上传.htaccess文件内容:
AddType application/x-httpd-php .jpg
- 上传jpg格式的WebShell
五、防御措施
5.1 基础防御策略
-
文件类型验证
- 使用白名单机制
- 验证文件签名而非扩展名
-
文件内容检查
- 检测恶意代码模式
- 图像文件重压缩处理
-
存储安全
- 上传目录禁用脚本执行权限
- 随机化文件名
- 控制文件访问权限
5.2 服务器配置
- Web服务器安全配置
- PHP安全设置(magic_quotes_gpc等)
- 定期更新和补丁管理
5.3 安全开发实践
- 输入验证和过滤
- 错误信息处理
- 安全编码规范
六、总结
文件上传漏洞是Web安全中的重要攻击向量,攻击手法多样且不断演进。通过upload-labs靶场的实践,安全人员可以深入理解各种绕过技术的原理和实现方式,从而更好地制定防御策略。在实际应用中,需要采取多层次、纵深的安全防护措施,确保文件上传功能的安全性。
重要提醒:本文内容仅用于安全学习和授权测试,未经授权对他人系统进行测试属于违法行为。