.user.ini文件上传绕过
字数 936 2025-08-11 17:40:26
.user.ini文件上传绕过技术分析
前言
.user.ini文件上传绕过是一种与.htaccess文件上传绕过相似的技术,都是通过上传自定义配置文件导致服务器对图片文件错误处理而实现文件执行。相比.htaccess,.user.ini的应用范围更广,适用于所有以fastcgi运行的PHP环境,但限制在于上传.user.ini的目录必须存在可执行的PHP文件。
漏洞原理
.user.ini文件中的两个关键配置项:
auto_append_file:指定文件会在当前目录PHP文件执行后被包含auto_prepend_file:指定文件会在当前目录PHP文件执行前被包含
这两个配置项的效果类似于在执行当前目录PHP文件前后使用require()函数包含指定文件。
漏洞复现步骤
环境准备
使用XCTF的easyupload题目作为演示环境,该上传页面具有以下防护措施:
- 检查文件中是否包含"php"字符串
- 黑名单过滤(PHP、htaccess)
- 检查文件头部信息
- 验证文件的MIME类型
攻击步骤
-
上传.user.ini文件
- 文件内容:
auto_prepend_file=要包含的文件 - 添加图片文件头:
GIF89a - 使用Burp Suite抓包修改文件的MIME类型
- 文件内容:
-
上传含有一句话木马的图片文件
- 确保文件符合上传规则
- 通常需要绕过内容检测和类型检测
-
连接Webshell
- 使用蚁剑等工具连接
/uploads/index.php文件 - 因为.user.ini配置会使该目录下的PHP文件自动包含我们上传的恶意文件
- 使用蚁剑等工具连接
关键点总结
-
必要条件:
- 服务器使用fastcgi运行PHP
- 上传目录存在可执行的PHP文件
- 能够上传.user.ini文件
-
绕过技巧:
- 添加图片文件头(GIF89a)绕过内容检查
- 修改MIME类型绕过类型检查
- 利用黑名单未包含.userini的情况
-
防御建议:
- 禁用不必要的PHP配置项
- 限制上传目录的PHP执行权限
- 对上传文件进行严格的内容检查和类型验证
- 将.userini加入上传黑名单
免责声明
- 本文技术信息仅供参考,不构成专业建议
- 使用前请充分测试评估,遵守《中华人民共和国网络安全法》
- 技术发展迅速,内容可能存在滞后性