能力地图¶
ChatBug 当前负责一项窄而可审计的能力:在明确授权范围内评估 PHP 网站的 PHP2Shell 风险。它严格分开运行时暴露、受控 marker 线索、隔离 lab 命令验收和生产内存漏洞利用。
一等能力¶
-
普通网站运行时检查
chatbug php2shell web check <URL>以普通 Web URL 为入口,而不是按 webmail/CMS 等产品类型拆 CLI。它可读取 PHP 版本、验证 multipart parser,并可选做固定 session/include marker 探测。 -
本机 contract lab
chatbug php2shell lab local-list用进程内 HTTP 服务器锁定正/负向协议契约;它不启动 PHP、Docker 或 shell。 -
完整运行时 Docker lab
chatbug php2shell lab docker-list在自有 Docker 主机上创建 internal-only、一次性、无生产数据的 PHP-FPM/Nginx 环境。只有这里能运行固定ls/catproof。 -
可导入 Python API
CLI 只做参数和 JSON 输出;版本分类、HTTP 请求、marker 结构、lab 文件和清理生命周期均可独立导入和测试。
能力状态¶
| 能力 | 状态 | 证据边界 |
|---|---|---|
| PHP 版本头解析与修复版本分类 | 已实现并验证 | 证明版本/配置暴露,不证明可利用 |
| 普通 multipart parser 检查 | 已实现并验证 | 证明请求可达上传解析路径,不证明文件包含或命令执行 |
| 固定 session/include marker 探测 | 已实现并验证 | marker 返回说明候选路径需要进一步复核;不证明任意系统命令或用户文件泄露 |
| 本机 LFI/session contract lab | 已实现并验证 | 合成教学/回归链;不运行真实 PHP、shell 或内存破坏 payload |
| 远端 PHP-FPM Docker lab | 已实现并验证 | 只证明指定 runtime + 故意加入 lab-only include gadget 时的固定 ls/cat 输出 |
| CVE-2026-109618/109619 内存破坏 RCE | 不提供 | 不发送 OOM/UAF payload;需要单独风险授权和专门研究 |
| 生产服务内存漏洞利用 | 不默认提供 | 含真实数据的生产服务只运行低影响检查;不自动利用 |
| 任意命令框架 / reverse shell | 不提供 | docker-list 只接受三个固定 proof 值 |
真实服务如何映射到产品¶
真实 PHP webmail 风险评估仍是两个独立问题:
- 将服务作为普通 PHP 网站运行
web check,确认实际 HTTP SAPI 的版本和入口;业务类型不应导致一个 Mail 专用 CLI; - 若需要
ls/cat级验收,在--fpm-image指定的同运行时、无数据 Docker lab 中运行docker-list;lab 仅挂载合成 webroot 和随机 marker,不连接真实邮箱、数据库、附件或用户目录。
因此“这是 Mail 服务”只影响 lab 镜像选择和风险等级,不改变通用 CLI 模型。
安全设计约束¶
- 所有远程检查都必须针对自有或已授权服务。
- 生产检查不发送 OOM、UAF、崩溃 payload、暴力重复请求或任意系统命令。
- 无
--skip-gadget-scan的web check可能在存在 LFI 的目标中触发受控 PHPechomarker;先确认授权范围和日志/维护窗口。 - Marker 不进入验证 URL、query 或 traversal 字符串,避免输入反射误判。
- Docker lab 使用内部网络、唯一 Compose project、合成数据和自动清理;
--keep只供短时人工复查。 - 报告必须明确区分“runtime only”“controlled marker path”和“runtime + lab gadget”。
不在当前范围¶
- 扫描互联网或未授权主机。
- 读取真实用户邮件、会话、附件、密钥或生产临时文件。
- 重启、修补、下架或重新配置生产服务。
- 隐藏版本 banner 后宣称已修复;修复必须由实际 runtime 版本和发布工件验证。
- 将 scanner 结论、
docker exec管理面操作、普通 PHP 页面执行或 marker 回显误报为未授权 RCE。