phpinfo 页面你会关注哪些信息
1. PHP 配置和安全设置
这些信息直接决定了攻击的难度和可用方法
disable_functions
: 这是最关键的信息。如果这个列表为空,或者只禁用了少数函数,那么我就可以直接使用像system()
、exec()
、shell_exec()
、passthru()
等命令执行函数来获取 WebShell,进行系统命令执行allow_url_fopen
和allow_url_include
: 如果这两个选项都为On
,则存在远程文件包含 (RFI) 漏洞的可能性。攻击者可以从远程服务器加载恶意 PHP 文件并执行open_basedir
: 如果这个选项设置了,它会限制 PHP 脚本只能在指定的目录及其子目录中操作。这能有效限制攻击者的权限,但我会寻找绕过它的方法display_errors
: 如果这个选项是On
,服务器会显示详细的错误信息,包括文件路径、数据库查询语句等。这些信息对于 SQL 注入、文件包含等漏洞的调试和利用非常有帮助expose_php
: 如果这个选项为On
,phpinfo()
页面会暴露 PHP 的精确版本号(例如 PHP/8.1.12)。这使得我能快速在漏洞数据库(如 CVEs)中查找该版本已知的安全漏洞,并针对性地进行攻击
2. 服务器环境信息
这些信息帮助我了解 PHP 运行在什么样的环境中,以及我能获得多大的权限
SERVER_SOFTWARE
: 告诉我 Web 服务器的类型和版本,例如 Apache、Nginx、IIS 等。这些服务器本身也可能存在漏洞_SERVER["DOCUMENT_ROOT"]
: 暴露了网站的根目录路径,这是进行本地文件包含 (LFI) 和目录遍历攻击的关键信息User
和Group
:phpinfo()
会显示 PHP 进程是以哪个用户和用户组运行的。这决定了我能执行哪些操作,例如是否可以读取其他用户的文件、是否可以写入某些目录等PATH
: 环境变量PATH
包含了系统命令的搜索路径,如果我能执行命令,这能帮助我快速找到像whoami
、ls
、id
等常用命令
3. 已加载的模块和扩展
这些信息揭示了 PHP 环境的功能,以及潜在的攻击面
cURL
、sockets
: 如果这些扩展存在,我可能会尝试服务器端请求伪造 (SSRF) 攻击,通过服务器向内部网络发起请求,探测内网服务pdo
、mysqli
、sqlsrv
等数据库扩展: 确认网站使用了哪种数据库,为后续的SQL 注入攻击提供目标GD
、ImageMagick
等图像处理扩展: 如果存在,可能会有图像处理库漏洞,导致命令执行。
4. 文件系统和路径信息
_SERVER["SCRIPT_FILENAME"]
: 暴露了当前脚本在服务器上的绝对路径。这是进行本地文件包含、路径遍历、以及了解服务器文件结构的重要线索upload_tmp_dir
: 如果我能找到一个文件上传漏洞,这个选项会告诉我临时文件上传的目录。有时候,我可以在这个目录上传并执行一个 WebShell