Miro's free accounts (in)security
Posted on July 16, 2020 (Last modified on July 15, 2024) • 4 min read • 654 wordsThis is not a bug, is a feature!. Me apaixonei por uma plataforma de colaboração e tive meu coração despedaçado. 💔
Buscando por novas ferramentas de trabalho, encontrei o Miro, uma ferramenta realmente incrível! Mas até onde vale a pena abrir mão de privacidade e aceitar a possibilidade de ter seus trabalhos e possivelmente informações confidenciais vazados?
O Miro (https://miro.com/) é uma plataforma de colaboração baseada em quadros, onde times podem acessar remotamente e trabalharem no mesmo material ao mesmo tempo. É realmente interessante e gostei muito da experiência que tive.
Essa semana durante uma aula de design thinking, ligou um alerta e observei um alto grau de exposição que eu não tinha observado no Miro. Mas antes, deixa eu mostrar uma coisa.
A plataforma te possibilita usar até três quadros de forma gratuíta, o que é ótimo! Porém você não tem a opção de deixar em modo privado estes boards. Para isso você deverá desenbolsar pelo menos US$8 mensais. O que acredito ser um preço justo para quem depende de uma ferramenta que pode literalmente concentrar diversas atividades em um lugar apenas.
Voltando ao assunto da aula que despertou minha atençao, foi justamente a URL. Cada board possui um ID, que é referenciado na URL.
Só que ao olhar para meu perfil no Miro e verificando as URLs dos meus quadros, identifiquei que possuem padrões.
No exemplo abaixo mostro as URLs dos meus três boards. Compare com a URL da aula da minha professora na imagem acima. É o mesmo padrão no começo e no fim. Assim, o que era pra ser um ID de 12 caracteres, os esforço de um possível bruteforce e diminuído pela metade, onde precisamos buscar apenas por 6 caracteres! https://miro.com/app/board/o9J_kXXXXXX=/
Ok e agora?
O que vocês já estão carecas de saber!
Mas antes de qualquer esforço, podemos utilizar o bom e velho dork para encontrar URLs indexadas em páginas do Google. O Miro não permite que o conteúdo dos quadros sejam indexados, mas vamos buscar por páginas que em seu conteúdo possuam links disponíveis. Ex: intext:miro.com/app/board/
Ou então, procurar por quadros do Miro em quadros do Trello (que é outra plataforma interessante, mas se não bem gerenciada, pode comprometer informações sigilosas do seu grupo de trabalho). Ex.: intext:miro.com/app/board/ site:trello.com
Ok, entendidos como acessar quadros públicos do Miro e do Trello, vamos para o bruteforce.
Para facilitar, vou utilizar o Burp Suite para o ataque. Para diminuir o escopo de tentativas vou me resumir apenas a 3 caracteres, não mais 6, resultando em +50K tentativas.
Enviei uma requição para o módulo Intruder e coloquei como escopo do payload apenas nos ultimos 3 caracteres:
Na configuração do payload, adicionei o hífen como caractere utilizado, pois existem boards que o utilizam em seu ID. Além disso, configurei o tamanho máximo e mínimo para 3, que é o nosso objetivo.
Em Option, na configuraçao de filtro por Grep, coloquei o texto “This boards is no longer shared” para diferenciar os quadros existentes dos não existentes. Você pode também realizar este filtro se baseando pelo tamanho do Response.
O que iremos ver a partir de agora são três tipos de resposta:
Status | Tipo de cenário |
---|---|
200 | Quadro existente e público |
200 | Quadro removido ou não criado |
302 | Quandro existente e privado |
Neste breve exercício, encontramos 14 quadros públicos. Alguns exemplos abaixo obtidos pelo bruteforce.
Como dito anteriormente, eu acho esta plataforma sensacional para trabalho colaborativo, a proposta é interessante e ela provê um nível de segurança adequado para seus clientes PREMIUM.
Quando falamos de licenças FREE, sabemos que “não existe almoço grátis”. Mas neste caso, quem está usando nossos dados para benefício próprio? 🤔
O Miro ainda está amadurecendo e crescendo. Acredito que em breve irão ajustar e reforçar esta feature. 🥰