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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
element-fragment-guest — Element Web v1.12.29 - 高 - リモート - セッション - フラグメントのゲスト認証情報がwhoamiの前に実際のセッションを消去する | Kitploit
ツール/GitHubGitHub/abraxas/element-fragment-guest
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティ認証ラボと実践
GitHubabraxas/element-fragment-guest

element-fragment-guest

Element Web v1.12.29 - 高 - リモート - セッション - フラグメントのゲスト認証情報がwhoamiの前に実際のセッションを消去する

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - element-fragment-guest

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  element-fragment-guest

解説記事: https://abraxaslabs.tech/research/element-fragment-guest

element-fragment-guest

Element Web v1.12.29 - Element / New Vector

分類: セッション破壊 到達範囲: リモート

Lifecycle.loadSession は restoreSessionFromStorage よりも URL ハッシュ内の guest_user_id と guest_access_token を優先します。ゲストはデフォルトで有効です(enableGuest={!config.disable_guests})。app.element.io の config.json は disable_guests を設定していません。onTokenLoginCompleted は SSO と OIDC のパラメータのみを除去します。ゲストキーは決して除去しません。url_utils.ts は既に、これらのフラグメントパラメータは未使用に見えるとコメントしています。それでもこれらが優先されます。

サインイン済みユーザーにゲストフラグメントパラメータ付きのハッシュ URL を開かせることができる者は誰でも、そのユーザーをログアウトさせ、ローカルの暗号を消去させます。ゴミトークンで十分です。whoami は決して呼ばれません。

IDCVE 未割当
CWECWE-384 / CWE-352 / CWE-613
CVSSHigh: 7.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H
製品Element Web
影響を受けるバージョンv1.12.29 タグ v1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e)。ゲスト有効(デフォルト)。
認証未認証の攻撃者。被害者は URL を開く(または再読み込みする)必要がある。
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

攻撃者ができること

サインイン済みユーザーにゲストフラグメントパラメータ付きのハッシュ URL を開かせます。クライアントはそのユーザーをログアウトさせ、ローカルの暗号を消去し、攻撃者のゲストに配置する可能性があります。これはログアウトと暗号の消去です。本物のトークンを盗むものではありません。OS の RCE でもありません。

権限メソッド / シンク偵察 / 完全性 / 可用性ラボ実証または推測
ハッシュからゲスト資格情報を解析url_utils.ts guest: { keys: ["guest_user_id", "guest_access_token"], location: "fragment" }セッション選択の完全性ラボ実証済み。#/home?guest_user_id=...&guest_access_token=... は guest_params になった。クエリ文字列のみではならなかった。
保存された非ゲストセッションよりゲストを優先Lifecycle.loadSession のゲスト優先分岐、ログ Using guest access credentials完全性ラボ実証済み。シードされた @victim:example.org は復元されなかった。
localStorage、IndexedDB アカウント、sessionStorage、暗号を消去doSetLoggedIn(..., clearStorageEnabled=true) の後に clearStorage()ローカルセッションの完全性 / 可用性ラボ実証済み。crypto_empty=yes、以前のトークンは消えた。
トークン検証をスキップゲスト経路は /_matrix/client/v3/account/whoami を決して呼ばない完全性ラボ実証済み。whoami_called=no。ゴミトークン not-a-real-token でも消去された。
攻撃者のゲスト資格情報を永続化消去後の persistCredentials完全性ラボ実証済み。after_user=@x:example.org、after_token=not-a-real-token、mx_is_guest=true。
デフォルト HS 上の実ゲストに固定ゲストトークンが有効な場合の同じ persist完全性推測。ラボはゴミトークンを使用したため、ライブ HS ログインはなし。
再読み込み時にもこれを継続ゲストキーはハッシュに残る。onTokenLoginCompleted はそれらを削除しない完全性ピン app.tsx からの推測。ラボは URL を一度開いた。

この残りについては結論が出ています。実際のアクセストークンを窃取すること(それは削除されるのであり、持ち出されるのではない)。OS RCE / LPE(Desktop の nodeIntegration: false、sandbox)。ライブの Element SPA(how=gadget)。クエリ文字列 ?guest_user_id=(フラグメントのみ)。disable_guests: true は非ゲストセッションを維持します。非ゲストセッションが存在する場合にゲストを無視するようパッチを当てた loadSession も、それを維持します。

同じピンにおける残件:vector: Windows ドライブレター、Univention ICS javascript: href。

発見の経緯

2026年9月22日の GitHub リリース後、Element Web v1.12.29 をピン留めしました。SSO の loginToken はクエリ専用で、使用後に除去されます。ゲストキーは依然としてフラグメント内に残り、リストアよりも優先されます。url_utils.ts 内のコメントがその証拠です。彼ら自身、これらのキーが仕様化されていることに疑念を抱いていました。

すでに記録済みの誤った道筋:クエリ文字列 ?guest_user_id= をベクターとみなすこと(キーはハッシュ内に存在する)。これをトークン窃取と呼ぶこと(実際のトークンは送信されるのではなく削除される)。app.element.io の設定に disable_guests があると期待すること(それは未設定である)。リバースシェル。茶番です。

ラボ

ピン留めした関数のガジェット。ライブの Element Web コンテナではありません。how=gadget。

python3 element-fragment-guest-Abraxas-Labs.py

または

cd lab
./run.sh

対象は http://127.0.0.1:19600 のみです。プロジェクト element-fragment-guest を構成します。実行後、スタックは破棄されます。

SUCCESS element-fragment-guest how=gadget guest-wipe=yes prior-kept=no garbage-token=yes disable-guests-keeps=yes ELEMENT-FRAGMENT-GUEST-WITNESS

修正内容

非ゲストセッションがすでに存在する場合、ゲストのフラグメントパラメータを無視します。clearStorage の前に /_matrix/client/v3/account/whoami でゲストトークンを検証します。SSO トークンが除去されるのと同じ方法で guest_user_id と guest_access_token を除去します。ホストされている app.element.io では disable_guests: true をデフォルトにします。

参考資料

  • github.com/element-hq/element-web タグ v1.12.29
  • Lifecycle.ts(loadSession のゲスト優先処理)
  • url_utils.ts
  • app.tsx(enableGuest={!config.disable_guests})
  • 同じピン: element-vector-drive-letter · element-ics-javascript
  • CWE-384

ライセンス

GNU Affero GPL v3.0。LICENSE を参照してください。ループバックラボ専用です。保証はありません。

ツールをダウンロード