Eutelia, Remote File Inclusion, XSS etc etc etc
Cattivi e buoni programmatori anno 2008. Sarà perchè vengo dalla lettura dell'ultimo libro di joel, sarà perchè ultimamente sto facendo altri tipi di studi, ma più mi sforzo e più non riesco a spiegarmi come si possano realizzare prodotti scadenti.
Analiziamo per punti.
- Eutelia (sembra) non sviluppare mai da zero i propri siti, si affida a componenti CMS Opensource (Joomla).
- Nel caso in cui si presenti la necessità di integrare sistemi di business logic, questi vengono realizzati internamente.
- Sembra non si curi di aggiornare i prodotti di terze parti free utilizzati.
- Sembra non avere un team di beta testers.
- Sembra non aver sottoscritto contratti di penetration testing.
Per il punto uno e due c'è poco da argomentare.
Punto tre, la storia di Joomla è piena di vulnerabilità, lo sappiamo tutti e secunia ce lo ricorda molto volentieri [2]. Dall'anno 2003, anno di rilascio di questo prodotto, ben tredici advisories sono stati rilasciati, lode al team di joomla per aver risposto sempre velocemente con una percentuale del 85% di bug fix. A gennaio è stato rilasciato un advisory che permette ad utente (senza privilegi) di prendere il totale controllo dell'applicativo.. avranno scaricato ed installato le patch? (no).
Comunque, se i punti quattro e cinque non fossero veri, non sarei qui a scrivere questo ed altri post. Già alla fine di maggio dell'anno scorso [1], inciampai per sbaglio nel codice di questi programmatori. A distanza di circa un anno, sono dovuto tornare sul portale di eutelia per alcune ricerche, e, anche questa volta, ho trovato un altra perla del software. Stiamo parlando del prodotto EuteliaVOIP, nome dietro il quale si cela la lodevole iniziativa di portare la connettività nelle zone non ancora coperte da ADSL.
Con il tempo, Eutelia ha installato access point wifi che permettono, a fronte di una sottoscrizione, di navigare in velocità ADSL. Data la verifica di copertura del segnale da parte degli utenti prima e di tecnici eutelia poi, è possibile navigare in internet. Cool.
Attivare una connessione è più o meno semplice, basta acquistare uno starter kit (199€) e sottoscrivere l'abbonamento. Fatto questo verranno consegnate delle credenziali che, dopo essere validate dall'applicativo, permetteranno all'utente di avere una vita su internet. Per fare questo ci si collega all'indirizzo http://wifi.euteliavoip.com si seleziona la voce "Attiva Login" il sistema valida le credenziali e e così via. Tutto sembra andare liscio come l'olio, ma dando una piccola sbirciata "under the hood" ci troviamo davanti ad un altra cattiva (nulla) introduzione di sistemi di sicurezza.
Come è logico aspettarsi, il componente di accesso è sotto HTTPS, e viene visualizzato all'utente grazie ad un "iframe". Lo stesso avviene per i form di richiesta credenziali. Ora il problema non è tanto con l'implementazione (che sicuramente non è delle più eleganti), ma è con il componente stesso.
Nel momento in cui viene effettuato il click sul pulsante "Avanti" l'applicativo invia in le seguenti variabili
- wc_login (username)
- wc_password (password)
- wc_retpath (return path?)
- wc_dbos
- CmdAttiva
5 paramentri, di cui solo due sono valorizzati dall'utente. Uhm? Veloce controllo dei valori passati e... "ding". Supponiamo che tentiate il login con l'utenza "prova - prova", ecco i valori delle cinque le variabili.
wc_login = "prova" wc_password = "prova" wc_retpath = "wbc_skpopenaccountwifi" wc_dbos = "dbeutelia" CmdAttiva = "Attiva"
Il motivo dell'esistenza della variabile wbc_retpath è sconosciuto, perchè, anche settandola con altri valori (anche di altri componenti di eutelia) essi non sembrano in alcun modo influenzare l'applicativo, la cosa sconcertante è notare che.. il valore wc_dbos è il valore utilizzato dall'applicativo per indentificare il database su cui eseguire le query! Nel caso in cui non vengano effettuate modifiche a questa variabile si riceve l'errore
Email o Password errati E' anche possibile che la sottoscrizione non sia stata ancora confermata, controllore la propria casella di posta. Cliccare sul bottone "Indietro" del browser.....
Se invece si cambia il valore in qualsiasi altra cosa.. si riceve l'errore che, tristemente, ci conferma l'impossibilità di aprire il database richiesto o_O.
Naturalmente è possibile modificare a piacimento il valore di questa variabile per andare a renderizzare qualsiasi tipo di codice (anche php) all'interno dell'applicativo stesso. E attenzione quando si dice questo, perchè l'inclusione di codice remoto può portare a spiacevoli conseguenze.
Per dimostrare la vulnerabilità, ci limiteremo a valorizzare la variabile con il seguente codice
<iframe src="http://www.ansa.it" width="600" height="800">
Le conclusioni.. le lascio a voi. Auguro ad Eutelia di trovare programmatori che si possano definire tali e sopratutto di rivedere le proprie regole di rilascio in produzione.. sempre che esse esistano.
Riferimenti:
[1] "Tecniche errate di prevenzione, un esempio reale" - http://www.cyphersec.com/?p=76
[2] "Joomla! 1.x - Vulnerability Report" - http://secunia.com/product/5788/?task=statistics
January 21st, 2008 - 09:47
Fanstastico, che dire, viva Eutelia….
January 22nd, 2008 - 15:16
Ho avuto modo di lavorare in collaborazione con una società del gruppo… con applicativi per uso interno.
Non posso raccontare cosa ho visto!