当前位置: 首页 > news >正文

渗透测试中 phpinfo() 的信息利用分析

在渗透测试中,phpinfo() 是一个非常常见却极具价值的信息泄露点。这个函数的本意是向开发者展示当前 PHP 环境的详细配置情况,包括编译选项、扩展模块、环境变量、系统信息、目录路径等。然而一旦该页面被暴露到互联网上,攻击者便可以借此收集大量目标系统的重要信息,从而为后续的漏洞利用、权限提升、提权横向等行为打下基础。

本文将从实战角度分析 phpinfo() 页面中各类信息的渗透利用方式。


一、系统与服务器环境信息

phpinfo() 输出的顶部,可以看到如下关键字段:

字段示例值利用意义
SystemLinux kali 5.10.0-kali-amd64 x86_64操作系统类型、内核版本、架构信息,可用于匹配已知提权漏洞
Server APIApache 2.0 Handler / FPM/FastCGI判断 Web 服务类型,结合特定攻击向量(如 PHP-FPM RCE)
Build DateFeb 10 2023判断是否为老旧版本,辅助漏洞判断
Architecturex86_64匹配 Payload 构造、Shellcode 架构

这些信息可以帮助攻击者判断操作系统类型与服务器架构,以便选择合适的利用模块或提权工具。


二、PHP 版本信息

  • PHP Version: phpinfo() 明确显示 PHP 的版本号(如 7.4.38.1.12)。

  • 攻击者可以据此查找该版本存在的公开漏洞(如:

    • CVE-2019-11043:PHP-FPM 任意代码执行
    • CVE-2021-21703:路径解析问题引发信息泄露
    • CVE-2021-32610:反序列化漏洞

对于已知漏洞版本,攻击者可进行漏洞验证与构造 RCE 利用链。


三、已加载模块与扩展信息

phpinfo() 输出中会列出所有当前加载的扩展,如:

  • curl, mbstring, openssl, gd, imap, mysqli, pdo_mysql, phar, xml, zip 等。

利用方式包括:

  • Phar 支持存在时:可能通过文件包含 + phar:// 协议实现反序列化攻击。
  • IMAP/POP3 扩展开启时:可构造 SSRF 请求绕过 URL 限制。
  • 数据库扩展(mysqli/pdo):判断是否可连接后端数据库、暴力连接测试。
  • Zip 支持开启时:辅助构造压缩包提权场景。

四、文件路径与目录布局信息

该部分通常被用于路径遍历、文件包含、上传利用、Session 劫持等攻击。常见字段如下:

字段示例值利用方式
DOCUMENT_ROOT/var/www/html明确网站根目录,辅助构造 LFI 路径
SCRIPT_FILENAME/var/www/html/info.php定位当前文件实际路径,辅助构造任意文件读取
include_path.::/usr/share/phpPHP 包含路径,可能在 LFI 时被利用
upload_tmp_dir/tmp文件上传后的临时位置,上传图片马验证路径用
extension_dir/usr/lib/php/20220829动态扩展路径,可尝试利用 dl() 加载恶意模块
session.save_path/var/lib/php/sessions可尝试结合 LFI + Session 注入恢复会话内容
open_basedir/var/www:/tmp判断是否存在目录访问限制,LFI 的一个重要参考项

通过这些路径,攻击者可以精确定位文件系统结构,为上传、读取或包含本地文件提供关键线索。


五、禁用函数与限制项信息

phpinfo() 会显示当前禁用的函数,字段为:

  • disable_functions: 如 system, exec, shell_exec, popen

攻击者可以判断当前环境中能否直接执行命令,如果函数未禁用,即使文件包含成功,也可能导致 RCE。

同时,以下配置项也对渗透测试非常关键:

配置项描述利用意义
allow_url_fopen是否允许通过 URL 读取远程资源如果开启,可尝试远程包含(RFI)
allow_url_include是否允许通过 URL 包含远程 PHP 文件可结合 HTTP 服务构造远程木马包含
enable_dl是否允许动态加载扩展与扩展目录配合可加载恶意模块
display_errors是否输出错误信息如果开启,可获得路径、变量、文件等敏感信息

六、HTTP 请求与网络信息

phpinfo() 还会展示当前请求的环境变量,如:

  • REMOTE_ADDR:客户端 IP
  • HTTP_USER_AGENT:请求 UA
  • HTTP_COOKIE:Cookie 值
  • HTTP_HOST / SERVER_NAME:域名信息

在一些测试中,这些变量值可用于验证 SSRF、Header 注入、或反代 IP 泄露等场景。


七、临时利用技巧:验证上传和路径控制

  • 在黑盒测试中,可先上传一张图片马,然后访问 phpinfo() 页面,观察 upload_tmp_dir_FILES_POST 等字段,确认上传是否成功。
  • 某些框架会将 phpinfo() 残留在 debug.phpinfo.phptest.phpphpinfo.php 等文件中,可以结合目录扫描工具或 Google Dork 搜索语法发现。

总结

phpinfo() 本质上是一个信息收集的黄金入口,在渗透测试中可提供:

  • 系统指纹识别(PHP 版本、操作系统、架构)
  • 漏洞适配(根据版本选择利用模块)
  • 文件系统探索(Web 根、Session 路径、上传临时目录)
  • 利用路径构造(LFI、RFI、上传、反序列化)
  • 函数调用分析(是否禁用了 systemexec

熟练阅读并分析 phpinfo() 页面输出,是攻防两端都必须具备的一项核心能力。

http://www.dtcms.com/a/265602.html

相关文章:

  • Java接口报错:Packet for query is too large - 解决方案与架构思考
  • 从0到1搭建同城O2O外卖平台:外卖系统源码架构解析与实战指南
  • 前置代理重构网络访问的「中转站」
  • YOLOv2 正负样本分配机制详解
  • ollama bge-m3 Embending模型永久加载 does not support generate
  • Spring注解之@Repository
  • 采样点不一致:总线通信的隐形杀手
  • C++之红黑树认识与实现
  • Go应用容器化完全指南:构建最小化安全镜像的终极实践
  • Jenkins的最佳替代方案TeamCity:优势、差异对比及常见问题解答
  • 使用 HiveMQ Broker 写入 TDengine
  • C#,VB.NET从JSON数据里提取数组中的对象节点值
  • 【论】电力-交通融合网协同优化:迎接电动汽车时代的挑战
  • .NET 8.0 Redis 教程
  • Pytorch中expand()和repeat()函数使用详解和实战示例
  • github在线图床
  • 一篇文章掌握Docker
  • Redis 持久化详解、使用及注意事项
  • 关于使用cursor tunnel链接vscode(避免1006 issue的做法)
  • ASP 安装使用教程
  • ubuntu rules 使用规则
  • 什么是VR全景展示?VR展示需要哪些科技?
  • 【React Native原生项目不能运行npx react-native run-android项目】
  • 学习设计模式《十六》——策略模式
  • 安装 Docker Compose!!!
  • 蒙特卡洛方法:随机抽样的艺术与科学
  • SSL Pinning破解实战:企业级移动应用安全测试方案
  • java集合详解
  • 论文阅读笔记——Autoregressive Image Generation without Vector Quantization
  • 当材料研发遇上「数字集装箱」:Docker如何让科研效率「开挂」?