渗透测试中 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.pswp.cn/diannao/89719.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/89719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《如何在 Spring 中实现 MQ 消息的自动重连:监听与发送双通道策略》

大家好,我是G探险者!📌 背景场景在高可用分布式系统中,我们经常面临:MQ 集群重启 → 消息监听中断MQ 网络短暂抖动 → 发送端连接失败一端恢复正常,另一端仍处于挂死状态如果你只配置了“连接工厂层”的重连…

OpenCV 安装使用教程

一、OpenCV 简介 OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉和机器学习软件库,提供了超过 2500 个优化的算法,用于实时图像处理、视频分析、对象识别、人脸检测、机器学习等任务。 Python 提供了对 Open…

【SNN脉冲神经网络3】HH神经元软件仿真

本篇文章主要核心目的在于研究明白HH神经元的数学模型,并且验证其正确性。因此,在本篇文章中只会使用numpy函数库用于构建神经元,以及matplotlib用于绘图。1.导入对应的库import numpy as np import matplotlib.pyplot as plt import re impo…

「日拱一码」014 Python常用库——Pandas

目录 数据结构 pandas.Series :一维数组,类似于数组,但索引可以是任意类型,而不仅仅是整数 pandas.DataFrame :二维表格型数据结构,类似于 Excel 表格,每列可以是不同的数据类型 数据读取与写…

狂命爆肝21天,共51K字的JAVA学习笔记奉上,JAVA从入门到精通一文搞定,一文在手JAVA无忧

背景知识 Java 相关概念 JavaSE (Java Standard Edition): 基础版,用于开发桌面应用程序。JavaEE (Java Enterprise Edition): 企业版,用于开发企业级应用程序。JavaME (Java Micro Edition): 微型版,用于开发嵌入式系统和移动设备应用程序…

Dijkstra 算法#图论

Dijkstra 算法 算法前提:在没有负边的情况下使用。算法思路:将结点分成已确定最短路长度的点集 S 和未确定最短路长度的点集 T,每次从 T 集合中选取最短路长度最小的结点移到 S 集合中,并对其出边执行更新操作 从T集合中&#x…

开源与闭源大模型的生态与技术对比:以百度文心4.5开源为视角

技术对比:开源与闭源大模型的优劣势 性能对比:算力效率与场景适配的博弈 在模型性能的竞技场上,开源与闭源大模型呈现出明显的差异化特征。以百度文心4.5开源系列为例,其47B参数的混合专家(MoE)模型在飞桨…

企业电商解决方案哪家好?ZKmall模块商城全渠道支持 + 定制化服务更省心

在数字化浪潮席卷各行各业的当下,企业要想拓展市场、提升竞争力,搭建专属电商平台已经成了绕不开的选择。但市场上的电商解决方案五花八门,怎么才能挑到真正适合自己的?其实道理很简单:能同时搞定全渠道支持和定制化服…

使用哪种语言的人更容易通过面试?

Ruby 和 Swift!似乎语言越大众面试通过率越低,毕竟岗位数量有限,Java 和 C 程序员所面对的竞争也会更加激烈。使用 Ruby 和 Swift 的程序员比例到底怎么样?我们可以从 Google Trends 中发现一些蛛丝马迹。最火热的 Java 的热度平均…

Axios 二次封装高级教程(含请求取消等功能)

Axios 二次封装高级教程(含请求取消等功能) 整理不易,收藏、点赞、关注哦! 一、总体架构设计 目的:构建一套功能完善、易用且健壮的 HTTP 请求封装层 核心功能: 请求拦截、响应拦截请求取消(防…

MobileNet V1的Pytorch实现并加载预训练模型进行验证

一. 环境 windonws 11RTX5060CUDA 12.8Pytorch 2.9.0dev20250630cu128torchvision 0.23.0dev20250701cu128 二. 代码 基于Mobilenet-CustomData 的Mobilenet_Pretrain.ipynb 1. 定义Mobile Net V1 import os import time import torch import torch.nn as nn import torch…

HTTP协议利用TCP的特性来实现长连接

在讨论网络协议时,经常会有人提出这样一个问题:“既然HTTP是基于TCP的,而TCP本身支持长连接,为什么HTTP不支持长连接?”这种说法其实是一种误解。实际上,HTTP确实可以并且经常使用长连接(也称为持久连接)。 什么是长连接? 首先,我们需要明确什么是“长连接”。在网…

整流电路Multisim电路仿真实验汇总——硬件工程师笔记

目录 1 整流电路基础 1.1 整流电路基本原理 1.2 整流电路的类型 1.2.1 单相整流电路 1.2.2 三相整流电路 1.3 整流电路的应用 1.3.1 直流电源 1.3.2 电池充电器 1.3.3 变频调速系统 1.34 电解和电镀 1.4 整流电路的优缺点 1.4.1 优点 1.4.2 缺点 2 二极管整流电路…

LangChain 全面入门

什么是 LangChain? LangChain 是一个专门为 大语言模型 (LLM) 应用开发设计的开源框架,帮你快速实现: • 多轮对话 • 知识库问答 (RAG) • 多工具协同调用 (function calling / tool) • 智能体 Agent 自动决策任务链 解耦 LLM 接口、Prom…

RabbitMQ 高级特性之消息确认

1. 简介 RabbitMQ 的消息发送流程: producer 将消息发送给 broker,consumer 从 broker 中获取消息并消费 那么在这里就涉及到了两种消息发送,即 producer 与 broker 之间和 consumer 与 broker 之间。 “消息确认” 讨论的是 consumer 与…

【51单片机用数码管显示流水灯的种类是按钮控制数码管加一和流水灯】2022-6-14

缘由 #include "REG52.h" unsigned char code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64}; //共阴0~F消隐减号 unsigned char Js0, miao0;//中断计时 秒 分 时 毫秒 sbit k0P3^0; sbit k1P3^1; void smxs(u…

Android15 开机动画播放结束之后如何直接启动应用

问题背景 软件版本:Android15 在一些需求场景里面,需要开机动画播放结束立马去启动一个应用,下面介绍如何实现这种方案。 解决方案 首选我们需要知道开机动画播放结束之后的流程,这里会调用到wms里面,也就是一些enableScreen之类的函数,知道这个大概流程之后,再去对应…

AI实践:大模型痛点和解决方案讨论

大家好,我是星野,欢迎来到我的CSDN博客。在这个技术日新月异的时代,我们一起学习,共同进步。 今天想和大家分享的是大模型在实际应用中的痛点以及解决方案,特别是RAG(检索增强生成)技术。 大模…

Web前端工程化

Web前端工程化 前端工程化是指将软件工程的方法和原则应用到前端开发中,以提高开发效率、保证代码质量、便于团队协作和项目维护的一套体系化实践。以下是前端工程化的主要内容和实践: 核心组成部分 1. 模块化开发 JavaScript模块化:Comm…

Java 原生 HTTP Client

​介绍 Java 原生 HttpClient 是从 Java 11 开始引入的标准库,用于简化 HTTP 请求的发送与响应处理。它支持同步和异步请求,并内置对 HTTP/1.1 和 HTTP/2 协议的支持。HttpClient 提供了易用的 API 来设置请求头、请求体、处理响应以及配置 SSL/TLS 加密…