サーバーサイド・テンプレート・インジェクション | Cloud SECaaS platform AIONCLOUD

AIONCLOUD BLOG

Share information related to AIONCLOUD !

ブログページへ戻す

サーバーサイド・テンプレート・インジェクション

サーバーサイド・テンプレート・インジェクション

  1. 概要
    サーバー・サイド・テンプレート・インジェクション(SSTI)の脆弱性は、テンプレートがサーバー・サイドで構造化され、ユーザー入力値が既存のテンプレートに挿入される場合に発生します。攻撃者はテンプレートの構文を悪用して悪意のあるペイロードを挿入し、攻撃者が望むアクションを実行できるようにします。
  2. 攻撃プロセス
    SSTIの脆弱性は、サーバーやテンプレートによって異なるため、悪用のためのペイロードは、使用される言語やテンプレート・エンジンによって異なります。

image.png

ソース : https://dokhakdubini.tistory.com/515

攻撃サーバーは、上の画像のようにそれぞれの構文を挿入することで、どのテンプレートを使っているかを特定することができる。

スマート・テンプレートを使った攻撃構文の例:

GET /test?q={$smarty.server.SERVER_ADDR} HTTP/1.1
Host: www.sample.com
User-Agent: HTTPie

 

3. 対策
SSTIの脆弱性対策には、主に2つのアプローチがある:

1) サニタイズ: ユーザー入力からテンプレートを生成することを避ける。ユーザー入力が必要な場合は、テンプレート内で提供されるパラメータを通じて処理し、テンプレート自体への影響を抑える。

2) 入力検証: ユーザーが入力した特殊文字構文をエスケープするために、ユーザー入力を検証する。

 

AIWAFでは、各テンプレートで使用されている構文に合わせたレスポンスパターンを開発しています。

サーバーサイドテンプレートインジェクション2
算術演算を利用した攻撃構文を検出するパターン。

サーバーサイド・テンプレート・インジェクション3
jinja2テンプレートの脆弱性を悪用し、Pythonベースの悪意のあるペイロードを挿入する攻撃を検知するパターン。

サーバサイドテンプレートインジェクション 4
Mako テンプレートの脆弱性を悪用して Python ベースの悪意のあるペイロードを挿入する攻撃を検出するパターン。

サーバサイドテンプレートインジェクション 5
PHPベースの悪意のあるペイロードを挿入するためにSmartyテンプレートの脆弱性を悪用する攻撃を検出するためのパターン。

サーバサイドテンプレートインジェクション 6
Twig テンプレートの脆弱性を悪用して PHP ベースの悪意のあるペイロードを挿入する攻撃を検出するパターン。

 

4. 結論
SSTIの脆弱性は、そのアクセスしやすさに比例して高いリスクをもたらすため、その影響の大きさから迅速な対応が必要である。アップデートは継続的にリリースされるため、定期的なチェックとアップデートが不可欠である。

AIWAF製品は、SSTI関連の脆弱性に対応するための複数のパターンを開発しており、今後新たに発見される脆弱性にも迅速に対応していく。

 

5. 参考文献

https://www.igloo.co.kr/security-information
https://hackingstudypad.tistory.com/150
https://velog.io/@silver35/Web-Server-Side-Template-InjectionSSTI

Scroll Up