Artigo original: I figured out a way to hack any of Facebook’s 2 billion accounts, and they paid me a $15,000 bounty…

Escrito por: AppSecure

Eu estou publicando isso com a permissão do Facebook sob a política de divulgação responsável. Eles já consertaram essa vulnerabilidade.

Este artigo é sobre uma vulnerabilidade simples que eu descobri no Facebook que eu poderia ter usado facilmente para invadir a conta de outros usuários do Facebook e sem nenhuma interação com eles.

Isso me deu acesso total a contas de outros usuários através da configuração de uma nova senha. Eu pude ver mensagens, cartões de débito/crédito armazenados dentro da sessão de pagamentos, fotos pessoais e outras informações privadas.

O Facebook tomou conhecimento do problema imediatamente, o consertou e me gratificou com uma recompensa de 15 mil dólares com base na gravidade e no impacto dessa vulnerabilidade.

Como a invasão funcionou

Sempre que um usuário se esquece da senha do Facebook, ele tem a opção de redefinir a senha mediante a inserção do seu número de telefone e endereço de e-mail em https://www.facebook.com/login/identify?ctx=recover&lwv=110.

O Facebook, então, enviará um código de seis dígitos para esse número de telefone ou para o endereço de e-mail que o usuário tem que inserir para poder definir a nova senha.

Eu tentei forçar o código de 6 dígitos no www.facebook.com e houve um bloqueio depois de 10-12 tentativas inválidas.

Então, eu procurei pelo mesmo problema no beta.facebook.com e mbasic.beta.facebook.com. Curiosamente, a limitação de taxa não estava presente no endpoint de senha esquecida.

Eu tentei invadir a minha própria conta (já que de acordo com a política do Facebook você não pode prejudicar nenhuma outra conta de usuário) e tive êxito em configurar uma nova senha para a minha conta. Pude, então, usar essa mesma senha para conseguir entrar na minha própria conta invadida.

Uma prova da invasão em vídeo

Como pode ser visto no vídeo, eu fui capaz de definir uma nova senha para o usuário usando força bruta no código que foi enviado para o seu endereço de e-mail e número de telefone.

Solicitação vulnerável

POST /recover/as/code/ HTTP/1.1

Host: beta.facebook.com

lsd=AVoywo13&n=XXXXX

Usar força bruta com o "n" me permitiu definir uma nova senha com sucesso para qualquer usuário do Facebook.

Linha de tempo

22 de fevereiro de 2016 : relato enviado para a equipe do Facebook.

23 de fevereiro de 2016 : o Facebook verificou a solução.

2 de março de 2016 : recebi a recompensa de 15 mil dólares concedida pelo Facebook.