Hackeando o WhatsApp com HTML
Neste blog apresentarei pesquisas que fiz junto com Eran Vaknin e Dikla Barda sobre WhatsApp.
Neste estudo, fomos capazes de assumir contas do WhatsApp usando a plataforma Web do WhatsApp. É importante notar que as versões web são uma cópia completa de tudo o que é feito no dispositivo móvel.
Usando nosso método de aquisição, foi possível obter acesso total à conta WhatsApp do alvo e, assim, acessar as informações pessoais do usuário:
- Fotos e videos
- conversas pessoais
- Conversas em grupo
- Enviando mensagens
- E mais...
Vídeo de demonstração:
Technical part
WhatsApp Permite enviar documentos, fotos, vídeos e clipes de áudio. Começamos a pesquisa conduzindo uma investigação sobre o processo de upload dos documentos, diagnosticando o código e a lógica do sistema.
Foi assim que chegamos à linha 28667, que é exatamente antes de começarmos a realizar todas as verificações em um objeto que é responsável por gerenciar os tipos de documentos que o WhatsApp suporta upload.
W["default"].DOC_MIMES
O que parece assim.:
Portanto, se quisermos fazer o upload de um documento html, falharemos, porque esta lista não contém o tipo de documento text/html. Portanto, antes de inserir o código, iremos adicionar o tipo nós mesmos text/html Para um objeto usando-console:
W["default"].DOC_MIMES += ", text/html";
Assi, na verdade, conseguimos fazer o upload de um arquivo html para o sistema e, além disso, notamos que você também pode controlar o nome do arquivo através do parâmetro "n" como na imagem acima.
A próxima etapa é adicionar uma visualização previa ao nosso arquivo. Examinamos como o WhatsApp constrói a visualização previa em uma imagem padrão e salvamos os parâmetros necessários para que possamos adicioná-los à função encryptE2EMedia, de todos os parâmetros que adicionamos, o parâmetro mais importante é uma visualização que contém o conteúdo da imagem que queremos adicionar na codificação base64.
O resultado final após adicionar os parâmetros e o bypass mime_type. Conseguimos enviar uma mensagem parecida com esta:
Este é basicamente um documento html padrão camuflado, clicar no documento abrirá o documento sob o-domain:
web.whatsapp.com
O que parece assim.:
Observe que o documento é aberto na memória do navegador usando a API HTML5 FileReader e, como executamos nosso código no domínio principal do WhatsApp, que é web.whatsapp.com, podemos acessar todos os armazenamentos do navegador no mesmo-domain:
- Cookies
- LocalStorage
- SessionStorage
Examinamos cada um dos armazenamentos e descobrimos que o ID da conta está em LocalStorage e para invadir a conta de outro usuário tudo o que temos a fazer é pegar todo o seu LocalStorage e enviá-lo para nosso servidor:
Você pode ver que nosso arquivo html puxa todo o armazenamento local do usuário e o envia para o servidor:
localStorage Ele contém o ID da conta e tudo o que nos resta fazer é carregá-lo em nossa conta e então iremos para a conta do alvo que clicou na imagem: