by Claudemir Todo Bom - 2024-Feb-20
Nas últimas semanas detectei o que julguei serem falhas gravíssimas no sistema Whaticket e seus derivados.
O autor do projeto original deixa claro que ele não teve uma atenção à segurança da aplicação, recomendando que fosse utilizado apenas em ambientes de rede local. Porém existem várias versões derivadas, principalmente com o objetivo de fornecimento no modelo Software como Serviço (SaaS) que acabaram por replicar essas falhas.
São duas falhas:
O backend não valida credenciais na conexão websocket e fornece acesso a qualquer um que se conecta.
O backend envia mensagens via websocket que não são destinadas ao usuário logado. Esse problema pode ser confirmado através da console do navegador onde é possível observar toda a troca de mensagens, status, contatos que ocorre entre todos os usuários do mesmo sistema, apenas observando o websocket aberto pelo componente das notificações.
Essas duas falhas em conjunto expõem toda a comunicação que passa pelo servidor para qualquer pessoa que tentar conectar no websocket.
Basicamente ele se conecta ao websocket do servidor sem fornecer nenhuma credencial e passa a mostrar as mensagens recebidas.
Para funcionar o servidor precisa possuir um usuário com o ID 1, que é o padrão para o usuário administrador.
USE APENAS PARA TESTAR SEU PRÓPRIO SERVIDOR OU ALGUM SERVIDOR AO QUAL VOCÊ TENHA PERMISSÃO. EU NÃO SOU RESPONSÁVEL PELO QUE VOCÊ FIZER COM ESTA FERRAMENTA.
Você vai precisar do nodejs instalado em seu computador.
Tendo ele instalado, abra um terminal e navegue até a pasta em que este exploit está instalado. Inicialmente você vai precisar instalar as dependências do script:
npm install
Depois você pode executar ele:
npm start
Ele vai solicitar a URL do backend. Ela precisa iniciar com wss://
ou ws://
, depois de clicar em "Analize" ele vai conectar ao
websocket do servidor e iniciar a analisar. Se o servidor estiver
vulnerável você verá as mensagens sendo trafegadas em tempo real.
Se este código ajudou você a detectar e resolver uma falha no teu servidor, considere fazer uma doação ao autor pelo PIX abaixo.
Chave Pix: 80fd8916-1131-4844-917e-2732eaa2ba74