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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-66917 — IDOR + 保存型XSS(JoomGalleryにおける壊れたオブジェクトレベル認可を介した攻撃) | Kitploit
ツール/GitHubGitHub/toanln-cov/cve-2026-66917
認証と認可脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティ
GitHubtoanln-cov/cve-2026-66917

CVE-2026-66917

IDOR + 保存型XSS(JoomGalleryにおける壊れたオブジェクトレベル認可を介した攻撃)

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

人気

すべて見る →

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

すべてのツールを探索

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

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

JoomGalleryのオブジェクトレベル認可の欠陥によるIDOR + 保存型XSS

JoomGallery ≤ 4.3.0 — 編集者ロールのユーザーが任意のギャラリー画像をハイジャックし、XSSペイロードを保存することで、管理者セッションの乗っ取りを可能にする

CVE CVSS v4.0 CWE-639 CWE-79 Affected Researcher


概要

JoomGalleryのUserimageController::save()は、checkACL('edit.own', ...)ではなくcheckACL('edit', ...)をチェックしています。そのため、編集者(Editor)ロールのユーザーは、所有権に関係なく任意の画像に対してtask=userimage.save&id=NへPOSTできます(IDOR — CWE-639)。編集者ロールはグローバルにcore.editを保持しているため、管理者が所有する画像を含むサイト上のすべての画像IDで認可チェックが通過します。

さらに、フロントエンドの画像テンプレートで$this->escape()の呼び出しが欠落していることと組み合わせることで、編集者は管理者所有の画像を含む任意の画像タイトルにXSSペイロードを保存でき、すべての訪問者のブラウザでJavaScriptが実行されるようになります。これにより、管理者セッションの完全な乗っ取りとサイト全体の侵害が可能になります。


影響を受けるバージョン

コンポーネント影響を受けるバージョンテスト環境修正版
JoomGallery (com_joomgallery)4.0.0 – 4.3.0Joomla 5.4.7 + JoomGallery 4.3.0-stable (PHP 8.2 / Apache)4.4.0

脆弱性の詳細

種別: オブジェクトレベル認可の欠陥 / IDOR (CWE-639) に保存型クロスサイトスクリプティング (CWE-79) を連鎖させたもの 必要な認証: 低権限の編集者(Editor)アカウント

根本原因1 — IDOR(CWE-639)

ファイル: components/com_joomgallery/src/Controller/UserimageController.php

save()アクションは、edit.own権限ではなくedit権限を使用してACLチェックを実行します。edit権限はすべての編集者ロールユーザーにグローバルに付与されているため、作成者が誰であるかに関係なく、任意の画像IDでチェックが成功します。

USERIMAGECONTROLLER.PHP — 脆弱なコード(145行目)

root@kitploit:~
// Vulnerable
if (!$this->checkACL('edit', 'image', $recordId, $parent_id, true)) { ... }

core.editは編集者グループによってグローバルに保持されているため、この条件はすべての画像IDに対してfalseと評価され、無制限の書き込みアクセスが許可されます。保存が成功すると、モデルはさらにcreated_byを攻撃者のユーザーIDに更新し、画像の所有権を攻撃者に静かに移転します。

根本原因2 — 保存型XSS(CWE-79)

ファイル: components/com_joomgallery/tmpl/image/default.php

フロントエンドの画像テンプレートは、$this->item->titleをalt属性のコンテキストにHTMLエンコードせずに出力します。JoomlaのJInputのSTRINGフィルタはダブルクォート文字を除去しないため、"を含むペイロードが属性を抜け出して任意のイベントハンドラを注入できます。

DEFAULT.PHP — 脆弱なコード(64行目、78行目)

root@kitploit:~
// Vulnerable
item->title; ?>" ...>

ペイロードabc" onmouseover="alert(document.domain);" x="はjos_joomgallery.titleに保存され、すべてのページレンダリングでHTML属性にそのまま注入されます。保存層および表示層ではサニタイズは一切行われません。


概念実証(PoC)

