phpinfo 页面暴露什么
phpinfo 页面会把运行环境摊开给访问者:PHP 版本与编译参数、已加载扩展、配置文件路径、文档根目录、环境变量与部分请求信息。对攻击者来说这是一份环境说明书;对运维来说它通常只是上线时留下的探针。检查的目标是确认它的可达性、内容敏感度,以及生产环境是否可以移除。
基本信息
| 常见路径 | info.php、phpinfo.php、test.php、探针类页面 |
|---|---|
| 可获取信息 | 版本、扩展、路径、环境变量、部分配置项 |
| 风险 | 为后续针对性利用提供版本与环境线索 |
| 处置 | 生产移除文件,或限制来源与访问认证 |
| 替代方案 | 用受限的诊断接口做环境检查 |
典型使用场景
- 外网暴露面检查:确认探针页面是否可被公网访问
- 上线遗留清理:核对部署包中是否还带有调试页面
- 变更前后核对:确认升级过程中未重新启用探针
- 配合其他问题:环境信息常用于判断其他漏洞的适用性
- 自查闭环:为运维提供可执行的清理与替代方案
检查方式
检查方式
# 只记录状态码,不保存整页内容
curl -s -o /dev/null -w "%{http_code}\n" https://target.example/info.php
# 常见路径一次判一遍
for p in info.php phpinfo.php test.php; do printf '%s ' "$p"; curl -s -o /dev/null -w '%{http_code}\n' "https://target.example/$p"; done
# 记录:页面可达性与是否含敏感变量名,不复制取值页面内容与风险
| 页面区块 | 泄露内容 | 风险说明 |
|---|---|---|
| 版本信息 | PHP 版本与构建参数 | 便于匹配已知问题 |
| 扩展列表 | 已加载模块 | 暴露可用功能面 |
| 路径信息 | 配置与文档根目录 | 辅助定位其他文件 |
| 环境变量 | 可能含密钥类配置 | 按最高敏感度处理 |
| 请求信息 | 请求头与客户端地址 | 用于判断代理与信任链 |
环境变量中可能含密钥类配置:报告只写存在敏感变量,不复制任何取值,更不要整页存档。
只测默认文件名会漏掉很多情况:备份文件、带后缀的版本与内部命名习惯都可能存在,按客户命名规范扩展一小批候选即可。