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
SuiteCRM-RCE — Writeup sobre CVE-2020-28328: Execução Remota de Código via Arquivo de Log do SuiteCRM, mais um bônus de Cross-Site Scripting | Kitploit
Ferramentas/GitHubGitHub/mcorybillington/suitecrm-rce
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebPhishingTestes de PenetraçãoPapers e PesquisaAprendizado e Educação
GitHubmcorybillington/suitecrm-rce

SuiteCRM-RCE

Writeup sobre CVE-2020-28328: Execução Remota de Código via Arquivo de Log do SuiteCRM, mais um bônus de Cross-Site Scripting

Ver Repositório
21há 5 anosAinda 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

CVE-2020-28328 SuiteCRM Execução Remota de Código via Configuração do Sistema de Arquivo de Log e Envenenamento de Arquivo de Log

Visão geral

Recentemente descobri duas vulnerabilidades no SuiteCRM que fornecem uma cadeia de ataque para um usuário com privilégios baixos alcançar execução de código no sistema operacional subjacente. A cadeia de ataque é Cross-Site Scripting, que pode ser usada para realizar Cross-Site Request Forgery, o que leva à Execução Remota de Código ao adulterar a configuração do aplicativo e envenenar um arquivo de log. Tudo isso é alcançado por meio de um upload de arquivo que contém JavaScript malicioso, que um usuário com privilégios baixos pode enganar um usuário com privilégios administrativos para executar. Os arquivos de Prova-de-Conceito e o vídeo que anexei demonstram um usuário com privilégios baixos realizando esse ataque e obtendo um reverse shell no sistema que hospeda o SuiteCRM.
Isso foi corrigido na versão 7.11.17 do SuiteCRM.

Gravidade

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Não concordo totalmente com essa classificação, pois o exploit realmente exige acesso administrativo, o que mudaria PR:L para PR:H, ajustando a pontuação final de 8,8 para 7,2.
Eu classificaria como: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Ref.: https://nvd.nist.gov/vuln/detail/CVE-2020-28328

Detalhes da versão

SuiteCRM Versão 7.11.15

Cross-Site Scripting (XSS)

O Cross-Site Scripting armazenado existe no upload de arquivos 'Criar Documentos'. Um usuário com privilégios baixos pode enviar um arquivo com qualquer conteúdo. O usuário pode então examinar o link fornecido para baixar este documento e determinar a localização do arquivo no sistema de arquivos localizando o parâmetro id. Esse valor longo e aleatório é o nome do arquivo dentro do diretório /uploads/. O usuário pode colocar JavaScript arbitrário neste arquivo e depois enviar o link para outro usuário. Isso pode ser usado para sequestrar a sessão de outro usuário e/ou realizar ações em nome desse usuário, como será mostrado no vídeo de PoC.

Execução Remota de Código

Depois de descobrir que eu poderia me tornar o admin por meio do sequestro de sessão via Cross-Site Scripting, descobri que poderia controlar as propriedades do sistema em 'Admin → Configurações do Sistema', a saber, a propriedade do arquivo de log. Extensões de arquivo de log eram bastante bloqueadas, mas consegui usar o BurpSuite para atualizar o valor de 'Nome do Arquivo de Log' para qualquer valor arbitrário, incluindo extensões .php. Fiz isso enviando uma requisição sem alterar nada e capturando a requisição POST que realmente atualiza os valores. Alterei o nome do arquivo via parâmetro logger_file_name para shell.php e simplesmente deixei o campo 'Extensão' em branco. Isso forneceu um arquivo php que eu pude acessar no navegador na raiz da web, mas eu precisava de algum código php dentro do arquivo para executar.
Em seguida, examinei a saída no arquivo e notei que poderia controlar a entrada no arquivo por meio das propriedades do usuário se atualizasse um usuário (como o nome ou sobrenome do usuário), se o log estivesse configurado como info (que eu acredito ser o padrão...). Então, capturei uma requisição no burp e inseri algum código php <?php $id =`id`; echo $id; ?> no campo de formulário last_name. Isso resultou na saída do comando id no Linux no contexto do usuário do servidor web, www-data. Os únicos caracteres que consegui identificar como escapados com base no arquivo de log são aspas simples, aspas duplas e barras invertidas. Você pode verificar isso executando tail no arquivo de log sql no backend.

Encadeando os dois para Cross-Site Request Forgery (Um clique -> shell)

Consegui realizar tudo isso como usuário admin porque consegui obter cookies de sessão; no entanto, para ter uma cadeia funcional, eu precisava que isso fosse executado via JavaScript no contexto do usuário admin. Consegui criar um script para isso usando algumas requisições fetch para realizar cada uma dessas requisições POST. A primeira atualizava as propriedades do sistema, a segunda atualizava o campo 'Sobrenome' do usuário admin, e a última realizava uma requisição GET no arquivo de log recém-criado com código php malicioso. O código php malicioso realizaria uma requisição curl contra minha máquina, baixaria um shell reverso bash e, em seguida, canalizaria a saída dessa requisição curl diretamente para o bash, executando o código. Então enviei isso usando o mesmo método que discuti na seção XSS e revisitei o novo link como usuário admin. Com um servidor web hospedando meu arquivo bash e um listener netcat em execução, consegui obter um reverse shell.

Mitigação

Cross-Site Scripting

Garanta que você tenha AllowOveride All configurado no Apache. nginx não possui essa configuração e não testei isso no nginx.

Execução Remota de Código

Atualize para a versão mais recente do SuiteCRM, ou pelo menos a versão 7.11.17.
Esta é a correção específica. Commit 1618af16eaa494c4551bac961e5ac8fc3d87ab8c

Reportando ao SuiteCRM

O SuiteCRM foi muito receptivo durante todo o processo de reporte. Eles reconheceram o RCE, que foi corrigido. O XSS era resultado de uma configuração do servidor web, então eles não o reconheceram como vulnerabilidade. Eles notaram, no entanto, que atualizariam a documentação à luz disso.

Linha do tempo

06 AGO 2020 -> Ambos os problemas reportados para [email protected]
07 AGO 2020 <- SuiteCRM confirma o recebimento do relatório e levanta o problema com a equipe de segurança interna
21 AGO 2020 -> Entrei em contato com [email protected] para um acompanhamento
25 AGO 2020 <- SuiteCRM responde sobre config do servidor web/XSS
26 AGO 2020 -> Eu respondo dizendo que a sugestão de AllowOveride All mitiga o XSS
16 SET 2020 -> Entrei em contato com [email protected] para um acompanhamento
17 SET 2020 <- SuiteCRM responde para confirmar o problema como um problema parcial
29 OUT 2020 Atualização lançada
03 NOV 2020 -> Entro em contato com [email protected] para garantir que nada mais é necessário da parte deles antes de divulgar o write-up
05 NOV 2020 <- SuiteCRM responde

Agora lançamos um patch para este problema e ele está em domínio público, não há problema em você fazer um post no blog sobre as vulnerabilidades do nosso ponto de vista.

05 NOV 2020 -> CVE solicitado por mim
06 NOV 2020 <- CVE-2020-28328 emitido

POC

https://www.exploit-db.com/exploits/49001

Agradecimentos ao SuiteCRM!

Foram muito fáceis de trabalhar e com certeza pretendo continuar procurando e reportando vulnerabilidades neste software!

Baixar ferramenta