jpskill.com
🛠️ 開発・MCP コミュニティ

php-tpl-audit

PHPのWebソースコードにおけるテンプレートエンジンのレンダリング点やテンプレート名、式の制御可能性を特定し、テンプレート注入やSSTIの脆弱性を監査することで、悪用可能性の評価、PoC、修正案を提供するSkill。

📜 元の英語説明(参考)

PHP Web 源码模板注入/SSTI 审计工具。识别模板引擎渲染点与模板名/表达式可控性,追踪到 eval/执行链,输出可利用性分级、PoC 与修复建议(禁止省略)。

🇯🇵 日本人クリエイター向け解説

一言でいうと

PHPのWebソースコードにおけるテンプレートエンジンのレンダリング点やテンプレート名、式の制御可能性を特定し、テンプレート注入やSSTIの脆弱性を監査することで、悪用可能性の評価、PoC、修正案を提供するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o php-tpl-audit.zip https://jpskill.com/download/6020.zip && unzip -o php-tpl-audit.zip && rm php-tpl-audit.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/6020.zip -OutFile "$d\php-tpl-audit.zip"; Expand-Archive "$d\php-tpl-audit.zip" -DestinationPath $d -Force; ri "$d\php-tpl-audit.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して php-tpl-audit.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → php-tpl-audit フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-17
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

[Skill 名] php-tpl-audit

PHP テンプレートインジェクション/SSTI 監査(php-tpl-audit)

PHP プロジェクトのソースコードを分析し、テンプレートインジェクション(SSTI)と危険な式実行のリスクを特定します。ユーザーが制御できるコンテンツが、テンプレートの選択、レンダリング式の解析、または実行可能なコードへの変換に影響を与えるケースを検出します。

分類と番号付け

  • 詳細については、shared/SEVERITY_RATING.md を参照してください。
  • 脆弱性番号:{C/H/M/L}-TPL-{連番}

TPL Sink(必須)

テンプレート関連のレンダリング/実行ポイント:

  • Twig:
    • Environment->load($templateName) / createTemplate($name) / render($template)
    • |raw または自動エスケープポリシーの無効化(証拠点が必要です)
  • Laravel Blade(Illuminate/View、PHP ネイティブで一般的):
    • view($templateName, $data) / View::make($templateName, $data)
    • Illuminate\View\Factory->make($template) / レンダリングエントリ $engine->render({value})
    • テンプレートが制御可能な場合:Blade の raw 出力({!! !!})と @php ディレクティブは高リスクの実行チェーンに属します(レンダリング/コンパイルエントリに証拠点が必要です)
  • Smarty:
    • Smarty->fetch($template) / display($template)
  • カスタムテンプレートエンジン:
    • eval()preg_replace('/e')create_function などがテンプレート式に使用されている場合
    • call_user_func / call_user_func_array の引数がユーザー入力に由来する場合(式をトリガーする可能性があります)

制御可能性(必須)

以下を必ず出力してください:

  • ユーザー入力が「テンプレート名/テンプレートフラグメント/式文字列」にどのように入るか
  • 厳密なホワイトリストによるテンプレート名マッピングが存在するか
  • サンドボックス/式制限が存在するか

tracer トリガー条件(必須)

  • テンプレートの選択/式の構築が複数の関数にまたがる、または文字列連結を経由する場合

証拠引用(必須:php-route-tracer から)

各テンプレートインジェクション/SSTI の疑いのある脆弱性について、trace 出力の ## 9) Sink Evidence Type ChecklistTPL 行に対応する証拠要点を個別に引用する必要があります(ステータスは検証待ちでも構いませんが、証拠引用は必須です):

  1. EVID_TPL_ENGINE_RENDER_OR_PARSE_ENTRY:テンプレートエンジンレンダリング/式解析ポイント位置の証拠(load/createTemplate/fetch/render または同等のエントリ)
  2. EVID_TPL_TEMPLATE_OR_EXPR_CONTROL:テンプレート名または式が制御可能であるかどうかの証拠(ルーティングパラメータからテンプレート構築変数へのマッピングに由来)
  3. EVID_TPL_EXEC_CHAIN_ENTRY:実行チェーンエントリの証拠(式の評価/コンパイル/実行:例 raw/disable escape、eval/use of call_user_func など)

tracer 証拠欠落の処理(必須)

  • 上記 1~3 のいずれかの重要な証拠要点を特定できない場合:その脆弱性のステータスは ⚠️検証待ち としかマークできず、直接 ✅悪用可能と確認済み とすることはできません。

レポート出力

以下に出力されます:

{output_path}/vuln_audit/tpl_{timestamp}.md

項目には、データフローチェーン、悪用可能な前提条件、実行可能な PoC フレームワーク、修正推奨事項、および検索クエリを含める必要があります。

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

PHP 模板注入/SSTI 审计(php-tpl-audit)

分析 PHP 项目源码,识别模板注入(SSTI)与危险表达式执行风险:用户可控内容影响模板选择、渲染表达式解析或转为可执行代码。

分级与编号

  • 详见:shared/SEVERITY_RATING.md
  • 漏洞编号:{C/H/M/L}-TPL-{序号}

TPL Sink(必做)

模板相关渲染/执行点:

  • Twig:
    • Environment->load($templateName) / createTemplate($name) / render($template)
    • |raw 或关闭自动转义策略(必须有证据点)
  • Laravel Blade(Illuminate/View,PHP 原生常见):
    • view($templateName, $data) / View::make($templateName, $data)
    • Illuminate\View\Factory->make($template) / 渲染入口 $engine->render({value})
    • 当模板可控时:Blade raw 输出({!! !!})与 @php 指令属于高危执行链(必须用证据点落到渲染/编译入口)
  • Smarty:
    • Smarty->fetch($template) / display($template)
  • 自定义模板引擎:
    • eval()preg_replace('/e')create_function 等被用于模板表达式
    • call_user_func / call_user_func_array 参数来自用户输入(可能触发表达式)

可控性(必做)

必须输出:

  • 用户输入如何进入“模板名/模板片段/表达式字符串”
  • 是否存在严格的白名单模板名映射
  • 是否存在沙箱/表达式限制

tracer 触发条件(必做)

  • 模板选择/表达式构造跨多个函数或经过字符串拼接

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

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

  1. EVID_TPL_ENGINE_RENDER_OR_PARSE_ENTRY:模板引擎渲染/表达式解析点位置证据(load/createTemplate/fetch/render 或等价入口)
  2. EVID_TPL_TEMPLATE_OR_EXPR_CONTROL:模板名或表达式是否可控证据(来自路由参数到模板构造变量的映射)
  3. EVID_TPL_EXEC_CHAIN_ENTRY:执行链入口证据(表达式求值/编译/执行:如 raw/disable escape、eval/use of call_user_func 等)

tracer 证据缺失处理(强制)

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

报告输出

输出到:

{output_path}/vuln_audit/tpl_{timestamp}.md

条目必须包含:数据流链、可利用前置条件、可执行 PoC 框架、修复建议与搜索语句。