34zY/CVE-2025-14177
GitHub: 34zY/CVE-2025-14177
CVE-2025-14177 的 Python 利用工具,通过特制 JPEG 触发 PHP getimagesize() 堆内存泄露并提取敏感数据。
Stars: 0 | Forks: 0
# CVE-2025-14177 — PHP `getimagesize()` 堆内存泄露
## 漏洞信息
| 字段 | 值 |
|---|---|
| CVE | CVE-2025-14177 |
| CWE | CWE-524(使用未初始化资源) |
| 严重程度 | 中等 — CVSS 6.3 |
| 根本原因 | `php_read_stream_all_chunks()` 将连续的数据块写入 `buffer[0]`,用未初始化的堆内存覆盖之前的数据 |
### 受影响版本
- PHP < 8.1.34
- PHP < 8.2.30
- PHP < 8.3.29
- PHP < 8.4.16
- PHP < 8.5.1
### 修复版本
- PHP 8.1.34 / 8.2.30 / 8.3.29 / 8.4.16 / 8.5.1
## 漏洞原理
```
getimagesize("php://filter/.../resource=malicious.jpg", $info)
└─ php_read_stream_all_chunks()
├─ Chunk 1 (8KB) → memcpy(buffer+0, chunk1, 8192)
├─ Chunk 2 (8KB) → memcpy(buffer+0, chunk2, 8192) ← overwrites!
└─ $info['APP1'] = chunk2 + uninitialized heap garbage
```
恶意 JPEG 携带超大的 APP1 标记(16KB),强制触发多数据块读取路径。返回的 `APP1` 字段泄露堆内存,其中可能包含凭据、token、会话数据或 ASLR 指针。
## 攻击流程
```
[1] RECON Find PHP app exposing getimagesize() output (APP1 field)
[2] PREP Craft malicious.jpg (APP1 = 16KB)
[3] EXPLOIT Upload → trigger getimagesize($file, $info)
[4] EXTRACT Parse $info['APP1'] for leaked heap data
[5] IMPACT Credential theft / token extraction / ASLR bypass
```
## 使用方法
```
python3 CVE-2025-14177.py [mode]
```
| 模式 | 操作 |
|---|---|
| `demo` | 完整漏洞利用演示(默认) |
| `gen` | 生成恶意 JPEG + PHP 漏洞利用代码 |
| `test` | 生成测试用例 JSON |
| `analyze` | 生成 JPEG + 模拟 + 分析泄露内容 |
| `flow` | 输出攻击流程图 |
### 输出(`./exploit_output/`)
```
exploit_output/
├── malicious.jpg # crafted JPEG payload (APP1 = 16KB)
├── exploit_standalone.php # deployable PHP exploit
├── exploit_report.json # full analysis report
└── test_cases.json # 3 test scenarios
```
## 测试场景
| 用例 | 攻击向量 |
|---|---|
| 1 | 直接上传 → `getimagesize($_FILES[...], $info)` |
| 2 | 流过滤器 + LFI(`php://filter/read=.../resource=...`) |
| 3 | 远程图片 URL(`/preview.php?url=attacker.com/malicious.jpg`) |
## 检测
- JPEG 上传中存在超大 APP1 标记(> 8192 字节)
- `$info` 数组中出现异常内存模式
- 使用 `php://filter` 包装器重复调用 `getimagesize()`
- 响应中包含十六进制编码的数据外泄
## 修复建议
升级 PHP 至已修补版本。无变通方案 — 必须打补丁。
```
php -v # verify version
```
如无法升级:在返回客户端前从 `$info` 中剥离 `APP1`,或在 `allow_url_fopen` 中禁用 `php://filter`。
## 免责声明
本工具仅用于**授权安全测试**。未经授权对不属于您或未获得明确书面许可进行测试的系统使用本工具属于违法行为。
标签:ASLR绕过, CISA项目, CVE-2025-14177, CVSS 6.3, getimagesize, Heap Memory Leak, HTTP工具, meg, OpenVAS, PHP, Python, Web安全, 代码生成, 信息安全, 内存泄露, 堆溢出, 威胁情报, 安全工具开发, 开发者工具, 攻击面, 无后门, 渗透测试工具, 网络安全, 蓝队分析, 逆向工具, 隐私保护