PHP代码审计——2、PHP代码审计之PHP环境简介
前言
代码在不同环境下执行的结果也会大有不同,可能就是因为一个配置问题,导致一个非常高危的漏洞能够利用;也可能你已经找到一个漏洞就因为你的配置问题,导致你弄了好久都无法构造成功的漏洞利用代码。然而,在不同的PHP版本中配置指令也会有不一样的地方,新的版本可能会增加或者删除部分指令,改变指令默认设置或者固定设置命令,因此,我们在代码审计之前需要非常熟悉PHP各个版本中配置文件的核心指令,才可以高效的挖掘到高质量的漏洞。
PHP_INI_*常量
常量 | 含义 |
PHP__INI__USER | 该配置选项可以再用户的PHP脚本或Windows注册表中设置 |
PHP__INI__PERDIR | 该配置选项可以再php.ini ..htaccess或http.conf中设置 |
PHP__INI__SYSTEM | 该设置选项可以在php.ini或http.conf中设置 |
PHP__INI__ALL | 该配置选项可在任何地方设置 |
php.ini only | 该设置选项仅可在php.ini中设置 |
PHP的配置文件指令多达数百项,这里就不一一做介绍了,如果对这方面有兴趣的话可以去PHP配置官方说明文件中查看具体内容: http://www.php.net/manual/zh/ini.list.php
PHP常见的基本设置
(1)open_basedir设置
open_basedir能限制应用程序能访问的目录,检查有没有对open_basedir进行设置,当然有的通过web服务器来设置,例如:apache的php_admin_value,nginx+fcgi通过conf来控制。
(2)allow_url_fopen设置
如果allow_url_fopen=ON,那么PHP可以读取远程文件进行操作,这个容易被攻击者利用。
(3)allow_url_include设置
如果allow_url_include=ON,那么PHP可以包含远程文件,会导致严重漏洞。
(4)safe_mode_exec_dir设置
这个选项能控制php可调用的外部命令的目录,如果php程序中有调用外部命令,那么知道外部命令的目录,能控制程序的风险。
(5)magic_quote_gpc设置
这个选项能转义提交给参数中的特殊字符,建议设置magic_quote_gpc=ON
(6)register_globals设置
开启这个选项,将会导致PHP对所有外部提交的变量注册为全局变量,后果相当严重。
(7)safe_mode设置
safe_mode是php的重要安全特性,建议开启
(8)session_use_trans_sid设置
如果启动session_use_trans_sid,会导致PHP通过url传递会话ID,这样会导致攻击者容易劫持当前会话,或者欺骗用户使用已被攻击者控制的现有会话。
(9)display_errors设置
如果启动此选项,PHP将会输出所有的错误或警告信息,攻击者能利用这些信息获取web根路径等敏感信息。
(10)expose_php设置
如果启动expose_php选项,那么由php解释其生成的每个响应都会包含主机系统上所安装的PHP版本。了解到远程服务器上运行的PHP版本后,攻击者就能针对系统枚举已知的盗取手段,从而大大增加成功发动攻击的机会。
(11)magic_quotes_sybase(魔术引号自动过滤)
magic_quotes_sybase指令用于自动过滤特殊字符,当设置为on时,它会覆盖掉magic_quotes_gpc=on的配置,也就是说,及时配置了gpc=on也是没有效果的。这个指令与gpc的共同点是处理的对象一致,即都是对POST\GET\Cookie进行处理。
(12)disable_functions(禁用函数)
在正式的生产环境当中,为了更安全地运行PHP,也可以使用disable_functions指令来禁止一些敏感函数的使用。当你想用本指令禁止一些危险函数是,切记要把dl()函数也加入到禁止列表,因为攻击者可以利用dl()函数来加载自定义的PHP扩展以突破disable_function指令的限制。
相关推荐:
以上就是PHP代码审计——2、PHP代码审计之PHP环境简介 的详细内容,更多请关注其它相关文章!
上一篇: jQuery动画与特效详解_jquery
下一篇: js的变量提升和函数提升详解