Categories
Hacking News Top

L’hack dell’OAuth di Facebook

facebook_hacked

Si chiama Goldshlager l’hacker israeliano che ha recentemente pubblicato sul suo blog un hack che intercetta l’OAuth di Facebook. Questo permette all’attaccante di avere pieno controllo sull’account vittima.
Per prendere l’OAuth (un token univoco che permette di effettuare query alla piattaforma di Facebook), Goldshlager si è concentrato sulla pagina di autorizzazione delle applicazioni. Il suo scopo è quello di bypassare questo “passaggio” ed avere accesso all’account senza che l’utente autorizzi direttamente la sua applicazione!

https://www.facebook.com/dialog/oauth/?app_id=YOUR_APP_ID&next=YOUR_REDIRECT_URL&state=YOUR_STATE_VALUE&scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES

Purtroppo però il parametro “next” è strettamente collegato ad “app_id” e non è possibile inserire un altro URL, se non quello dell’applicazione con cui è registrato. L’israeliano ha quindi cominciato ad inserire URL che potrebbero essere autorizzati come ad esempio *.facebook.com ma anche per questa volta il test non è andato a buon fine, continuava ad apparire un messaggio di errore:

facebookdotcomdomainblockgeneralerror

Goldshlager ha quindi capito che il controllo avveniva tramite Regexp e si è subito messo all’opera per trovare un modo per bypassare anche questo ostacolo. La soluzione gli arriva dopo aver effettuato fuzzing sul parametro “next”. Aggiungendo infatti alla fine dell’URL “#!” il sistema accettava il parametro come corretto (sempre mantenendo il dominio su *.facebook.com)

%23~!   (Also Work)
%23%09! (Also Work)
touch.facebook.com/#%09!/,m.facebook.com/#~!/,

A questo punto il sistema non rispondeva più con un errore, ma il redirect poteva essere effettuato solo sul dominio facebook.com (senza che venisse chiesta l’autorizzazione all’utente). C’era quindi bisogno di un altro passaggio per far funzionare il tutto, che gli permettesse di farsi arrivare la richiesta su un altro dominio, diverso da facebook.com.
La soluzione è stata semplice: Goldshlager ha create un’applicazione! Questo permette infatti di farsi girare le richieste fatte tramite “facebook.com/apps/TUA_APP/” su un server diverso da quello di facebook. Creando così il PoC:
[…]next=https://touch.facebook.com/%23~!/apps/testestestte[…]
Richiesta completa:
https://www.facebook.com/connect/uiserver.php?app_id=220764691281998&next=https%3A%2F%2Ftouch.facebook.com%2F%23%7E%21%2Fapps%2Ftestestestte%2F&display=page&fbconnect=1&method=permissions.request&response_type=token
Come “APP_ID” ha deciso di utilizzare quella di “Facebook messenger per Windows” che è appunto un’applicazione interna di facebook e sviluppata da loro con piene autorizzazioni sull’account utente.
expiresscopes

Il bug scoperto dall’hacker israeliano era stato segnalato al reparto Facebook Security e fixato in pochi giorni. Goldshlager è stato ricompensato in denaro (grazie al Bug Bounty Program di Facebook) ed ha poi deciso di rendere pubblico l’hack (anche se non più funzionante). E’ stato rilasciato anche un video dimostrativo.

Dal suo blog si nota inoltre che non è nuovo alla pubblicazione di bug sulla piattaforma facebook. Da ricordare:

Another Stored XSS in Facebook.com
How I Hacked Facebook Employees Secure Files Transfer service (http://files.fb.com )

Si ringrazia dailyhackingtips.com per l’immagine di copertina.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.