php-tpl-audit
PHPのWebソースコードにおけるテンプレートエンジンのレンダリング点やテンプレート名、式の制御可能性を特定し、テンプレート注入やSSTIの脆弱性を監査することで、悪用可能性の評価、PoC、修正案を提供するSkill。
📜 元の英語説明(参考)
PHP Web 源码模板注入/SSTI 审计工具。识别模板引擎渲染点与模板名/表达式可控性,追踪到 eval/执行链,输出可利用性分级、PoC 与修复建议(禁止省略)。
🇯🇵 日本人クリエイター向け解説
PHPのWebソースコードにおけるテンプレートエンジンのレンダリング点やテンプレート名、式の制御可能性を特定し、テンプレート注入やSSTIの脆弱性を監査することで、悪用可能性の評価、PoC、修正案を提供するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
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
$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. 下の青いボタンを押して
php-tpl-audit.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
php-tpl-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-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 Checklist の TPL 行に対応する証拠要点を個別に引用する必要があります(ステータスは検証待ちでも構いませんが、証拠引用は必須です):
EVID_TPL_ENGINE_RENDER_OR_PARSE_ENTRY:テンプレートエンジンレンダリング/式解析ポイント位置の証拠(load/createTemplate/fetch/render または同等のエントリ)EVID_TPL_TEMPLATE_OR_EXPR_CONTROL:テンプレート名または式が制御可能であるかどうかの証拠(ルーティングパラメータからテンプレート構築変数へのマッピングに由来)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 Checklist 的 TPL 行对应证据要点(允许状态为待验证,但证据引用必须存在):
EVID_TPL_ENGINE_RENDER_OR_PARSE_ENTRY:模板引擎渲染/表达式解析点位置证据(load/createTemplate/fetch/render 或等价入口)EVID_TPL_TEMPLATE_OR_EXPR_CONTROL:模板名或表达式是否可控证据(来自路由参数到模板构造变量的映射)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 框架、修复建议与搜索语句。