Skip to content

allgood/WhaticketExploit

Repository files navigation

Whaticket Websocket Exploit

by Claudemir Todo Bom - 2024-Feb-20

en pt-br

Motivação

Em Fevereiro de 2024 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.

Como o exploit funciona

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.

Instruções

Executando o pacote pré compilado

Acessando a página de releases Você pode baixar o arquivo executável e rodar direto no Windows.

Executando a partir do código fonte

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

Opções de uso

O Whaticket-Exploit fornece algumas opções na primeira tela:

  • backend_hostname: Esse é obrigatório, vai indicar onde está rodando o serviço de websocket, normalmente sem porta, mas se tiver necessidade pode ser colocada no formato hostname:port
  • frontend_hostname: (opcional) O backend de alguns sistemas exigem a URL do frontend como origem, isso não adiciona segurança pois é facilmente forjável. Preenchendo esse campo o cabeçalho de origem será preenchido de acordo
  • login e password: (opcional) É possível fornecer um login e senha para observar vazamento de dados de outras empresas e usuários. ATENÇÃO: Nesse modo as mensagens direcionadas ao login fornecido também serão exibidas, o que não configura exatamente um vazamento... só é mesmo vazamento se mensagens que o usuário fornecido não devesse ter acesso aparecerem.
  • enable ssl: Geralmente marcado, indica que deve utilizar https para acessar o backend.

Foi útil?

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.

image

Chave Pix: 80fd8916-1131-4844-917e-2732eaa2ba74

About

Exploits Whaticket websocket bugs

Resources

Stars

Watchers

Forks

Packages

No packages published