###################################################################### Luigi Auriemma Application: Abyss webserver (http://www.aprelium.com) Version: 1.0.3 (patch 2) e precedenti, sia Windows che Linux, (patch 2) risolve il bug di amministrazione Bug: Directory traversal e bug di amministrazione e puo' amministrare il server Abyss senza effettuare alcun login. Leggi la sezione Bug per avere maggiori dettagli Date: 22 Aug 2002 Author: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ###################################################################### 1) Introduzione 2) Bug 3) Il Codice 4) Fix ###################################################################### =============== 1) Introduzione =============== Abyss e' un webserver free sviluppato sia per i sistemi Win32 che per Linux x86. E' leggero e ha alcune funzioni interessantissime come ad esempio l'u- tilizzo di una "console" per amministrare il server remotamente. Sfortunatamente l'uso di tale console e' la cosa piu' dannosa in que- sto webserver in quanto un attacker puo' far cio' che vuole senza nes- suna password. Questo bug fu' trovato dalla stessa Aprelium in Giugno ed e' stato fixato nella versione 1.0.3 (patch 2). Comunque dei disguidi con CNET hanno limitato la diffusione di tale versione. L'altro bug e' un altro pericoloso problema: directory traversal bug. L'ultimo problema e' una vulnerabilita' minore nella gestione dei files con alcuni caratteri alla fine di essi. ###################################################################### ====== 2) Bug ====== A] Directory traversal bug ========================== Il primo problema che voglio mostrare e' riguardo la visione di tutti i files nei sistemi dove girano Abyss 1.0.3 (patch 2) e precedenti. Questo problema e' causato dal carattere '\' (%5C) che non e' control- lato come carattare pericoloso, quindi il server segue il percorso indicato dall'URI dato dall'attacker finche' non viene raggiunto il file richiesto. I seguenti due semplici esempi mostrano il file winnt\win.ini: http://host/%5c%2e%2e%5c%2e%2e%5c%2e%2e%5c%2e%2e%5cwinnt%5cwin.ini "GET /\..\..\..\..\..\winnt\win.ini HTTP/1.0" Quest'ultima e' una richiesta HTTP che va' inviata con telnet in quan- to alcuni browser possono modificare i caratteri "\..". E' anche possibile vedere l'index di qualsiasi directory (tranne il root) se non e' stata disattivata l'opzione AutoIndex (di default e' attivata). Ecco winnt: http://host/%5c%2e%2e%5c%2e%2e%5c%2e%2e%5c%2e%2e%5cwinnt/ In Linux fortunatamente l'attacker non puo' scendere giu' fino al root ma puo' andare solo nella cartella di Abyss e puo' vedere ALCUNI files come, per esempio, i files nelle directory cgi-bin e chl ma NON i file di log od abyss.conf (stessa cosa accade anche su Windows). Due semplici esempi sono: http://host/%2f%2e%2e%2f http://host/%2f%2e%2e%2fcgi-bin/ e vedremo l'index di Abyss e della directory cgi-bin. B] Bug di amministrazione(risolto con patch 2) ============================================== La console usata in Abyss e' lo stesso webserver in ascolto sulla por- ta 9999 (un'altra porta di default puo' essere la 81) e utilizza i files nella cartella CHL del server. In questa directory ci sono tutti i files per gestire il server remo- tamente in modo che l'amministratore possa cambiare i settaggi senza dover intervenire manualmente sul file abyss.conf. Questo bug e' davvero incredibile... un attacker senza loggarsi puo' riconfigurare ogni paramentro del server. Alcuni esempi di cosa puo' fare l'attacker sono: - fermare, avviare e chiudere completamente il server - cambiare username e password dell'amministratore - cambiare tutti i parametri avanzati del server (log files, numero massimo di richieste, ecc...) - tutto cio che puo' fare il vero amministratore L'unico limite per l'attacker e che non possono essere mostrati i set- taggi correnti del server, ma penso non sia una cosa tanto importante perche' puo' ridefinire tutto! Bisogna ricordare che l'attacker puo' cambiare il login dell'ammini- stratore e quindi diventare il vero amministratore. Il proof-of-concept puo' essere prelevato qui: http://aluigi.org/poc/abyss-adm.zip C] Aggiunta di caratteri ======================== Questo e' un problema che e' diffuso su quasi tutte le applicazioni per Windows e non solo. Il problema e' che aggiungendo alcuni caratteri (in questo caso il '+') l'attacker puo' leggere "per esempio" i files .chl bypassando il login. Non e' un bug pericoloso, ma e' meglio risolvere certi bugs prima che possano essere utilizzati per degli attacchi piu' dannosi. Alcuni semplici esempi: http://host:9999/srvstatus.chl+ http://host:9999/consport.chl+ http://host:9999/conspass.chl+ http://host:9999/general.chl+ ###################################################################### ============ 3) Il Codice ============ A] Esempio di lettura di winnt\win.ini su Win: http://host/%5c%2e%2e%5c%2e%2e%5c%2e%2e%5c%2e%2e%5cwinnt%5cwin.ini "GET /\..\..\..\..\..\winnt\win.ini HTTP/1.0" index di Abyss su Linux: http://host/%2f%2e%2e%2f B] Per il bug dell'amministrazione guarda il file html prelevabile dalla mia pagina: http://aluigi.org/poc/abyss-adm.zip Puo' essere usato per testare il server che gira sulla stessa macchina all'indirizzo 127.0.0.1. Se vuoi testare altre macchine semplicemente cambia la stringa "http://127.0.0.1:9999" alla linea 4 del file html con l'host e la porta che vuoi. C] Aggiungi '+' al file che vuoi vedere. ###################################################################### ====== 4) Fix ====== Abyss 1.0.3 (patch 3) dal sito web di Aprelium: http://www.aprelium.com o direttamente l'eseguibile fixato: http://www.aprelium.com/news/patch1033.html ######################################################################