PHP安全 [环境变量]

超全局变量

PHP中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行global $variable;就可以访问它们∶

$GLOBALS ,$_SERVER,$_GET,$_POST ,$_FILES , $_COOKIE,$_SESSION ,$_REQUEST、$_ENV

它们受到variables_order变量的控制。

$_SERVER

PHP环境变量允许开发者的脚本从服务器动态收集某些类型的数据。保证PHP程序在不同服务器正确运行。例如DOCUMENT_ROOT,CONTEXT_DOCUMENT_ROOT变量将自动获得网站的根目录,而无需在脚本中进行任何更改。

php.ini

配置文件( php.ini)在PHP启动时被读取。对于服务器模块版本的PHP,仅在 Web服务器启动时读取一次。cli(命令行)每次使用重新读取。php.ini内部 variables_order参数控制着超全局变量。

phpinfo()

输出PHP当前状态的大量信息,包含了PHP编译选项、启用的扩展、PHP 版本、服务器信息和环境变量(如果编译为一个模块的话)、PHP环境变量、操作系统版本信息、path 变量、配置选项的本地值和主值、HTTP头和PHP授权信息( License )。从 php.ini 配置获取。常常关联着敏感信息泄露的问题。

具体:确切的PHP版本、操作系统和它的版本、PHP详细配置、IP地址信息、服务器的环境变量、PHP扩展及其配置;

敏感信息泄露本身并不危险,但是配合着其他漏洞,服务器面临的威胁就大增,比如:

容器版本泄露:可能配合Apache这个版本的CVE漏洞,获取shell

真实IP泄露:直接绕过CDN,得到真实IP,后续可继续查旁站IP和C段

禁用的方法:在构造木马webshell的过程,需要知道哪些方法是被禁用了的,有针对的过滤。

限定访问位置:PHP能够访问的目录是否有限制

短标签的使用:<?php ?>是PHP程序标准形式,打开此开关,将允许<? ?>,在构造shell过程中有帮助。

缓存:缓存PHP文件,文件类型为~.bin,配合文件上传(一般不过滤bin)覆盖,再调用达到加载恶意文件的目的。

Phar的利用:使用Phar://伪协议流可以Bypass 一些上传的 waf,大多数情况下和文件包含一起使用,同时关联,一些反序列化漏洞。

支持的程序:服务器是否加载了Redis、Memcache、MongoDB、MySQL、cURL还有Gopher。 

网站根目录:配合SQL注入漏洞,如SQLmap的 -os-shell,直接获取shell。

本地(远程)文件包含

allow_url_fopen:默认开启,关闭会导致应用程序故障,本地文件包含

allow_url_include: 默认关闭,如果打开,易出现远程文件包含漏洞。

文件包含漏洞:程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这种文件调用的过程一般被称为文件包含。程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。几乎所有脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP中居多其他语言编写的程序相对较少。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

carefree798

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值