Navigando su ilmessaggero.it ho scoperto alcune vulnerabilità interessanti, che ad oggi sarebbe bene non avere. Ma prima un piccolo disclaimer:
Tutte le vulnerabilità individuate da me sfruttano problemi tecnici presenti nel sito ma hanno effetto solo verso chi si connette allo stesso (lato client). Ci tengo a precisare che non ho mai effettuato alcun accesso abusivo ai sistemi del Messaggero ne forzato login, ne tentato di farlo, ne divulgato informazioni sensibili. Come sempre ho aspettato del tempo prima di pubblicare il presente post sperando in aggiornamenti e/o contatti da parte dell’azienda. Come di mia consuetudine ho contattato chi di dovere più volte e su diversi canali offrendo la mia massima collaborazione a titolo gratuito. Non è assolutamente mia intenzione mettere in cattiva luce il Messaggero, ma divulgare e mettere a conoscenza sia chi naviga sul sito sia l’azienda dei problemi individuati che potrebbero essere sfruttati in modalità malevole verso i navigatori o verso l’azienda stessa. Non voglio in alcun modo suggerirvi di eseguire attacchi verso ilMessaggero ne altri suoi domini di proprietà. Ogni accesso abusivo a sistemi informatici è punito dalla legge italiana per cui vi sconsiglio vivamente di provarci.
Iniziamo. Navigando nel sito http://www.ilmessaggero.it se si prova a leggere una qualsiasi notizia senza essere abbonati, questa appare per metà bloccata da un avviso che ci invita ad effettuare il login.
Il login presente in questo blocco effettua una richiesta POST verso http://www.ilmessaggero.it/ynlogin2.php in chiaro, passando sia username che password e altri dati dell’utente che si sta loggando. Questa vulnerabilità è presente perché il sito è privo del certificato di sicurezza SSL/TLS, che permetterebbe di criptare la connessione e nascondere le richieste degli utenti ad un eventuale attacco MiTM.
Continuando nella navigazione, se guardiamo nella parte bassa del sito è presente una toolbar. In questa toolbar ci sono 3 bottoni 2 di essi molto riconoscibili per via delle icone social.
Concentrando la nostra attenzione sul tasto ACCEDI cliccandoci sopra, si aprirà un popup con il form di login, ma insieme al login è presente anche un link al form di registrazione che effettua anch’esso le richieste in chiaro.
In più, viene gestita in maniera errata la risposta agli errori mettendo troppo in dettaglio il tipo di errore e dando la possibilità all’attaccante di utilizzare il form di registrazione per enumerare gli username già registrati, con un semplice bruteforce.
Ecco alcuni esempi:
http://www.ilmessaggero.it/social/tunnel.php?username=admin&[email protected]&password=&citta=as&action=check_registration_data
{“status”:200,”msg”:”OK”,”data”:{“status”:”KO”,”msg”:”lo username \u00e8 gi\u00e0 in uso.”}}
http://www.ilmessaggero.it/social/tunnel.php?username=puffetto&email=&password=a&citta=as&action=check_registration_data
{“status”:200,”msg”:”OK”,”data”:{“status”:”OK”}} (LIBERO)
Se torniamo nella homepage www.ilmessaggero.it e proviamo ad effettuare una ricerca verremo reinderizzati su
http://www.ilmessaggero.it/ricerca.php
Vulnerabile a XSS scripting.
Altra vulnerabilità XSS nella homepage del ilmessaggero.it Segnala il problema a ilmessaggero.it
SHOP.ILMESSAGGERO.IT
Nel caso in cui volessimo acquistare un abbonamento il sito in cui veniamo portati è un sottodominio sempre del ilmessaggero.it
http://shop.ilmessaggero.it
Anche qui, tutte le operazioni di login sono in chiaro, vulnerabili quindi ad un attacco di tipo MiTM.
Al giorno d’oggi avere un form di login che scambia dati in chiaro corrisponde a mettere un post-it sul monitor con su scritto le password.
Ed infine mentre navigavo, casualmente, e sottolineo casualmente..sul sito shop.ilmessaggero.it mi sono imbattuto in una pagina di errore che mi ha restituito, i parametri di connessione al database. L’errore credo sia stato causato da una perdita di connessione verso il database.
object(PDOException)#20 (8) { ["message":protected]=> string(101) "SQLSTATE[2800 0] [1045] Access denied for user 'root'@'aventino.ilmessaggero.it' (using password: YES)" ["string":"Exception":private]=> string(0) "" ["code":protected]=> int(1045) ["file":protected]=> string(54) "/Array/httpd/sigweb/php/classes/Gen/GenMySqlDB_PDO.php" ["line":protected]=> int(19) ["trace":"Exception":private]=> array(5) { [0]=> array(6) { ["file"]=> string(54) "/Array/httpd/sigweb/php/classes/Gen/GenMySqlDB_PDO.php" ["line"]=> int(19) ["function"]=> string(11) "__construct" ["class"]=> string(3) "PDO" ["type"]=> string(2) "->" ["args"]=> array(3) { [0]=> string(43) "mysql:host=scrivilatest;dbname=younews_Test" [1]=> string(4) "root" [2]=> string(10) "a*co*****" } } [1]=> array(6) { ["file"]=> string(61) "/Array/httpd/sigweb/php/classes/Controller/PageController.php" ["line"]=> int(32) ["function"]=> string(11) "__construct" ["class"]=> string(14) "GenMySqlDB_PDO" ["type"]=> string(2) "->" ["args"]=> array(4) { [0]=> &string(12) "scrivilatest" [1]=> &string(4) "root" [2]=> &string(10) "a*co*****" [3]=> &string(12) "younews_Test" } } [2]=> array(6) { ["file"]=> string(49) "/Array/httpd/sigweb/php/lib/zaphpa/zaphpa.lib.php" ["line"]=> int(73) ["function"]=> string(11) "__CONSTRUCT" ["class"]=> string(14) "PageController" ["type"]=> string(2) "->" ["args"]=> array(0) { } } [3]=> array(6) { ["file"]=> string(49) "/Array/httpd/sigweb/php/lib/zaphpa/zaphpa.lib.php" ["line"]=> int(704) ["function"]=> string(11) "getCallback" ["class"]=> string(20) "Zaphpa_Callback_Util" ["type"]=> string(2) "::" ["args"]=> array(2) { [0]=> &array(2) { [0]=> string(14) "PageController" [1]=> string(7) "getPage" } [1]=> &string(0) "" } } [4]=> array(6) { ["file"]=> string(34) "/Array/httpd/sigweb/php/RS/api.php" ["line"]=> int(30) ["function"]=> string(5) "route" ["class"]=> string(13) "Zaphpa_Router" ["type"]=> string(2) "->" ["args"]=> array(0) { } } } ["previous":"Exception":private]=> NULL ["errorInfo"]=> NULL } Errore nella connessione al DB, provare più tardi
Parametri: [email protected] – a*co***** (oscurata per ovvie ragioni)
La connessione sul database con utente root in termini di sicurezza non è proprio il massimo.
### FULL DISCLOSURE STORY ###
# 12-05-2015 Invio mail di richiesta contatto a [email protected]
# 14-05-2015 Risposta dal supporto aperto ticket id 5052 (avevo chiesto un contatto di un responsabile)
# 14-05-2015 Comunicazione vulnerabilità a responsabile IT cedsdigital.it
# 14-05-2015 Ho chiesto contatto al responsabile IT di cedsdigital.it dei responsabili IT del IlMessaggero ma non ha voluto darmeli, li ha però messi in copia nascosta in una mia email.
# 19-05-2015 Nessuna risposta.
# 28-05-2015 Inviata email con richiesta contatti tecnici a [email protected] , [email protected]
# 30-05-2015 Nessuna risposta
# 06-10-2015 Full disclosure
Comments by Fabio Natalucci
Postfix: come configurare smtp esterno
Perfetto! Sono contento che ti sia stata utile.