关卡介绍 upload-lab是关何过黑一个用于练习文件上传漏洞的演练平台 。在第五关中,巧妙我们将探索如何利用 .user.ini 文件包含漏洞来攻破这一关卡。利用此关卡的置文核心在于利用PHP的 user_ini文件特性绕过安全检查 ,最终实现恶意代码执行
。名单 以下第5关的验证核心代码: 在观察源码后 ,利用发现源码中将所有可解析的置文文件后缀名都明确列出,亿华云包括大小写转换、名单空格和点号等处理
。验证因此,关何过黑无法正常上传PHP类文件,巧妙并且 .htaccess文件的利用上传也被拒绝。然而
,通过仔细检查,发现有两个后缀名没有被限制,它们是 .php7和 .ini
。 从 PHP 5.3.0 开始,PHP 支持每个目录使用 .user.ini 文件 ,这类似于 Apache 的 .htaccess 文件。这种文件只会被 CGI/FastCGI 模式的建站模板 PHP 处理,因此 PECL 的 htscanner 扩展就不再需要了 。如果你使用 Apache 服务器,可以通过 .htaccess 文件实现相同的效果
。 除了主配置文件 php.ini 之外,PHP 还会在每个目录中查找 .user.ini 文件 ,从执行的 PHP 文件所在目录一直向上查找 ,直到找到 web 根目录(由 $_SERVER[DOCUMENT_ROOT] 指定)。如果 PHP 文件在 web 根目录之外,只会扫描该目录。 在 .user.ini 文件中
,只能使用具有 PHP_INI_PERDIR和PHP_INI_USER 模式的配置指令
。香港云服务器 有两个新的配置指令控制 .user.ini 文件的使用: .user.ini 文件中的配置会像 php.ini 中的配置一样被 PHP 处理 ,这可能会导致文件解析漏洞。服务器租用要触发 .user.ini 解析漏洞
,需要满足以下三个条件 : (1) 编写 .user.ini 文件 首先,我们需要创建一个 .user.ini 文件 ,以指示服务器在每个请求前包含我们的 666.jpg 文件
。创建一个名为 .user.ini 的文件,内容如下: 该配置将使得 666.jpg在每个PHP请求前自动包含。 (2) 编写恶意 PHP文件 接下来 ,我们需要一个包含恶意代码的PHP文件
。这个文件将在 .user.ini 被解析后自动被包含并执行。模板下载创建一个名为 666.jpg 的文件
,内容如下 : (3) 上传文件 先将 .user.ini 文件上传到服务器
,接着,再将666.jpg上传到服务器。 user_ini文件受到user_ini.cache_ttl这个参数影响,这里有两个选择: 把这里的300秒(即默认等5分钟)改为10
: 修改后保存php.ini文件并重启服务
,静心等候10秒后再进行下一步操作
。 (4) 访问并执行 根据关卡5的提示,upload目录中存在一个readme.php,如下图所示: 提示 我通过访问这个readme.php文件
,去触发自己上传的脚本文件。高防服务器该请求将执行 id 命令
,并显示当前用户详细信息。如图所示: webshell执行成功 在upload-lab的第五关中 ,我们利用 .user.ini文件的特性 ,成功绕过了服务器的安全检查并执行了恶意代码。这种攻击方式主要依赖于对 PHP 配置文件的理解和巧妙利用,为安全研究人员提供了一个有趣且实用的学习案例。 推荐阅读: 《Upload-Lab第一关:轻松绕过前端验证的技巧 !》 《Upload-Lab第二关
:如何巧妙绕过MIME类型过滤 ?》 《Upload-Lab第三关:如何巧妙应对黑名单文件后缀检测?》 《Upload-Lab第四关:如何巧用.htaccess破解黑名单验证》



