De um email de Newsletter a um account takeover
Tags: bolhadev, webdev, bolhasec, cibersecurity
Published: 2023-07-11 21:11:27

Em uma das edições da super útil NewsLetter https://cloudseclist.com/ fiquei sabendo de uma falha de login/signup que aplicações integradas com Microsoft Azure AD OAuth podem ter.

Fiquei passado de como é fácil explorar a vulnerabilidade e como parece que os nomes usados no Microsoft Azure AD OAuth foram feitos pras pessoas cometerem o erro de confundir o email e preferred_username (que é a razão da vulnerabilidade existir).

![print da mensagem do newsletter](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w7144hny2gprpbbx1baa.png)

>💡 TL;DR do post (ou por que a vulnerabilidade existe?): Ao receber um token Microsoft Azure AD OAuth, deve-se usar o campo preferred_username, ao invés de email pra identificar o usuário. No Azure AD, o campo email está totalmente sob controle do usuário e nada impede que ele escolha o valor elon_musk@twitter.com. Mais detalhes em https://www.descope.com/blog/post/noauth

## Preparando o ambiente de teste

Pra testar a vulnerabilidade, criei uma conta free na Azure (tendo que inserir meu cartão de crédito 😢) e instanciei meu próprio Microsoft Azure AD.

![Microsoft Azure AD Instance](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6sfgfagpqktgu2neauh7.png)

E acabei criando uma porção de usuários nos meus testes 🙆‍♀️

![Microsoft Azure AD usuários](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4rmcaf4vq5o761a0a5sd.png)

## Achando um alvo

Com o Azure AD setado, ficou faltando achar um candidato pra testar a vulnerabilidade. Testei alguns Google Dorkings

```
"continue with microsoft"
"sign up with microsoft"
"register with microsoft"
```

Até que achei esta aplicação https://doodle.com/login que pareceu ajeitadinha.

![Doodle no Google](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9hoij6433xohzzy1875f.png)

Pra checar se vale a pena gastar tempo testando uma aplicação, a minha métrica preferida é estimar se alguém liga pra aplicação de fato. Faço isso olhando basicamente as redes sociais da companhia. Para nossos amigos do Doodle, mais de 4k followers, mais de 100 colaboradores e série A de investimento pareceu bem convicente.

![Doodle at Linkedin](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jrqd1fozrnio2v13ygr8.png)

> **Disclaimer:** Não. Não achei uma aplicação vulnerável de primeira. Tive que testar uma dúzia de sites diferentes. Mas eu estava de férias, então fez parte da diversão.

## Testando a vulnerabilidade

Pra testar se o site era vulnerável, criei no Azure AD um usuário chamado attacker e setei o campo email para [redacted][@doodle.com](mailto:@doodle.com) (que achei no finado https://search.illicit.services 😢).

![attacker description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3xl7b2l92xb57okswohh.png)

Ao tentar logar com attacker@bolhasec.com

![login](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uyqb6v7k58r1im7qes5j.png)

**BUM**. Estava logado com a conta que atribui no campo email ([redacted]@doodle.com ). Aparentemente, a conta não tinha muito uso, infelizmente ☹️. (depois descobri que era de um dos fundadores. Isso deve ter chamado atenção no email que enviei 😆)

![logged in 1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kis2vvbv1irt0ynv39nr.png)

![logged in 2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7bmrqrdvw0zzyp05nzp3.png)

Sim. A exploração é tão simples quanto isso. E ainda deve existir uma porção de sites vulneráveis por aí. Então encontre e reporte pros proprietários 🙏.

## Avisando nossos amigos

Usando o belo serviço https://hunter.io/search/doodle.com encontrei os emails 
- support@doodle.com
- contact@doodle.com
que deveriam ser capazes de ajudar no assunto.

Escrevi um email simples contando processo que fiz e com algumas imagens dia 27/06. Email bem curto mesmo.
![email 1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1x9dn4ntedg66dz1ikrb.png)

Dia 30/06 me responderam. Relativamente rápido, pensei. Com uma resposta bem amigável e consciente. Parabéns pessoal do suporte e comunicação da Doodle.

![email 2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c61t2fau5x59566vgmge.png)

## O Fix
Hoje (11/07) antes de escrever essa história, testei pra ver se tinham resolvido a vulnerabilidade. Como os prints abaixo mostram, a vulnerabilidade foi de fato resolvida. Acabaram não precisando de nenhuma ajuda minha 😆. Pra ser honesto, até hoje ninguém pediu ajuda pra fazer o fix.


![Fix 1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/easo06f1rkj1gf7oj0xw.png)


![Fix 2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f1w6qvmei8jor1m1btzc.png)

Infelizmente não entrei em contato mais com eles pra perguntar como resolveram.

## Conclusão
Por fim, ninguém respondeu mais o email que enviei. Porém, como resolveram o problema, resolvi contar a história aqui. 

Apesar de ser um fim completamente anti-climático, assim que são os reports no mundo real. Especialmente fora de programas de Bug Bounty. A resposta mais comum para casos assim é apenas o silêncio e o vácuo nos emails 😆.

Espero que esse report incentive mais pessoas a fazerem responsible disclosures de vulnerabilidades (é um jeito de praticar e ajudar os amiguinhos) e dê um panorama de como funciona +/-. Foi uma investigação divertida pra mim. Vou tentar guardar melhor e separar mais evidências nos meus próximos casos.