Ax PHPINFO()
<?php phpinfo(); ?>
PHP提供PHPInfo()函数,返回PHP的所有信息,包括PHP的编译选项和扩展配置、PHP版本、服务器信息和环境变量、PHP环境变量、操作系统版本信息、路径和环境变量配置、HTTP头、版权声明等信息。
a 绝对路径
_SERVER[“SCRIPT_FILENAME”]
网站的绝对路径
getshell的路径不就来了。
b 支持的程序
可以通过phpinfo()检查一些特殊的程序服务,比如redis、memcache、mysql、SMTP、curl等。如果服务器配备了redis或者memcache可以通过ssrf获取外壳,这样的问题在discuz就已经出现了。如果您确定要安装redis或memcache,您可以不加思考地专注于ssrf。
c 真实资产
_SERVER[“SERVER_ADDR”]
显示真实IP
有时候通过phpinfo()
泄漏的ip可以查查旁站、c段,就可以不用绕CDN了
d 敏感配置
允许_url_include
、允许_url_fopen
、禁用_functions
、open_basedir
、short_open_tag
等等
例如,allow_url_include可用于远程文件包含,disable_functions可用于查看禁用的函数、绕过执行并检查open_basedir是否打开。绕过open_basedir可以读取一些未经授权的目录。
此外,您还可以获得一些环境信息,如路径和登录环境等。
e 获取临时文件名
phpinfo() 会打印出所有请求的变量,所以我们只需要向phpinfo 发送 上传文件的数据包,就可以获取到临时文件名
向phpinfo() post一个shell可以在_FILES[“file1”]
中看到上传的临时文件,如果有个lfi,便可以直接getshell了。
f fastcgi
查看是否开启fastcgi和fastcgi的版本,可能导致解析漏洞、远程命令执行、任意文件读取等问题
g phar
文件包含还有反序列化重点关注
h 版本信息
PHP的版本差别很大,因此可以针对版本就行漏洞寻找。这也是我们需要做的第一步。
操作系统的版本信息,这在我们后期命令执行的时候或者是 bypass disable_function 的时候有用
i Loaded Configuration File
配置文件的路径
j Registered PHP Streams
支持的流,这个在文件包含、反序列化还有一些关键的 bypass 的时候非常有用
k Registered Stream Filters
支持的流过滤器,这个同样在文件包含、反序列化还有一些关键的 bypass 的时候非常有用
L Core
allow_url_fopen&allow_url_include | 文件包含必看选项之一 |
---|---|
short_open_tag | 判断服务器是不是支持短标签,这在写 shell 的时候很有帮助 |
open_basedir | 这个选项设置了文件读取的时候的目录限制 |
include_path | PHP 用include()函数包函文件时的默认路径 |
disable_functions | 命令执行、代码执行必看选项之一 |
display_errors&&display_startup_errors | 调试过程中经常使用的错误提示在没有关闭的情况下放入生产环境是不堪设想的 |
enable_dl | 通过动态加载,有可能忽略所有 open_basedir 限制 |
Bx References
[1] https://www.baoge.net/article/74322.html