当我们看到phpinfo时在谈论什么

虚幻大学 xuhss 468℃ 0评论

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
我们在渗透测试的过程中,如果存在phpinfo界面,我们会想到什么?

大部分内容摘抄自:https://www.k0rz3n.com/2019/02/12/PHPINFO 中的重要信息/

关于phpinfo

PHP中提供了PHPInfo()函数,该函数返回 PHP 的所有信息,包括了 PHP 的编译选项及扩充配置、PHP 版本、服务器信息及环境变量、PHP 环境变量、操作系统版本信息、路径及环境变量配置、HTTP 标头、及版权宣告等信息。
d2b60517b635280379d72743c3740355 - 当我们看到phpinfo时在谈论什么

我们编写test.php文件

php</span 
 phpinfo(); 
?>

038f2e7ff4eb4462f03eaec7f66300a5 - 当我们看到phpinfo时在谈论什么
很多PHP站点在测试搭建PHP环境是否正确后没有及时删除,这些敏感信息的泄露将会增大服务器被渗透的风险

敏感信息查看与利用

  • php版本信息

方便本地搭建环境,不同版本之间也参在函数参数和安全性机制的差异
67067add7e4e66dfe37628230f4de1a2 - 当我们看到phpinfo时在谈论什么

  • 系统的版本信息
    329a6efde1e2f908818a52459a31bc63 - 当我们看到phpinfo时在谈论什么
  • Loaded Configuration File(配置文件位置)
    php.ini的位置
    ea309da3dc3b46639638d648f4c9e3d1 - 当我们看到phpinfo时在谈论什么
  • Registered PHP Streams(支持的流)
    这个在文件包含,反序列化还有一些关键的bypass的时候非常有用
    20f22f1ca0688aa8db3bcc12740f6436 - 当我们看到phpinfo时在谈论什么
  • Registered Stream Filters(支持的流过滤器)
    这个同样是在文件包含,反序列化还有一些关键的bypass的时候有用
    49d021daa2747d4447791404f84f4d71 - 当我们看到phpinfo时在谈论什么
  • allow_url_fopen & allow_url_include

文件包含必看选项之一,如果allow_url_fopenallow_url_include都为On的时候,则文件包含函数是可以加载远程文件的,可以利用远程文件包含漏洞直接执行任意命令。

攻击者在自己的web服务器上放一个可执行的恶意文件,通过目标网站存在的远程文件包含漏洞来加载文件,从而实现执行任意命令的目的

12238d5987e3111ca38c47e5d38f7f26 - 当我们看到phpinfo时在谈论什么

  • disable_functions
    命令执行,代码执行必看选项之一。该指令可用于禁止某些函数,接收逗号分隔的函数名列表作为参数,通过bypass目标站点的disable_functions达成RCE

051694dc070bfd10e0a535c6454e5c54 - 当我们看到phpinfo时在谈论什么

  • display_errors & display_startup_errors

调试过程中经常使用的错误提示在没有关闭的情况下放入生产环境是不堪设想的
e13304915107ae49ade1d141c4c0cee7 - 当我们看到phpinfo时在谈论什么

  • open_basedir

这个选项设置了文件读取的时候的目录限制,将用户可操作的文件限制在某目录下
30cd4f1656c24a600f3d65c7cd5a45bf - 当我们看到phpinfo时在谈论什么

但是这个限制是可以绕过的,之前P牛给出了绕过方法-PHP绕过open_basedir列目录的研究

  • short_open_tag

判断服务器是否支持短标签,方便写入shell
adfdf704938da6936e0c1a6f907c4c21 - 当我们看到phpinfo时在谈论什么

  • phar

文件包含还有反序列化重点关注,在文件系统函数 ( file_get_contents 、 unlink 等)参数可控的情况下,配合 phar://伪协议 ,可以不依赖反序列化函数 unserialize() 直接进行反序列化的操作
af98cdaa7555dad4ab08ac90d6a079f6 - 当我们看到phpinfo时在谈论什么

  • session
    查看session的相关配置,在文件包含和反序列化的时候有用
    3db0c20fa9e1647ec8dedea67ea0ea02 - 当我们看到phpinfo时在谈论什么
  • SERVER_ADDR

真实IP
915515a17b7a7e651cd8f4a8c04915a6 - 当我们看到phpinfo时在谈论什么

  • _FILE["file"]

获取临时文件名字和路径,本地文件包含GetShell

  • _SERVER["PATH"]

这是windows下特有的,能显示出系统的所有环境变量
41ec1b9d7e29e5357add913467326ba2 - 当我们看到phpinfo时在谈论什么

  • _SERVER["SCRIPT_FILENAME"]

找到网站的绝对路径
7f7f6b766b36f9bfbf53fd1ddc2c43a1 - 当我们看到phpinfo时在谈论什么

  • Gopher

可以配合SSRF发起攻击

  • Fastcgi

查看是否开启Fastcgi和Fastcgi的版本,可能导致解析漏洞,远程命令执行,任意文件读取等问题

  • 支持的程序

可以通过phpinfo()查看一些特殊的程序服务,比如redismemcachemysqlSmtp,curl等等。如果服务器装了redis或者memcache,可以尝试寻找SSRF来getshell

检测POC

基于pocsuite3的phpinfo泄露检测脚本

from pocsuite3.api import requests
from pocsuite3.api import register\_poc
from pocsuite3.api import Output, POCBase, logger
import ssl

ssl.\_create\_default\_https\_context = ssl.\_create\_unverified\_context

class TestPOC(POCBase):
 vulLevel = 3
 vulID = ''
 version = '1.0'
 vulDate = ''
 references = ['']
 name = 'phpinfo敏感信息泄露'
 appPowerLink = ''
 appName = 'phpinfo'
 appVersion = ''
 vulType = 'phpinfo敏感信息泄露'
 desc = '''
 '''
 samples = ['']

 def \_verify(self):
 result = {}
 headers = {
 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
 }
 phpinfoList=[
 '/phpinfo.php','/1.php','/test.php'
 ]

 for path in phpinfoList:
 vulurl = "{}{}".format(
 self.url.rstrip('/'), path)
 try:
 resp = requests.get(url=vulurl, headers=headers, timeout=3, verify=False)
 if "PHP Version" in resp.text and resp.status\_code == 200:
 result['VerifyInfo'] = {}
 result['VerifyInfo']['url'] = vulurl
 return self.parse\_attack(result)
 except Exception as e:
 logger.error("connect target '{} failed!'".format(vulurl))
 pass

 return self.parse\_attack(result)

 def parse\_attack(self, result):
 output = Output(self)
 if result:
 output.success(result)
 else:
 output.fail('Internet nothing returned')
 return output

register\_poc(TestPOC)

参考链接

END

建了一个微信的安全交流群,欢迎添加我微信备注进群,一起来聊天吹水哇,以及一个会发布安全相关内容的公众号,欢迎关注 ?

af96e0338b61b7b95d409a042f9b91ea - 当我们看到phpinfo时在谈论什么
8e76aa0bc0b9f83733ef610d5f550554 - 当我们看到phpinfo时在谈论什么

__EOF__

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jkE7e2Sq-1647105129765)(https://blog.csdn.net/Cl0ud/p/15999347.html)]春告鳥 本文链接:https://blog.csdn.net/Cl0ud/p/15999347.html关于博主:评论和私信会在第一时间回复。或者直接私信我。版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

转载请注明:xuhss » 当我们看到phpinfo时在谈论什么

喜欢 (0)

您必须 登录 才能发表评论!