####################################################################### Luigi Auriemma Applicazione: BFCommand & Control Server Manager http://www.bfcommandcontrol.org Versioni: BFCC <= 1.22_A BFVCC <= 2.14_B BFVCCDaemon NON e' vulnerabile Piattaforme: Windows Bugs: A] full anonymous login bypass B] login bypass through NULL username C] unvulnerable clients and full privileges D] server full after consecutive connections Exploitation: remoto Date: 29 Aug 2005 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== BFCommand & Control Server Manager e' un server manager disponibile per i giochi Battlefield 1942 (col nome BFCC), Battlefield Vietnam (BFVCC) e Battlefield 2 (BF2CC). La differenza tra questi server managers e gli altri disponibili su Internet e' che BFVCC e' anche incluso direttamente nel CD di Battlefield Vietnam e quindi e' utilizzato da molti utenti. Ho fatto un veloce ricerca su Internet ed ho trovato che oltre il 20% dei servers pubblici di Battlefield Vietnam utilizzano una delle versioni vulnerabilit di BFVCC su porte standard che, attraverso le vulnerabilita' trovate, significa accesso completo alla gestione dei servers di gioco e a possibili dati sensibili come la password POP3 dell'admin. BFVCCDaemon non e' vulnerable solo perche' utilizza un protocollo differente ed e' considerato un programma a parte. Inoltre su Internet la quantita' di servers BFV che utilizzano BFVCCDaemon e' quasi inesistente. ####################################################################### ======= 2) Bugs ======= ------------------------------ A] full anonymous login bypass ------------------------------ Questo bug puo' essere spiegato con queste parole: non esiste alcun meccanismo di login. Infatti il comando "login" e' completamente inutile perche' chiunque puo' connettersi al server manager e prenderne il controllo con privilegi di "Super Admin". La cosa piu' interessante e' che senza loggarsi nel server l'attacker e' come se non esistesse, infatti i log non riportano alcuna operazione (eccetto per un paio di comandi se utilizzati) e per il server non ci sono persone connesse in quel momento. Davvero un buon metodo per controllare il server come un fantasma in tutta tranquillita' e con il massimo livello di privilegi. ------------------------------------- B] login bypass through NULL username ------------------------------------- Il comando "login" naturalmente e' composto da un nome utente ed una password ma la cosa interessante e' che inserendo un byte NULL (0x00) nel campo del nome utente e' possibile forzare il server a dare accesso all'attacker: "login" "\x1e" // command "\0" "\x1e" // username (NULL byte) "none" "\x1e" // password "none" "\x1e" // username "" "\x1e" // ??? "" // ??? "\x00\x40\x40\x00" // command delimiter ------------------------------------------- C] unvulnerable clients and full privileges ------------------------------------------- Gli amministratori (e soprattutto quello locale) hanno la possibilita' di disconnettere gli altri amministratori remoti. Il comando "Boot" e qualsiasi altro comando che ha effetto sul client e' totalmente inutile in quanto il server continua a tenere la connessione stabilita perche' qualsiasi operazione o disconnessione viene compiuta dal client non dal server. In breve con un client modificato (ad esempio mettendo un byte NULL dove c'e' il comando unicode Boot nell'eseguibile) non si puo' essere kickati. Inoltre ogni amministratore puo' essere limitato in cosa puo' o non puo' fare settando alcuni permessi nella sezione "User Profiles. Esattamente come per il comand Boot anche i permessi sono client-side e quindi un admin con permessi molto limitati puo' prendere il pieno controllo del server manager. -------------------------------------------- D] server full after consecutive connections -------------------------------------------- Una specie di attacco "fake players" con la differenza che qui dopo 20 connessioni consecutive il server diventa pieno per sempre. In breve se il client non invia il comando "login" il server considera la connessione in uno stato idle e quando viene raggiunto il limite di 20 connessioni (anche se le connessioni ed i sockets sono stati chiusi!) diventa pieno e nessun altro puo' usare il server manager da remoto. Naturalmente anche questo attacco non viene visualizzato nei logs. ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/bfccown.zip ####################################################################### ====== 4) Fix ====== No fix. Nessuna risposta dagli sviluppatori. Suggerisco agli utenti di BFVCC di utilizzare BFVCCDaemon che non e' vulnerabile. #######################################################################