Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/canhieu/cve-2026-100671-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用セキュリティ仮想化ウェブセキュリティペネトレーションテスト
GitHubcanhieu/cve-2026-100671-poc

cve-2026-100671-poc

CVE-2026-100671 のローカル専用概念実証検証ツール。ループバックターゲットに対して Grav Twig ページキャッシュのセッション Cookie 漏洩とリプレイを再現します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-100671 — Grav Twig セッションクッキー漏洩

Grav 2.0.25 で修正された Grav の content-Twig/page-cache セッション乗っ取りに対する、最小限のローカル専用検証ツール。

アドバイザリ:

  • CVE-2026-100671
  • GHSA-pp89-h475-7gj6
  • Grav 2.0.25 リリース

スコープ

exploit.py は意図的にループバックターゲットに限定されています:

  • 127.0.0.1
  • ::1
  • localhost

リモートホストを拒否し、ループバックのリダイレクトのみを追跡し、Python 標準ライブラリの HTTP クライアントを使用し、リクエストタイムアウトを適用し、ベアラートークン、クッキー、レスポンスボディを決して出力しません。

自身が所有するか、テストを明示的に許可されている Grav インスタンスに対してのみ使用してください。このスクリプトはローカルラボに公開プルーフページを作成します。ラボが実行間でコンテンツを保持する場合は、テスト後にそのページを削除してください。

脆弱性チェーン

  1. 低権限のページライターが、サンドボックス化された Twig を含むコンテンツを公開する。
  2. get_cookie() が、訪問した管理者のセッションクッキーをサーバーサイドで読み取る。
  3. Grav が Twig 処理後のページ出力を、セッション識別情報なしでキャッシュに保存する。
  4. 未認証のリクエストが、キャッシュされたクッキー値を受け取る。
  5. その値をローカル API に対してリプレイすると、管理者として認証される。

ページ書き込みアカウントには、文書化された低権限の書き込みパスだけが必要です。api.pages.read、admin.*、スーパー管理者アクセスは必要ありません。被害者の管理者は、公開ページを一度訪問するだけで済みます。

影響を受けるバージョン

  • Grav 2.0.19 から 2.0.24: 出荷時のデフォルト content-Twig 設定で脆弱。
  • Grav 2.0.0 から 2.0.18、および 1.7.x: content Twig が明示的に有効化されている場合のみ影響。
  • Grav 2.0.25: 修正済み。

ラボの要件

以下を備えたローカル Grav ラボを実行してください:

  • Grav API プラグインが有効;
  • Grav Login プラグインが有効;
  • API トークンを取得してページを作成できる、低権限のライターアカウントが 1 つ;
  • 管理者アカウントが 1 つ;
  • ターゲットページのルートが公開で読み取り可能。

この 2 ファイルのリポジトリは、Grav、PHP、プラグイン、アカウントをプロビジョニングしません。

実行

認証情報は環境変数を通じて設定し、ソース管理に入らないようにしてください:

export GRAV_BASE_URL=http://127.0.0.1:8080
export GRAV_WRITER_USERNAME=low
export GRAV_WRITER_PASSWORD='local-writer-password'
export GRAV_ADMIN_USERNAME=admin
export GRAV_ADMIN_PASSWORD='local-admin-password'

python3 exploit.py

ベース URL はループバックのままでなければなりません。デフォルトのルートはランダムです。実行を比較する際には、固定ルートを選択できます:

python3 exploit.py --route /cookie-proof-24

脆弱な場合の期待される結果:

page_create_status=201
admin_login_status=200
victim_page_status=200
attacker_page_status=200
cached_victim_cookie_visible_to_attacker=yes
admin_cookie_value_match=yes
replayed_cookie_api_status=200
result=VULNERABLE

このコマンドは、期待される結果が再現された場合は 0、再現されなかった場合は 1、セットアップまたはトランスポートエラーの場合は 2 で終了します。

修正バージョンのチェック

同じコマンドを Grav 2.0.25 に対して実行します:

python3 exploit.py --expect fixed

期待される修正済みの動作: 攻撃者から見えるセッション値がなく、セッションリプレイも成功しない。クリーンな修正済み結果は --expect fixed で 0 を終了します。

修復

Grav 2.0.25 以降にアップグレードしてください。古いデプロイメントでは、アドバイザリに以下の一時的な制御が記載されています:

  • security.twig_content.process_enabled: false で content Twig を無効化する; または
  • system.pages.never_cache_twig: true を設定する;
  • 既存の Grav キャッシュをクリアする;
  • 管理者セッションをローテーションする。

HttpOnly、Secure、SameSite を修正として扱わないでください: 脆弱なクッキー読み取りは Twig レンダリング中にサーバーサイドで発生します。

開示

canhieu によって報告されました。このリポジトリは、すでに公開されているアドバイザリの再現性を支援するものであり、リモートスキャナや認証情報収集ツールではありません。

ツールをダウンロード