
Validação em laboratório do CVE-2026-48908 no Joomla SP Page Builder, abrangendo upload não autorizado de ícones, escrita de arquivos PHP, execução de código como www-data, evidências de auditd e PCAP, reconstrução de linha do tempo de eventos e recomendações de detecção para SOC. Inclui relatórios em polonês e inglês.
Validação laboratorial da CVE-2026-48908 no componente Joomla SP Page Builder, focada em evidências técnicas, reconstrução de eventos e oportunidades de detecção defensiva.
O repositório documenta um teste controlado no qual o endpoint asset.uploadCustomIcon do SP Page Builder aceitou arquivos de ícones carregados que resultaram na escrita de artefatos PHP sob o diretório de mídia do Joomla. A invocação do arquivo PHP carregado via HTTP levou à execução de comandos como o usuário do processo do servidor web. A atividade resultante de HTTP, arquivos, processos, autenticação e rede foi capturada usando logs do contêiner Apache, auditd do Linux, tcpdump, telemetria do Docker, monitoramento de alterações de arquivos e capturas de tela do host Windows.
[!IMPORTANT] Este repositório contém apenas relatórios e capturas de tela. Código de exploit ofensivo, fonte de payload, arquivos PCAP brutos e pacotes de evidência do host bruto não são intencionalmente incluídos. O material destina-se à validação de vulnerabilidades, engenharia de SOC, desenvolvimento de detecção, preparação para resposta a incidentes e pesquisa autorizada.
Ambos os relatórios contêm a metodologia completa do teste, excertos de evidências, linha do tempo de eventos, evidência de alterações em arquivos, indicadores de rede, orientações de mitigação, recomendações de auditoria e exemplo de lógica SIEM.
.
├── README.md
├── SHA256SUMS.txt
├── reports/
│ ├── CVE-2026-48908_SP_Page_Builder_detection_EN.pdf
│ └── CVE-2026-48908_SP_Page_Builder_detection_PL.pdf
└── screenshots/
├── 01_poc_upload_and_code_execution.png
├── 02_http_whoami_www_data.png
├── 03_tcp_callback_ncat.png
├── 04_reverse_shell_session.png
└── 05_root_access_and_su_failure_redacted.png
Nenhuma fonte de exploit, fonte de payload, PCAP bruto, pacote de evidência Docker bruto ou arquivos fonte DOCX estão incluídos.
A raiz web do Joomla /var/www/html era suportada pelo volume Docker joomla5-builders_joomla_data. Isto é importante para a detecção: docker diff não forneceu visibilidade detalhada das alterações de arquivos dentro do volume, por isso o monitoramento de arquivos teve que depender de listagens de arquivos com consciência de volume e orientação de monitoramento do lado do host.
O teste foi realizado em um ambiente laboratorial isolado e autorizado. A validação cobriu a seguinte sequência:
asset.uploadCustomIcon do SP Page Builder aceitou arquivos de ícones carregados no ambiente laboratorial./media/com_sppagebuilder/assets/iconfont/..htaccess que alterava o tratamento do PHP para a extensão .PHP./root e de trocar de usuário com su - falharam.Os relatórios intencionalmente documentam evidências e lógica de detecção sem distribuir um exploit reutilizável ou implementação de payload.
O teste laboratorial confirmou:
asset.uploadCustomIcon do SP Page Builder;.htaccess sob o diretório de mídia do Joomla;www-data;Dentro do contêiner, a identidade efetiva era:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
A tentativa falha de escalada de privilégio era visível como:
cd root
bash: cd: root: Permission denied
su -
Password:
su: Authentication failure
O PoC público testou várias variantes de extensão e confirmou que uma combinação envolvendo uma extensão PHP com maiúsculas/minúsculas misturadas e .htaccess poderia levar à execução na configuração laboratorial.

Uma requisição HTTP controlada executou whoami, e o navegador exibiu o usuário do processo efetivo.

Antes do teste interativo, um callback de mensagem única mais seguro foi usado para confirmar conectividade de saída do ambiente alvo para o host Windows na porta TCP 4444.

A sessão interativa confirmou execução como www-data, Linux como sistema operacional e um diretório de trabalho sob o caminho de mídia do Joomla SP Page Builder.

Tentativas de acessar /root e autenticar com su - falharam. A captura de tela foi editada para não publicar a senha do teste.

