di AppSecure

Lo pubblico con il permesso di Facebook secondo la politica di divulgazione responsabile. Hanno risolto questa vulnerabilità.

Questo post riguarda una semplice vulnerabilità che ho scoperto su Facebook che avrei potuto utilizzare per entrare negli account Facebook di altri utenti facilmente e senza alcuna interazione dell’utente.

Questo mi ha dato pieno accesso all’account di altri utenti impostando una nuova password. Sono stato in grado di visualizzare i messaggi, le loro carte di credito/debito memorizzate nella loro sezione di pagamento, le foto personali e altre informazioni private.

Facebook ha riconosciuto il problema prontamente, lo ha risolto e mi ha premiato con una taglia di 15.000 dollari in base alla gravità e all’impatto di questa vulnerabilità.

Come ha funzionato l’hack

Ogni volta che un utente dimentica la sua password su Facebook, ha la possibilità di reimpostare la password inserendo il suo numero di telefono e indirizzo e-mail su https://www.facebook.com/login/identify?ctx=recover&lwv=110.

Facebook invierà quindi un codice di 6 cifre a questo numero di telefono o indirizzo e-mail che l’utente deve inserire per impostare una nuova password.

Ho provato a forzare il codice di 6 cifre su www.facebook.com ed è stato bloccato dopo 10-12 tentativi non validi.

Poi ho cercato lo stesso problema su beta.facebook.com e mbasic.beta.facebook.com. È interessante notare che il rate limiting era assente dall’endpoint forgot password.

Ho provato a rilevare il mio account (come da politica di Facebook, non si dovrebbe fare alcun danno agli account di altri utenti) e sono riuscito a impostare una nuova password per il mio account. Ho potuto quindi utilizzare questa stessa password per accedere al mio account violato.

Un video di prova dell’hack

Come si può vedere nel video, sono stato in grado di impostare una nuova password per l’utente forzando il codice che è stato inviato al loro indirizzo e-mail e numero di telefono.

Richiesta vulnerabile

POST /recover/as/code/ HTTP/1.1

Host: beta.facebook.com

lsd=AVoywo13&n=XXXXX

Brute forcing la “n” mi ha permesso con successo di impostare una nuova password per qualsiasi utente di Facebook.

Disclosure Timeline

22 febbraio 2016 : Report inviato al team di Facebook.

23eb 2016 : Verificato il fix dalla mia parte.

2 marzo 2016 : Bounty di $15,000 assegnato da Facebook