php-nosql-audit
PHPのWebソースコードを分析し、ユーザー入力がMongoDBやDocumentDBのクエリにどのように組み込まれるかを特定し、operator注入($gt/$ne/$whereなど)の脆弱性を検出して、PoCと修正提案を出力するSkill。
📜 元の英語説明(参考)
PHP Web 源码 NoSQL 注入审计工具。识别用户输入进入 MongoDB/DocumentDB 查询构造,分析是否存在 operator 注入($gt/$ne/$where 等),输出分级、PoC 与修复建议(禁止省略)。
🇯🇵 日本人クリエイター向け解説
PHPのWebソースコードを分析し、ユーザー入力がMongoDBやDocumentDBのクエリにどのように組み込まれるかを特定し、operator注入($gt/$ne/$whereなど)の脆弱性を検出して、PoCと修正提案を出力するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o php-nosql-audit.zip https://jpskill.com/download/6012.zip && unzip -o php-nosql-audit.zip && rm php-nosql-audit.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/6012.zip -OutFile "$d\php-nosql-audit.zip"; Expand-Archive "$d\php-nosql-audit.zip" -DestinationPath $d -Force; ri "$d\php-nosql-audit.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
php-nosql-audit.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
php-nosql-auditフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
PHP NoSQL 注入監査(php-nosql-audit)
PHP プロジェクトのソースコードを分析し、ユーザー入力が NoSQL クエリ条件にどのように組み込まれるかを特定し、operator 注入による認証バイパスやデータ漏洩を検出します。
分類と番号付け
- 詳細については、
shared/SEVERITY_RATING.mdを参照してください。 - 脆弱性番号:
{C/H/M/L}-NOSQL-{シーケンス番号}
必須チェック Sink(強制)
MongoDB ドライバー/ODM でよく見られます。
collection->find($filter)findOne($filter)/update($filter, {value})/delete($filter)where($condition)または->filter({value})- ユーザー入力をクエリ配列/式に結合するラッパー関数
必須チェック危険パターン(強制)
以下の判断証拠を必ず出力してください。
- ユーザー入力が filter/condition 配列の一部として直接使用されている場合(特に
json_decodeの結果) - ユーザー入力を構造化された条件として扱う動作があり、型強制やホワイトリスト化が行われていない場合
- クエリに悪用される可能性のある演算子フィールドが含まれている場合:
$ne/$gt/$lt/$or/$and/$where/$regex
tracer トリガー条件
ユーザー入力が JSON/配列/ネストされた構造であり、クエリ構築前に複数の層でラップされている場合、最終的な sink まで追跡する必要があります。
レポート出力
{output_path}/vuln_audit/nosql_{timestamp}.md
項目テンプレート(強制)
各脆弱性には以下を含める必要があります。
- 位置の証拠(クエリ構築関数/最終的な find/update 呼び出し)
- データフローチェーン(入力解析 -> 型 -> クエリ条件)
- 悪用可能な前提条件(認証状態/ログインの必要性/クエリ演算子を変更できるか)
- 検証 PoC(実際のルートと実際のパラメータ名であること;ペイロードは構造化された NoSQL 条件の例であること)
- 修正提案(厳密なフィールド allowlist + 型強制 + ユーザー入力をクエリ式として扱わないこと)
証拠引用(強制:php-route-tracer から)
各 NoSQL 注入の疑いのある脆弱性について、trace 出力の ## 9) Sink Evidence Type Checklist の NOSQL 行に対応する証拠の要点を個別に引用する必要があります(状態は「検証待ち」でも構いませんが、証拠の引用は必須です)。
EVID_NOSQL_QUERY_CONSTRUCTION:NoSQL クエリ構築点の証拠(find/update/delete またはクエリビルダーの実行点に対応)EVID_NOSQL_USER_INPUT_INTO_QUERY_STRUCTURE:ユーザー入力がクエリ条件構造に組み込まれる証拠(制御可能なフィールドが filter/where の構造に入る)EVID_NOSQL_OPERATOR_INJECTION_FIELDS:operator 注入フィールドの証拠($ne/$gt/$or/$where/$regex など)
tracer 証拠欠落の処理(強制)
- 上記 1~3 のいずれかの重要な証拠の要点を特定できない場合:その脆弱性の状態は
⚠️検証待ちとしかマークできず、直接✅悪用可能と確認済みとすることはできません。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
PHP NoSQL 注入审计(php-nosql-audit)
分析 PHP 项目源码,识别用户输入如何进入 NoSQL 查询条件,并检测 operator 注入导致的鉴权绕过/数据泄露。
分级与编号
- 详见:
shared/SEVERITY_RATING.md - 漏洞编号:
{C/H/M/L}-NOSQL-{序号}
必检 Sink(强制)
常见于 MongoDB 驱动/ODM:
collection->find($filter)findOne($filter)/update($filter, {value})/delete($filter)where($condition)或->filter({value})- 将用户输入拼入查询数组/表达式的封装函数
必检危险模式(强制)
必须输出以下判断证据:
- 用户输入直接作为 filter/condition 数组的一部分(尤其是
json_decode的结果) - 存在“把用户输入当成结构化条件”的行为,而未强制类型/白名单
- query 中包含可能被滥用的运算符字段:
$ne/$gt/$lt/$or/$and/$where/$regex
tracer 触发条件
当用户输入是 JSON/数组/嵌套结构,且进入查询构造前有多层封装时,必须追踪到最终 sink。
报告输出
{output_path}/vuln_audit/nosql_{timestamp}.md
条目模板(强制)
每条漏洞必须包含:
- 位置证据(查询构造函数/最终 find/update 调用)
- 数据流链(输入解析 -> 类型 -> 查询条件)
- 可利用前置条件(鉴权状态/需要登录与否/能否改变查询操作符)
- 验证 PoC(必须真实路由与真实参数名;payload 为结构化 NoSQL 条件示例)
- 修复建议(严格字段 allowlist + 强制类型 + 避免把用户输入当作查询表达式)
证据引用(强制:来自 php-route-tracer)
每条 NoSQL 注入疑似漏洞必须逐项引用 trace 输出中 ## 9) Sink Evidence Type Checklist 的 NOSQL 行对应证据要点(允许状态为待验证,但证据引用必须存在):
EVID_NOSQL_QUERY_CONSTRUCTION:NoSQL 查询构造点证据(对应 find/update/delete 或 query builder 执行点)EVID_NOSQL_USER_INPUT_INTO_QUERY_STRUCTURE:用户输入进入查询条件结构的证据(可控字段进入 filter/where 的结构)EVID_NOSQL_OPERATOR_INJECTION_FIELDS:operator 注入字段证据($ne/$gt/$or/$where/$regex 等)
tracer 证据缺失处理(强制)
- 若无法定位上述 1~3 任一关键证据要点:该漏洞状态只能标记为
⚠️待验证,不得直接给出✅已确认可利用。