Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-76564 — XSS Armazenado via User-Agent na Visualização de Pedidos do Admin no PhocaCart | Kitploit
Ferramentas/GitHubGitHub/toanln-cov/cve-2026-76564
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebSegurança WebPapers e Pesquisa
GitHubtoanln-cov/cve-2026-76564

CVE-2026-76564

XSS Armazenado via User-Agent na Visualização de Pedidos do Admin no PhocaCart

Ver Repositório
há 3 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

XSS armazenado via User-Agent na visualização de pedidos no admin do PhocaCart

PhocaCart ≤ 6.1.7 — Atacante não autenticado armazena payload de XSS via checkout. Executa no contexto do navegador do administrador

CVE CVSS v4.0 CWE-79 Affected Researcher


SUMÁRIO

O PhocaCart 6.1.7 para Joomla armazena o cabeçalho HTTP User-Agent bruto das solicitações de checkout na tabela de pedidos do banco de dados quando a opção de configuração store_user_agent está habilitada. O valor armazenado é posteriormente renderizado sem codificação HTML na visualização de edição de pedido do administrador via itemText() em Adminview.php.

Um atacante não autenticado pode fazer um pedido com um adulterado contendo um payload de JavaScript. Quando um administrador abre o pedido no backend, o payload é executado no contexto do navegador do administrador — permitindo sequestro de sessão, roubo de credenciais ou ações administrativas não autorizadas.

Baixar ferramenta
User-Agent

A vulnerabilidade exige que store_user_agent = 1 (não padrão) esteja habilitado. Como essa opção é uma escolha deliberada do administrador para coletar estatísticas de navegador, as lojas afetadas são aquelas em que o proprietário habilitou o recurso — tornando a exploração totalmente silenciosa do ponto de vista do atacante.


VERSÕES AFETADAS

COMPONENTEVULNERÁVELTESTADO EMCORRIGIDO
PhocaCart (com_phocacart)5.0.0 – 6.1.7Joomla 5.4.7 + PhocaCart 6.1.7 + MariaDB 10.66.1.8

DETALHES DA VULNERABILIDADE

Tipo: XSS armazenado (CWE-79) — direcionado ao administrador Autenticação necessária: Nenhuma para injetar. Administrador para acionar Token CSRF necessário: Sim (token CSRF padrão do Joomla obrigatório para o checkout) Arquivo: administrator/components/com_phocacart/libraries/Phoca/Render/Adminview.php:382

Causa raiz

Quando store_user_agent = 1, o método PhocacartUtils::getUserAgent() retorna $_SERVER['HTTP_USER_AGENT'] sem nenhuma sanitização. Essa string bruta é armazenada em #__phocacart_orders (truncada em 200 caracteres — insuficiente para evitar XSS). Quando um administrador visualiza o pedido no backend, itemText() concatena o valor armazenado diretamente na resposta HTML sem nenhuma chamada a htmlspecialchars().

Fluxo de dados:

root@kitploit:~
Attacker sends checkout request:
  User-Agent: <script>alert(document.domain)</script>

    utils.php:334   PhocacartUtils::getUserAgent()
    └─ return (string) $_SERVER['HTTP_USER_AGENT']   // raw, no sanitization
        order.php:413  $d['user_agent'] = substr($user_agent, 0, 200)
        └─ INSERT INTO #__phocacart_orders (user_agent) VALUES ('<script>...</script>')

Admin opens order in backend:
    edit.php:84    echo $r->itemText($this->itemcommon->user_agent, ...)
    Adminview.php:382  '<div class="controls >' . $item . '</div>'
                                           // → NO htmlspecialchars()
    → Browser renders: <div><script>alert(document.domain)</script></div>
    → XSS fires in administrator's browser

ORDER.PHP — FASE DE ARMAZENAMENTO (ORIGEM VULNERÁVEL)

administrator/components/com_phocacart/libraries/phocacart/order/order.php:424

root@kitploit:~
$user_agent = PhocacartUtils::getUserAgent(); // reads $_SERVER['HTTP_USER_AGENT'] raw
$d['user_agent'] = substr($user_agent, 0, 200); // stored in DB unfiltered

ADMINVIEW.PHP:382 — FASE DE RENDERIZAÇÃO (SINK VULNERÁVEL)

root@kitploit:~
// No htmlspecialchars() applied:
$output .= '  <div class="controls ' . $class . '">' . $item . '</div>' . "\n";

Chamado por administrator/components/com_phocacart/views/phocacartorder/tmpl/edit.php:84:

