1.3 PHP核心配置详解

本文阅读 4 分钟
首页 代码,C/C#/C++ 正文

1.3 PHP 核心配置详解

  1. 为什么说,在代码审计之前,必须要熟悉PHP各版本中配置文件的核心指令,才能更高效地挖掘到高质量的漏洞呢?
  • 代码在不同环境下执行的结果也会大有不同,可能就因为一个配置问题,导致一个非常高危的漏洞能够被利用。
  • 在不同的PHP版本中配置指令也有不一样的地方,新的版本可能会增加或者删除部分指令,改变默认设置或者固定设置指令。
  1. PHP官方配置说明:传送门
  2. PHP_INI_*常量的定义,参见表1-1:
    <li> PHP配置文件的指令多大数百项,这里只列出会影响 PHP 脚本安全的配置列表以及核心配置选项
  • register_globals (全局变量注册开关)
  • allow_url_include (是否允许包含远程文件)
9. register_globals (全局变量注册开关) (1)功能:register_gloabls (全局变量注册开关),该选项在设置为on的情况下,会直接把用户以GET、POST等方式提交上来的参数注册成全局变量并初始化值为其参数对应的值,从而使提交的参数可以直接在脚本中使用。而Off的时候,我们需要到特定的数组里去得到GET、POST提交的参数值!!! (2)PHP版本小于4.2.3时,register_globals被设置为PHP_INI_ALL。 (3)PHP版本>=5.3.0时,register_globals被废弃,不推荐使用。(还是可以手工设置为on) (4)PHP版本>=5.4.0时,移除了该选项。(不可以再设置为on了)如果强制设置该参数,则会报出以下信息:                              (5)demo测试:当register_globals (全局变量注册开启) 设置为on且PHP版本小于5.4.0时,如下代码输出结果为true。 (6)上面的代码测试,如果register_globals处于off的状态,那么会报出以下信息: 10. allow_url_include (是否允许包含远程文件) (1)功能:这个配置指令/参数处于on的情况下,就允许用户直接包含远程文件。所以说,当存在include($var)且$var可控的情况下,可以直接控制$var变量来执行PHP代码。 (2)PHP版本>5.2.0时,allow_url_include 默认设置为off,其配置范围是PHP_INI_ALL。 (3)PHP版本>=7.4.0时,被废弃,不推荐使用。 (4)注意:allow_url_fopen (是否允许打开远程文件),默认处于on (5)很明显:allow_url_include 设置项必须要开启 allow_url_fopen ,否则打不开远程文件,包含有个什么用!!! (6)demo测试:配置allow_url_inlucde指令为on且待远程包含的文件内容为php探针的时候,如下代码输出结果: (7)注意:文件包含的时候,这个包含的文件很有讲究,只要文件里的内是符合php语法规范的,无论是什么文件,就算文件名为zxcvbnm,也可被后台解析并执行,若文件里的内容不符合php语法规范,则原样打印输出到页面上!!! (8)如果allow_url_include是on的,而allow_url_fopen是off的,会报出以下等信息:                             
本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/qq_45555226/article/details/122504507
-- 展开阅读全文 --
KillDefender 的 Beacon 对象文件 PoC 实现
« 上一篇 02-09
Web安全—逻辑越权漏洞(BAC)
下一篇 » 03-13

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复