
Reflektiertes XSS über den Such-GET-Parameter in Phoca Download
Phoca Download ≤ 6.1.4 — Authentifizierter Angreifer führt über eine manipulierte Such-URL im Benutzerkontrollzentrum beliebiges JavaScript aus
Phoca Download (com_phocadownload) für Joomla enthält eine reflektierte Cross-Site-Scripting-Schwachstelle (XSS) in der Dateisuche des Benutzerkontrollzentrums. Der GET-Parameter search wird mit dem 'string'-Filter von Joomla verarbeitet — dieser ruft lediglich auf und behält das Zeichen bei — und wird anschließend ohne in ein HTML--Attribut ausgegeben. Ein Angreifer kann beliebige HTML-Attribute und Event-Handler injizieren, die beim Laden der Seite im Browser des Opfers ausgeführt werden, ohne dass eine Benutzerinteraktion über das Klicken auf einen manipulierten Link hinaus erforderlich ist.
strip_tags()"htmlspecialchars()<input value="">| KOMPONENTE | VERWUNDBAR | GETESTET AUF | BEHOBEN |
|---|---|---|---|
| com_phocadownload | ≤ 6.1.4 | Joomla 5 + PhocaDownload 6.1.4 + MariaDB 10.6 | 6.1.5 |
Typ: Reflektiertes Cross-Site-Scripting (CWE-79)
Erforderliche Authentifizierung: Registrierter Joomla-Benutzer (angemeldet) + Benutzerkontrollzentrum aktiviert (enable_user_cp = 1)
CSRF-Token erforderlich: Nicht erforderlich — GET-Anfrage, auf diesem Pfad wird kein CSRF-Token geprüft
Sink-Datei: site/views/user/tmpl/default_files_bootstrap.php
Der Parameter search wird mit dem 'string'-Filter von Joomla gelesen, der lediglich strip_tags() aufruft. Dadurch bleibt das Zeichen " erhalten, sodass ein Angreifer aus dem value=""-Attributkontext ausbrechen und beliebige HTML-Attribute injizieren kann.
SITE/VIEWS/USER/VIEW.HTML.PHP:252 — QUELLE
$search_files = $app->getUserStateFromRequest(
$this->_context_files.'.search', 'search', '', 'string'
);
$search_files = StringHelper::strtolower($search_files);
$lists_files['search'] = $search_files; // ohne Kodierung gespeichert
SITE/VIEWS/USER/TMPL/DEFAULT_FILES_BOOTSTRAP.PHP:56 — SINK (VERWUNDBAR)
<input type="text" name="search" id="pdsearch"
value="<?php echo $this->t['listsfiles']['search'];?>"
class="form-control" />
Die verwandte Ansicht phocadownloadlinkfile (gleiche Erweiterung) wendet für dasselbe Suchfeld korrekt PhocaDownloadUtils::filterValue($search, 'text') an — äquivalent zu htmlspecialchars(). Die Ansicht user wendet denselben Schutz nicht an, was auf eine inkonsistente Ausgabekodierung innerhalb der Erweiterung hindeutet.
Navigieren Sie zur Joomla-Anmeldeseite und authentifizieren Sie sich als registrierter Benutzer. Nach erfolgreicher Anmeldung leitet Joomla zur Benutzerprofilseite weiter, was eine aktive Sitzung bestätigt.

Navigieren Sie zum PhocaDownload-Benutzerkontrollzentrum:
http://TARGET/index.php?option=com_phocadownload&view=user
Die Seite wird mit einem leeren Suchfeld (value="") gerendert. Dies ist der normale Zustand vor der Injektion.

Navigieren Sie zu der folgenden manipulierten URL (oder geben Sie den Roh-Payload direkt in das Suchfeld ein):
http://TARGET/index.php?option=com_phocadownload&view=user&search=%22%20autofocus%20onfocus%3Dalert%28document.domain%29%20x%3D

Beim Laden der Seite fokussiert das injizierte autofocus-Attribut das Eingabeelement und löst dadurch sofort den onfocus-Event-Handler aus. Keine weitere Benutzerinteraktion ist erforderlich.
Gerendertes HTML (verwundbar):
<input type="text" name="search" id="pdsearch"
value="" autofocus onfocus=alert(document.domain) x="
class="form-control" />
document.cookie stehlen und so ohne Anmeldedaten die vollständige Kontrolle über das Konto übernehmen.