root@kitploit:~
echo $r->itemText($this->itemcommon->user_agent, Text::_('COM_PHOCACART_USER_AGENT'), '', 'user_agent');

A função itemText() passa $item (o valor user_agent armazenado) diretamente para a saída HTML sem nenhuma codificação, tornando-a o principal sink. Corrigir isso no nível do sink protege todos os chamadores de itemText().


PROVA DE CONCEITO

A exploração exige concluir um fluxo de checkout completo com um cabeçalho User-Agent malicioso. O token CSRF deve ser obtido primeiro, pois o controlador de checkout do Joomla o valida.

0. Pré-requisito — Ativar a opção Armazenar Informações do User-Agent

No admin do Joomla, navegue até Componentes → Phoca Cart → Opções → Guia Principal → Opções de Estatísticas. Defina Armazenar Informações do User-Agent = Sim e salve.

Pré-requisito: Armazenar Informações do User-Agent = Sim

1. Obter Token CSRF

O atacante visita o frontend da loja para extrair um token CSRF válido do Joomla, necessário para o controlador de checkout. O token aparece no HTML ou na configuração JavaScript de qualquer página da loja.

Etapa 1: atacante obtém token CSRF do frontend da loja via Burp Suite

2. Adicionar Produto ao Carrinho

O atacante adiciona um produto ao carrinho por meio do endpoint AJAX de checkout usando um User-Agent benigno. Isso faz a sessão de checkout avançar para o próximo estado.

Etapa 2: Adicionar produto ao carrinho — POST checkout.add

3. Salvar Endereço de Cobrança

O atacante envia as informações de cobrança para avançar a máquina de estados do checkout.

Etapa 3: Salvar endereço de cobrança — Burp Suite

4. Salvar Método de Envio

O atacante seleciona um método de envio para prosseguir para o pagamento.

Etapa 4: Salvar método de envio — Burp Suite

5. Salvar Método de Pagamento

O atacante seleciona um método de pagamento (ex.: Pagamento na Entrega).

Etapa 5: Salvar método de pagamento — Burp Suite

6. Injetar Payload — Fazer Pedido com User-Agent Malicioso

Etapa crítica de injeção. O atacante faz o pedido final via task=checkout.order com o cabeçalho User-Agent definido para o payload de XSS. A tarefa checkout.order lê o HTTP_USER_AGENT bruto e o armazena sem escape em #__phocacart_orders.user_agent.

root@kitploit:~
POST /index.php/shop/checkout HTTP/1.1
Host: TARGET
User-Agent: <script>alert(document.domain)</script>
Content-Type: application/x-www-form-urlencoded

phcheckouttac=1&task=checkout.order&option=com_phocacart&return=&<CSRF_TOKEN>=1

Resultado: pedido criado. O banco de dados armazena user_agent = '<script>alert(document.domain)</script>'.

Etapa 6: Envio de pedido com User-Agent malicioso — payload injetado no banco de dados

7. Admin Visualiza a Lista de Pedidos

O administrador navega até Componentes → Phoca Cart → Pedidos. O pedido injetado aparece na lista. O XSS ainda não é acionado nesta etapa.

Etapa 7: Lista de pedidos do admin no backend do Joomla — pedido injetado visível

8. XSS Dispara — Admin Abre o Detalhe do Pedido

Quando o administrador clica no pedido para abrir a visualização de edição, o user_agent armazenado é renderizado sem escape via itemText(). O JavaScript é executado imediatamente.

URL de acionamento:

root@kitploit:~
/administrator/index.php?option=com_phocacart&view=phocacartorder&layout=edit&id=<ORDER_ID>

Etapa 8: o payload de XSS é executado no navegador do administrador — alert(document.domain) confirma o contexto de execução


IMPACTO

  1. Sequestro de Sessão do Administrador — O payload de XSS pode exfiltrar o cookie de sessão do administrador, concedendo acesso total ao backend sem credenciais.
  2. Ações Administrativas Não Autorizadas — Executando no contexto do navegador do administrador, o payload pode realizar qualquer ação no backend: criar contas privilegiadas, instalar extensões maliciosas ou modificar conteúdo.
  3. Backdoor Persistente — Um payload que instala um web shell ou cria uma conta de administrador falsa persiste além do próprio evento de XSS, dando ao atacante acesso duradouro ao servidor.

REFERÊNCIAS

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-76564
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-76564
  • GitHub Advisory: https://github.com/advisories/GHSA-98mw-pj3j-99v2
  • Repositório do fornecedor: https://github.com/PhocaDesign/PhocaCart