攻撃チェーン概要

  1. 管理者がギャラリー画像(ID=3)を作成する。所有者 = Administrator。公開済みかつ承認済み。
  2. 攻撃者が編集者としてログインする。ログインページからセッションクッキーとCSRFトークンを抽出する。
  3. 攻撃者がJoomGalleryコンポーネントから新しいCSRFトークンを取得する。
  4. IDOR: 編集者がjform[title]にXSSペイロードを入れてtask=userimage.save&id=3へPOSTする。ACLチェックは(edit.ownではなくcore.editで)通過する。サーバーはHTTP 303を返す — 403ではない。
  5. タイトルがエスケープされていないペイロードで更新される。created_byが攻撃者のユーザーIDに移転される。
  6. XSSペイロードがエスケープされずjos_joomgallery.titleに保存される。
  7. 任意の訪問者(または管理者)がギャラリーフロントエンドを閲覧する。テンプレートがalt="abc" onmouseover="alert(document.domain);"を描画する。XSSが発火する。管理者セッションが取得される → サイト全体が侵害される。

1. 管理者がギャラリー画像を作成 — 所有者: Administrator、ID = 3

管理者はJoomGalleryバックエンド(Joomla 5.4.7)経由でadmin_imageを作成する。画像は公開済み、承認済み、所有者はAdministrator。

Step 1


2. 編集者がログインページからCSRFトークンを抽出

GET /index.php/component/users/login — レスポンスJSONに"csrf.token":"a68c2b3a..."が含まれる。後続のログインPOSTのためにトークンを取得。

Step 2


3. 編集者がログイン — HTTP 303、joomla_user_state=logged_in

POST /index.php/component/users/loginにCSRFトークンと編集者の認証情報を付けて送信。レスポンス: HTTP 303とSet-Cookie: joomla_user_state=logged_in。セッションクッキーを取得。

Step 3


4. 編集者が新しいJoomGallery CSRFトークンを抽出

セッションクッキーを付けてGET /index.php?option=com_joomgalleryを実行。レスポンスには保存リクエスト用の新しい"csrf.token":"2d96934b..."が含まれる。

Step 4


5. IDOR + XSSインジェクション — サーバーがHTTP 303で受け入れ

編集者がjform[title]を次の値に設定してoption=com_joomgallery&task=userimage.save&id=3へPOSTする:

root@kitploit:~
abc" onmouseover="alert(document.domain);" x="

サーバーはHTTP 303(403ではない)を返し、IDORを確認できる。LocationヘッダーにはリダイレクトURL内にXSSペイロードが表示され、タイトルが受け入れられ保存されたことが確認できる。

Step 5


6. 所有権が移転 — 所有者が編集者ユーザーに変更

JoomGalleryバックエンドでは、画像ID=3の所有者がEditor Userになっている。不正な保存中にcreated_byフィールドがデータベース内で静かに更新された。

Step 6


7. データベースがペイロードがエスケープされず保存されたことを確認

jos_joomgalleryへのSQLクエリにより、XSSペイロードが保存されていることを確認 — "は"ではなく生のダブルクォートとして保存されている。保存層ではサニタイズは行われていない。

Step 7


8. ギャラリーフロントエンドでXSSが発火

/index.php/component/joomgallery/galleryにアクセスした任意のユーザーがペイロードをトリガーする。ブラウザのalert()ダイアログが、被害者のオリジン(document.domain)でのJavaScript実行を確認する。

Step 8


影響

  1. 不正な画像変更(IDOR): 編集者ロールのユーザーは、所有権の検証なしに、管理者が所有する画像を含むサイト上の任意のギャラリー画像を変更できる。
  2. 静かな所有権移転: 不正な保存のたびにcreated_byが攻撃者に静かに再割り当てされ、監査証跡が恒久的に改変される。
  3. 保存型XSS — 永続的な実行: 注入されたJavaScriptペイロードは、ギャラリーページが読み込まれるたびにすべての訪問者のブラウザで実行され、認証されていない訪問者と管理者の両方に影響を与える。
  4. 管理者セッションハイジャック → サイト全体の侵害: alt属性内の悪意のあるスクリプトは管理者のセッションクッキーを外部送信でき、攻撃者にJoomlaインストール全体への完全なバックエンドアクセスと制御を与える。
  5. スコープ変更: XSSは被害者のブラウザオリジン(CVSS S:C)で実行され、攻撃者の低権限セッションと被害者の高権限セッションの間の信頼境界を越える。

参照

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-66917
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-66917
  • GitHubセキュリティアドバイザリ: https://github.com/advisories/GHSA-8vxv-gf52-gm5h
  • ベンダーリポジトリ: https://github.com/JoomGalleryfriends/JoomGallery
  • ベンダーの新リリースノート: https://www.joomgalleryfriends.net/en/blog/joomgallery-4-en/joomgallery-4-4-0.html
ツールをダウンロード