当前位置: 首页 > 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.lryc.cn/news/579567.html

相关文章:

  • Part 0:射影几何,变换与估计-第三章:3D射影几何与变换
  • 工作中用到过哪些设计模式?是怎么实现的?
  • Robot---能打羽毛球的机器人
  • Linux操作系统之文件(二):重定向
  • 物联网MQTT协议与实践:从零到精通的硬核指南
  • 【王阳明代数】基于Perplexica二次开发的道装资源标识符与重定向知识路由系统
  • 使用HAProxy搭建Web群集:原理、步骤与实战总结
  • Node.js特训专栏-实战进阶:12. 数据库事务处理与并发控制
  • 基于 alpine 构建 .net 的基础镜像
  • 基于MATLAB的风力发电机无人机巡检路径优化研究
  • 利用人名语言分类案例演示RNN、LSTM和GRU的区别(基于PyTorch)
  • Go调度器的抢占机制:从协作式到异步抢占的演进之路|Go语言进阶(7)
  • Android Profiler 丢帧分析教程及案例
  • WPF学习笔记(22)项面板模板ltemsPanelTemplate与三种模板总结
  • 【Git】同时在本地使用多个github账号进行github仓库管理
  • 两级缓存 Caffeine + Redis 架构:原理、实现与实践
  • locate 命令更新机制详解
  • 小红书自动化操作:使用本地Chrome和User Data实现高效反检测
  • Linux系统(信号篇):信号的处理
  • spring6合集——spring概述以及OCP、DIP、IOC原则
  • MongoDB Memory Server与完整的MongoDB的主要区别
  • CANFD芯片在工控机数据采集和测量中的应用分析
  • 重新学习Vue中的按键监听和鼠标监听
  • PDF的图片文字识别工具
  • 110道Python面试题(真题)
  • Spring AI ETL Pipeline使用指南
  • 01_前后端打包发布、API接口调试
  • Stata如何做机器学习?——SHAP解释框架下的足球运动员价值驱动因素识别:基于H2O集成学习模型
  • Spring生态:引领企业级开发新纪元
  • Linux开发工具——gcc/g++