بنقرة واحدة
php-file-write-audit
PHP Web 源码任意文件写入审计工具。识别用户可控数据进入写入 Sink 的链路,追踪任意落点写入/路径穿越到 write,并评估写入后的可执行性(禁止省略)。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
PHP Web 源码任意文件写入审计工具。识别用户可控数据进入写入 Sink 的链路,追踪任意落点写入/路径穿越到 write,并评估写入后的可执行性(禁止省略)。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
PHP Web 归档解压(Zip Slip/路径穿越)审计工具。识别解压条目名如何与目标目录拼接、是否存在 base dir 约束缺失,输出可利用性分级、可观测 PoC 与修复建议(禁止省略)。
PHP Web 全链路白盒代码安全审计流水线(多文件版编排)。作为总编排参考,按 Sink 类型调用各子审计 skill(`php-route-mapper/php-auth-audit/php-route-tracer/php-*-audit`),并复用统一输出与分级标准。
PHP Web 源码鉴权机制审计工具。从源码中识别所有认证/鉴权实现并分析风险,输出路由-鉴权映射与漏洞分析(含 PoC 与修复建议)。
PHP Web 源码命令注入审计工具。识别命令执行 Sink(exec/system/shell_exec 等),追踪用户输入进入命令拼接,输出可利用性分级、PoC 与修复建议(禁止省略)。
CodeIgniter 框架特效安全审计工具。针对 CodeIgniter 的 CSRF、XSS 输出过滤、数据库查询构造、路由与验证器配置、会话 Cookie 安全等机制进行白盒静态审计,并映射到通用漏洞类型体系(CSRF/AUTH/XSS/SQL/CFG/SESS 等)。
PHP Web 配置安全审计工具。识别 CORS/错误暴露/调试开关/安全头/危险运行时开关等,输出分级、可利用性分析、PoC 与修复建议(禁止省略)。
| name | php-file-write-audit |
| description | PHP Web 源码任意文件写入审计工具。识别用户可控数据进入写入 Sink 的链路,追踪任意落点写入/路径穿越到 write,并评估写入后的可执行性(禁止省略)。 |
分析 PHP 项目源码中“将数据写入磁盘文件”的实现逻辑,重点覆盖:
w/x 等覆盖方式写入,或会产生可利用的同名冲突覆盖shared/SEVERITY_RATING.md{C/H/M/L}-WRITE-{序号}识别并追踪以下写入/落点变更相关函数/语句(按项目实际出现情况选取):
file_put_contents({path}, {data})fwrite($handle, {data})(通常配合 fopen($path, 'w'|'ab'|'x'|...))stream_write($stream, {data}) / fputs($handle, {data})fopen($path, 'w'|'x'|'a'|'ab'|'wb'|...)ftruncate($handle, {size})(若路径由用户控制或与路径拼接链路相关)rename($src, $dest)copy($src, $dest)move_uploaded_file($tmp, $dest)(若不是纯 UPLOAD 场景,且核心风险是落点/路径可控)error_log($message, 3, $destination)(message_type=3 时 destination 为文件)必须分析并给出证据化判断(不能只写“可能”):
$baseDir / $uploadDir / $dataDir)如何与用户输入 join($base.$user / sprintf / join / 数组路径字段拼接)../、..\\、混合分隔符、Windows 盘符、绝对路径、尾部空白等)realpath/canonicalize 以及“最终 resolved 是否仍在 base 前缀下”的前缀校验resolved target 是否逃逸 base 约束(逃逸则倾向落点可控)必须追踪并输出(链路逐步写出):
{data}/{content} 参数是否来自用户可控输入(GET/POST/JSON/COOKIE/上传字段等)fopen(...,'w'|'x') 等)或明确允许覆盖同名文件由于文件写入常直接导致 RCE,本 skill 必须输出“写完之后能不能被执行/访问”的可证据判断(禁止省略):
.php 结尾,或写入的内容被包含/解析)public/、www/ 或框架模板/配置目录)每条 WRITE 疑似漏洞必须逐项引用 trace 输出中 ## 9) Sink Evidence Type Checklist 的 WRITE 行对应证据要点(允许状态为待验证,但证据引用必须存在):
EVID_WRITE_WRITE_CALLSITE:写入/落点变更的调用点位置证据(file_put_contents/fwrite/fopen('w')/rename/copy 等)EVID_WRITE_DESTPATH_JOIN_AND_NORMALIZATION:目的路径拼接与归一化证据(base join、净化/拒绝穿越片段、realpath 前缀校验等)EVID_WRITE_DESTPATH_RESOLVED_TARGET:最终解析落点(resolved target)证据(是否逃逸 base)EVID_WRITE_CONTENT_SOURCE_INTO_WRITE:写入内容参数与用户可控输入的映射证据EVID_WRITE_TRUNCATE_OR_OVERWRITE_MODE:覆盖/截断/追加模式证据(写入模式或覆盖策略)EVID_WRITE_EXECUTION_ACCESSIBILITY_PROOF:写完后的可执行性/可触达性证据(web 根/可包含目录/执行禁用策略等)## 9) Sink Evidence Type Checklist(WRITE 行)中任一关键证据要点缺失或无法对应到本条漏洞:该条漏洞状态只能标记为 ⚠️待验证(不得直接给出 ✅已确认可利用)。至少满足其一,且必须依赖 trace 验证 sink 存在:
输出到:
{output_path}/vuln_audit/write_{timestamp}.md
每条漏洞必须遵循以下结构(不得省略):
### [{等级前缀}-WRITE-{序号}] 任意文件写入(路径穿越到落点/写入链)风险
| 项目 | 信息 |
|------|------|
| 严重等级 | {🔴/🟠/🟡/🔵} (CVSS {score}) |
| 可达性 (R) | {0-3} - {理由} |
| 影响范围 (I) | {0-3} - {理由} |
| 利用复杂度 (C) | {0-3} - {理由} |
| 可利用性 | ✅ 已确认 / ⚠️ 待验证 / ❌ 不可利用 / 🔍 环境依赖 |
| 位置 | {file}:{line} ({Function/Class}) |
#### 数据流链(Source -> Path Transform -> Content Transform -> Sink)
(逐行写出:用户输入进入 destination/path 的链路、归一化/净化/realpath 约束检查 -> 最终 resolved target -> 用户输入进入写入内容 data 的链路 -> 进入写入函数参数位置 -> 是否覆盖/截断 -> 写入调用点)
#### 可利用前置条件
- 鉴权要求:{无需/需登录/需特定权限}
- 输入可控性:{完全可控/条件可控/不可控}
- 触发条件:{分支/异常路径/需要特定服务器文件权限/需要落到可执行目录}
#### 证据引用(强制:来自 php-route-tracer)
必须逐项引用:
- `EVID_WRITE_WRITE_CALLSITE`:{证据点简述(包括 file:line)}
- `EVID_WRITE_DESTPATH_JOIN_AND_NORMALIZATION`:{证据点简述}
- `EVID_WRITE_DESTPATH_RESOLVED_TARGET`:{证据点简述}
- `EVID_WRITE_CONTENT_SOURCE_INTO_WRITE`:{证据点简述}
- `EVID_WRITE_TRUNCATE_OR_OVERWRITE_MODE`:{证据点简述}
- `EVID_WRITE_EXECUTION_ACCESSIBILITY_PROOF`:{证据点简述}
#### 验证 PoC(强制:可执行或可观测验证框架)
```http
{HTTP Method} {真实路由与完整参数} HTTP/1.1
Host: {host}
{必要 Header/Session/JWT/Cookie}
{Payload}
PoC 输出/观察点(必须写清楚):
realpath + 前缀校验'w'/'x' 直接覆盖敏感文件;对同名冲突做安全拒绝rg):定位所有写入 API 与路径 join 点
## PoC/修复建议搜索语句(强制提供参考)
- 写入 API:
- `rg -n "file_put_contents\\(|fwrite\\(|fopen\\(|stream_write\\(|rename\\(|copy\\(|ftruncate\\(|error_log\\(" .`
- 路径拼接/归一化(常见变量名仅作提示,最终以项目为准):
- `rg -n "realpath\\(|canonicalize\\(|\\.\\.\\/|\\.\\.\\\\|allowlist|baseDir|dest(path)?|target(path)?|mkdir\\(" .`