以下の内容はhttps://cysec148.hatenablog.com/entry/2025/08/17/164116より取得しました。


【有料試作版】BugBounty解説:BagistoにおけるSSTIからRCEまでの道筋

Hello there, ('ω')ノ

記事:

https://siltonrenato02.medium.com/a-brief-summary-about-a-ssti-to-rce-in-bagisto-e900ac450490


ねらい

今回のケースは、LaravelベースのECフレームワークBagisto(v1.5.1)で発見されたSSTI(Server-Side Template Injection)が、どのようにしてRCE(リモートコード実行)に発展するのかを示した事例です。 攻撃者はまずカスタムページ機能を確認し、単なるXSSではなくテンプレートエンジンの評価が起きていることを突き止めます。そこからサーバ側でのコード実行へ到達する流れです。


全体像(ストーリー)

  1. Bagistoのページ編集機能で任意のHTMLを挿入できることを確認。
  2. まずXSSの可能性を確認するが、それだけでは限定的。
  3. テストとして{{7*7}}を入力 → サーバが計算して49を返す。 → SSTIが成立
  4. さらにペイロードを投入し、/etc/passwdの読み取りに成功。 → RCEが成立
  5. これにより、データベース認証情報やクラウドメタデータなども窃取可能になる。

実践:一手ずつ「なぜそうするか」

1) 機能を探す

  • 操作:管理画面で「ページ作成」機能を開き、HTMLスニペットを挿入。
  • 観察:任意のHTMLがそのままページに反映される。
  • なぜ:開発者は「見た目のカスタマイズ」を想定しており、入力をサニタイズしていない。 → XSSを疑う入口となる。

2) XSSテスト

  • 操作:<script>alert(1)</script> を入力。
  • 観察:ブラウザでアラートが出た。
  • なぜ:典型的な反射型XSS。しかし攻撃者視点では「クライアント依存」なので、Red Team用途では弱い

3) サーバサイド評価を疑う

  • 操作:入力に {{7*7}} を入れる。
  • 観察:表示結果は49
  • なぜ:これはテンプレートエンジン(BladeやTwigに類似)がサーバ側で計算している証拠。 → SSTI(サーバサイドテンプレートインジェクション) 確定。

4) インパクトを調査(RCEテスト)

  • 操作:既知のSSTI→RCEペイロードを試す。

    例:

  {{ system('cat /etc/passwd') }}
  • 観察:レスポンスに/etc/passwdの内容が表示された。

  • なぜ:入力がサーバで直接評価され、任意のシェルコマンドが実行可能であることが確認できた。


5) 影響範囲を整理する

  • この脆弱性により攻撃者は:

    • サーバ上の任意ファイル(DB認証情報、APIキーなど)を読み取れる
    • OSコマンドを実行できる
    • クラウド上であればインスタンスメタデータにアクセス可能 → 横展開が可能

ペイロードまとめ

  • 確認用(SSTIテスト):
{{7*7}}
  • 実行用(RCE例):
{{ system('cat /etc/passwd') }}

ベンダー対応とCVE

報告者がベンダーに通知したが、Bagisto側は「すでに管理者権限を持っているユーザーが利用する機能なので問題なし」と判断。 それでも深刻性を示すためにCVE-2023-33570が登録されました。


実務目線の防御策

  • テンプレートエンジンの安全設定 BladeやTwigなどでは式展開を無効化、あるいはエスケープを必須化。

  • 入力サニタイズ 管理画面入力であっても、サーバサイド評価に渡さない

  • 権限分離 CMS管理者=サーバOS操作可能、にならないように、原則最小権限を徹底。


まとめ

今回の発見は以下の流れでした:

  1. HTML挿入機能を調査
  2. XSSを確認 → 限界を認識
  3. SSTIを発見({{7*7}} = 49)
  4. RCEペイロードで /etc/passwd を読み出し成功
  5. 攻撃のインパクトを整理(DB・APIキー流出、クラウド横展開)

ポイントは、「一見ただのXSSに見える機能でも、サーバサイドで評価されていないかを疑う」こと。 SSTIはXSSよりも遥かに深刻で、完全なサーバ乗っ取りの入り口になり得ます。

Best regards, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/08/17/164116より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14