
XSS riflesso tramite parametro GET di ricerca in Phoca Download
Phoca Download ≤ 6.1.4 — Un Attaccante Autenticato Esegue JavaScript Arbitrario tramite URL di Ricerca Appositamente Creato nel Pannello di Controllo Utente
Phoca Download (com_phocadownload) per Joomla contiene una vulnerabilità di Cross-Site Scripting (XSS) riflesso nella funzionalità di ricerca file del Pannello di Controllo Utente. Il parametro GET search viene elaborato con il filtro 'string' di Joomla — che chiama solo e preserva il carattere — e poi viene stampato senza all'interno di un attributo HTML . Un attaccante può iniettare attributi HTML arbitrari e gestori di eventi che vengono eseguiti nel browser della vittima al caricamento della pagina, senza richiedere alcuna interazione da parte dell'utente oltre al clic su un link appositamente creato.
strip_tags()"htmlspecialchars()<input value="">| COMPONENTE | VULNERABILE | TESTATO SU | CORRETTO |
|---|---|---|---|
| com_phocadownload | ≤ 6.1.4 | Joomla 5 + PhocaDownload 6.1.4 + MariaDB 10.6 | 6.1.5 |
Tipo: Cross-Site Scripting riflesso (CWE-79)
Autenticazione richiesta: Utente Joomla registrato (con accesso effettuato) + Pannello di Controllo Utente abilitato (enable_user_cp = 1)
Token CSRF richiesto: Non richiesto — richiesta GET, nessun token CSRF verificato su questo percorso
File sink: site/views/user/tmpl/default_files_bootstrap.php
Il parametro search viene letto utilizzando il filtro 'string' di Joomla, che chiama solo strip_tags(). Questo preserva il carattere ", consentendo a un attaccante di uscire dal contesto dell'attributo value="" e iniettare attributi HTML arbitrari.
SITE/VIEWS/USER/VIEW.HTML.PHP:252 — SORGENTE
$search_files = $app->getUserStateFromRequest(
$this->_context_files.'.search', 'search', '', 'string'
);
$search_files = StringHelper::strtolower($search_files);
$lists_files['search'] = $search_files; // memorizzato senza codifica
SITE/VIEWS/USER/TMPL/DEFAULT_FILES_BOOTSTRAP.PHP:56 — SINK (VULNERABILE)
<input type="text" name="search" id="pdsearch"
value="<?php echo $this->t['listsfiles']['search'];?>"
class="form-control" />
La vista gemella phocadownloadlinkfile (stessa estensione) applica correttamente PhocaDownloadUtils::filterValue($search, 'text') — equivalente a htmlspecialchars() — per lo stesso campo di ricerca. La vista user non applica la stessa protezione, indicando una codifica di output incoerente all'interno dell'estensione.
Naviga alla pagina di accesso di Joomla e autenticati come utente Registrato. Dopo l'accesso riuscito, Joomla reindirizza alla pagina del profilo utente, confermando una sessione attiva.

Naviga al Pannello di Controllo Utente di PhocaDownload:
http://TARGET/index.php?option=com_phocadownload&view=user
La pagina viene visualizzata con un campo di ricerca vuoto (value=""). Questo è lo stato normale prima dell'iniezione.

Naviga al seguente URL appositamente creato (oppure digita direttamente il payload grezzo nella casella di ricerca):
http://TARGET/index.php?option=com_phocadownload&view=user&search=%22%20autofocus%20onfocus%3Dalert%28document.domain%29%20x%3D

Mentre la pagina viene caricata, l'attributo autofocus iniettato focalizza l'elemento di input, attivando immediatamente il gestore di eventi onfocus. Non è richiesta alcuna ulteriore interazione da parte dell'utente.
HTML visualizzato (vulnerabile):
<input type="text" name="search" id="pdsearch"
value="" autofocus onfocus=alert(document.domain) x="
class="form-control" />
document.cookie, consentendo la completa compromissione dell'account senza credenziali.