Upload Arbitrário de Arquivos Autenticado levando à Execução Remota de Código Análise técnica e reprodução controlada do CVE-2026-38526 no Webkul Krayin CRM 2.2.x.
Upload Arbitrário de Arquivo Autenticado levando à Execução Remota de Código Análise técnica e reprodução controlada do CVE-2026-38526 no Webkul Krayin CRM 2.2.x.
CVE-2026-38526 é uma vulnerabilidade de upload arbitrário de arquivo autenticado que afeta o Webkul Krayin CRM 2.2.x.
A funcionalidade vulnerável é exposta através do endpoint de upload do TinyMCE da aplicação:
POST /admin/tinymce/upload
A aplicação não restringe suficientemente o tipo de arquivo que pode ser enviado. Um usuário autenticado pode enviar um arquivo com uma extensão executável do lado do servidor, como .php. A aplicação armazena o arquivo enviado e retorna sua URL acessível.
Quando a implantação permite a execução de PHP a partir do local de upload, o arquivo enviado pode subsequentemente ser requisitado através do servidor web, resultando em execução remota de código no contexto do processo da aplicação web.
O registro CVE publicado classifica a vulnerabilidade como CVSS 3.1: 9.9 (Crítico).
Este repositório contém minha própria análise técnica e reprodução controlada da vulnerabilidade.
A vulnerabilidade já havia sido divulgada publicamente sob o CVE-2026-38526. Este trabalho não reivindica a descoberta da vulnerabilidade. O objetivo desta pesquisa foi compreender a implementação vulnerável, reproduzir o caminho de exploração em um ambiente controlado e examinar as condições que transformam o problema de upload de arquivo em execução remota de código.
A vulnerabilidade também foi utilizada na máquina Hack The Box GCSB 2026 Nexus, que forneceu um ambiente prático para estudar o problema.
Produto: Webkul Krayin CRM Versões afetadas: 2.2.x Vulnerabilidade: Upload Arbitrário de Arquivo Impacto resultante: Execução Remota de Código Autenticação: Necessária Vetor de ataque: Rede CWE: CWE-434 — Upload Irrestrito de Arquivo com Tipo Perigoso CVSS: 9.9 Crítico CVE: CVE-2026-38526
A funcionalidade vulnerável é tratada por:
/admin/tinymce/upload
O endpoint aceita um arquivo enviado através do parâmetro file. A lógica relevante da aplicação deriva o nome do arquivo armazenado a partir do nome do arquivo original e preserva sua extensão original.

Esse comportamento é importante porque a aplicação não está simplesmente aceitando um objeto enviado; ela está retendo uma extensão executável controlada pelo atacante e tornando o objeto resultante acessível através do mecanismo de armazenamento da aplicação.
O problema principal é a validação insuficiente do lado do servidor dos arquivos enviados.
A aplicação usa a extensão original fornecida pelo cliente ao construir o nome do arquivo armazenado. Não há uma allowlist suficientemente restritiva impedindo que tipos de arquivo executáveis cheguem à camada de armazenamento.
O fluxo relevante é

O uso de um nome de arquivo gerado não resolve o problema subjacente.
Por exemplo, transformar shell.php em um nome de arquivo gerado como .php não torna o arquivo enviado seguro se o servidor continuar interpretando arquivos .php como código PHP executável.
Um upload irrestrito não significa automaticamente execução remota de código.
O caminho de execução depende de como o servidor lida com o arquivo enviado.
No cenário de implantação vulnerável, a cadeia se torna
