####################################################################### Luigi Auriemma Applicazione: TrackerCam http://www.trackercam.com Versioni: <= 5.12 Piattaforme: Windows Bugs: A] User-Agent buffer-overflow B] PHP argument buffer-overflow C] directory traversal e full path disclosure D] html injection nel file di log E] informations disclosure F] crash causato da messaggi di errore multipli Exploitation: remoto Date: 18 Feb 2005 Author: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bugs 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== TrackerCam e' un server http per webcam con la possibilita' di essere visibili pubblicamente e facilmente attraverso la pagina della comunita' di TrackerCam: http://www.trackercam.com/livecams ####################################################################### ======= 2) Bugs ======= ----------------------------- A] User-Agent buffer-overflow ----------------------------- Un richiesta HTTP contenente un campo User-Agent piu' lungo di 216 bytes porta ad un buffer-overflow. ------------------------------- B] PHP argument buffer-overflow ------------------------------- Come sopra ma questo buffer-overflow avviene quando il server gestisce un argomento lungo piu' di 256 bytes passato ad un qualsiasi script PHP. Esempio: http://host:8090/MessageBoard/messages.php?aaaaaaaaaaa...aaaa --------------------------------------------- C] directory traversal e full path disclosure --------------------------------------------- TrackerCam ha uno script PHP accesseibile da chiunque (bug E) che viene usato per guardare i files di log dall'interfaccia web. Il problema e' che il nome del file di log e' passato attraverso un argomento PHP e non ci sono controlli nello script quindi un attacker puo' scegliere quale file leggere ma soprattutto da quale zona in quanto e' possibile usare un attacco di directory traversal. Se il file non esiste o non vengono passati argomenti, verra' mostrato il percorso completo dove c'e' lo script ComGetLogFile.php3. Possono essere usati sia slash, backslash ed i loro valori esadecimali. Example: http://host:8090/tuner/ComGetLogFile.php3?fn=../../../../windows/system.ini ----------------------------- D] html injection in log file ----------------------------- Qualsiasi login e' salvato nel file di log corrente. Come gia' detto il file e' anche visibile attraverso un web browser permettendo ad un attacker di inserire codice HTML od altro supportato dal browser dell'amministratore nel file di log tramite una richiesta di login. -------------------------- E] informations disclosure -------------------------- Come detto nel bug C, e' possibile raggiungere lo script ComGetLogFile.php3 senza restrizioni, infatti anche se i servers sono protetti da passwords ci sono sempre delle zone raggiungibili ed il file di log e' proprio una di queste, o almeno quella piu' "utile". Nel file di log sono infatti salvati sia i login corretti che sbagliati (naturalmente non contengono le password utilizzate) e quindi un attacker puo' indovinare le password, guardare gli indirizzi IP che hanno avuto accesso al server ed altre piccole informazioni. Ogni file di log contiene i login dell'intero mese quindi un esempio di file di log per il mese corrente e': http://host:8090/tuner/ComGetLogFile.php3?fn=Eye2005_02.log ----------------------------------------------- F] crash causato da messaggi di errore multipli ----------------------------------------------- Se il server riceve un Content-Length negativo mostrera' un semplice MessageBox contenente un errore di "Memoria insufficiente" e lo stesso avviene anche per qualsiasi altra richiesta invalida come questa che segue. Dopo circa 300 di questi errori consecutivi il server crasha. Un altro problema simile (giusto per tenerne nota visto che non e' molto interessante) avviene dopo l'invio di circa 10 megabytes di dati. ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/tcambof.zip ####################################################################### ====== 4) Fix ====== No fix. Gli sviluppatori non sembrano interessati a correggere questi bugs. #######################################################################