A linha do tempo completa está disponível em ambos os relatórios PDF. Os eventos mais importantes foram:
O host vítima coletou:
auditd para execve;tcpdump;O teste também identificou uma limitação de monitoramento: como /var/www/html era suportado por um volume Docker, docker diff não mostrou criação detalhada de arquivos sob /var/www/html/media/com_sppagebuilder/assets/iconfont/. O monitoramento de integridade de arquivos deve, portanto, cobrir o caminho real do host que suporta o volume.
As evidências do host Windows foram intencionalmente limitadas a capturas de tela relevantes para o relatório:
whoami;/root e su - com a senha editada.Monitore telemetria HTTP, proxy reverso, WAF ou de rede para a seguinte combinação:
POST /index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
User-Agent contains: sppb-rce-poc
Status: 200, 201, or 204
Em produção, não confie apenas no User-Agent do PoC público. O endpoint e o padrão de upload inesperado são indicadores mais estáveis do que o valor do User-Agent.
.htaccess sob o caminho de ícones do SP Page BuilderMonitore telemetria de arquivos para novos ou modificados correspondentes a:
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.php
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.PHP
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.pHp
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.Php
/media/com_sppagebuilder/assets/iconfont/*/fonts/.htaccess
A presença de .htaccess contendo AddType application/x-httpd-php .PHP em um diretório de upload de mídia é um indicador de alto valor.
Correlacione a atividade de upload com requisições HTTP subsequentes para caminhos como:
/media/com_sppagebuilder/assets/iconfont/*/fonts/*
Maior confiança é alcançada quando a requisição tem como alvo uma extensão similar a PHP e inclui parâmetros como t= e c=.
Indicadores de processo de alto valor incluem:
user: www-data, apache, or nginx
process: bash, sh, dash, or php
command line contains: /dev/tcp, bash -i, redirection operators, or unusual interpreter execution
Alerte quando um shell ou interpretador iniciado pelo processo do servidor web iniciar uma conexão de saída para uma estação de trabalho ou porta de destino incomum. O evento laboratorial usou a porta TCP 4444, mas a detecção em produção não deve depender de uma única porta.
O teste produziu uma tentativa falha de su -. Monitore por auxiliares de autenticação como unix_chkpwd, gravações em /var/log/btmp e comandos interativos após comprometimento da conta do serviço web.
Quando o indicador de upload HTTP for detectado, o SOC deve imediatamente correlacioná-lo com:
/media/com_sppagebuilder/assets/iconfont/;.htaccess sob diretórios de mídia do Joomla;t= e c=;whoami, id, uname, hostname, pwd, ip, ifconfig, netstat ou ;Um único evento de upload nem sempre é suficiente por si só. O alerta mais forte combina upload, criação de arquivo, acesso a arquivo, execução de processo e telemetria de rede de saída dentro da mesma janela de tempo curta.
/media/com_sppagebuilder/assets/iconfont/ e o diretório de mídia mais amplo do Joomla em busca de arquivos similares a PHP e artefatos .htaccess..htaccess, .phtml, .phar, arquivos ou executáveis inesperados de diretórios de upload.asset.uploadCustomIcon a partir de redes não confiáveis.docker diff para monitoramento da raiz web quando os dados da aplicação estiverem armazenados em volumes Docker ou bind mounts.www-data; escalada de privilégio para root não foi confirmada.Este material é fornecido para pesquisa de segurança defensiva, gestão de vulnerabilidades, engenharia de detecção, preparação para resposta a incidentes e testes autorizados. Não o utilize contra sistemas sem permissão explícita.
| Papel | Sistema |
|---|
| Máquina vítima | Ubuntu 24.04.4 LTS, kernel 6.17.0-35-generic, Docker Engine 29.5.3 |
| Aplicação alvo | Joomla 5.4.7, PHP 8.3.32, Apache HTTP Server, imagem joomla:5-php8.3-apache |
| Componente | JoomShaper SP Page Builder |
| Contentor | joomla5-builders |
| Posto de trabalho atacante | Microsoft Windows 11 Home 10.0.26200 |
| Serviço Joomla | http://172.20.10.3:8080 |
| Endereço de teste Windows | 172.20.10.2 |
| Endereço do contentor | 172.21.0.3 |
| Data do teste | 9 de julho de 2026 |
| UTC | Evento |
|---|
| 19:33:56 | Início da auditoria Linux, tcpdump, eventos Docker e monitoramento de alterações de arquivos |
| 19:34:23 | Série de requisições POST para /index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon |
| 19:34:23.291 | GET para um arquivo .PHP carregado com um comando aritmético controlado |
| 19:34:23.329 | GET para um arquivo .pHp carregado com um comando aritmético controlado |
| 19:34:23.361 | GET para um arquivo .Php carregado com um comando aritmético controlado |
| 19:34:23.398 | GET para o artefato .PHP final com um comando aritmético controlado |
| 19:34:23.411 | O PoC público executou id através do artefato PHP carregado e recebeu HTTP 200 |
| 19:35:05 | Requisição manual de whoami retornou www-data |
| 19:35:27 | Callback TCP único para 172.20.10.2:4444 bem-sucedido |
| 19:35:59 | Requisição HTTP iniciou uma conexão TCP reversa para 172.20.10.2:4444 |
| 19:36:22-19:36:31 | whoami, uname, id e pwd confirmaram o contexto de execução |
| 19:37:13 | cd root retornou Permission denied |
| 19:37:21-19:37:28 | Tentativa de su - falhou com Authentication failure |
| 19:39:25 | Coleta de auditoria interrompida e artefatos empacotados |
ss