SuperAPI AI 工具集

php-cmd-audit

安全与审计

查看项目

更新于 10-15 11:44

技能介绍

用途

php-cmd-audit 用于对 PHP Web 项目源码进行命令注入审计。它识别系统命令执行相关代码,追踪用户输入到命令构造点,验证是否存在命令注入风险。

主要能力

  • 识别命令执行 Sink:exec、system、shell_exec、passthru、proc_open、popen、pcntl_exec,以及反引号语法 cmd。
  • 识别危险模式:命令字符串通过拼接包含用户输入(GET/POST/Body/参数字段);未做白名单或未做 shell 转义,尤其包含 ;|&、$()、反引号、换行等。
  • 追踪与验证:当命令字符串由多个变量组成、存在参数经过 JSON 解码/多层传递、或命令构造被 if/try 分支影响时,触发 php-route-tracer 进行追踪。
  • 输出可利用性分级、PoC 与修复建议。

使用方式

工具按以下流程工作:

  1. 识别命令执行 Sink 函数与语法。
  2. 追踪用户输入到命令构造点的数据流。
  3. 在满足条件时触发 php-route-tracer。
  4. 按强制模板输出漏洞条目,报告写入 {output_path}/vuln_audit/cmd_{timestamp}.md。

漏洞编号格式为 {C/H/M/L}-CMD-{序号},分级详见 shared/SEVERITY_RATING.md。

漏洞条目模板(强制)

[{等级前缀}-CMD-{序号}] {风险标题}

项目 信息
严重等级 {🔴/🟠/🟡/🔵} (CVSS {score})
可达性 (R) {0-3} - {理由}
影响范围 (I) {0-3} - {理由}
利用复杂度 (C) {0-3} - {理由}
可利用性 ✅ 已确认 / ⚠️ 待验证 / ❌ 不可利用 / 🔍 环境依赖
位置 {file}:{line} ({Function/Class})

数据流链(Source → Sink)

(逐行写出:请求参数读取 -> 拼接/拼装 -> 命令执行函数/语句)

可利用前置条件

  • 鉴权要求:{无需/需登录/需特定权限}
  • 输入可控性:{完全可控/条件可控/不可控}
  • 触发条件:{分支/异常/环境依赖}

证据引用(强制:来自 php-route-tracer)

每条命令注入疑似漏洞必须逐项引用 trace 输出中 ## 9) Sink Evidence Type Checklist 的 CMD 行对应证据要点(允许状态为待验证,但证据引用必须存在):

  1. EVID_CMD_EXEC_POINT:命令执行函数/语句位置(对应 trace 的 CMD 执行点证据)
  2. EVID_CMD_COMMAND_STRING_CONSTRUCTION:命令字符串/关键参数构造位置(拼接/模板化证据)
  3. EVID_CMD_USER_PARAM_TO_CMD_FRAGMENT:用户可控参数到命令关键片段的映射证据

tracer 证据缺失处理(强制)

  • 若无法定位上述 1~3 任一关键证据要点:该漏洞状态只能标记为 ⚠️待验证,不得直接给出 ✅已确认可利用。

验证 PoC(强制)

POST {完整路径} HTTP/1.1
Host: {host}
{必要 Cookie/Auth}

{Payload}

建议修复

  • 强制使用命令参数白名单 + 安全参数拼接策略(避免 shell=true 的情况)
  • 推荐替代实现(如使用不经 shell 的进程调用方式,或完全避免拼接)
  • 给出代码搜索语句(rg)定位同类拼接点

适用场景

适用于对 PHP Web 项目源码进行命令注入安全审计,尤其是需要以数据流链证据判定可利用性、并输出完整证据链与可观测验证框架的场景。

限制

  • 必须使用数据流链证据判定可利用性。
  • 禁止省略:不得出现任何省略占位符;每条条目必须包含完整的证据链与可观测验证框架。
  • 每条高危/中危条目必须含:位置证据 + Source→Sink 数据流链 + 可利用前置条件 + 可执行 PoC + 修复建议。
  • 若无法定位关键证据要点,漏洞状态只能标记为 ⚠️待验证,不得直接给出 ✅已确认可利用。

暂未提供

关于安装命令、收费与价格、支持平台、运行环境依赖等具体信息,资料中暂未提供。