Carte di credito online ed insicurezza delle aree private
Posted on maggio 7, 2010
Filed Under Cms, Protezione Password | Leave a Comment
L’articolo e’ volto ad analizzare un caso reale di un sito turistico che permette la prenotazione online tramite l’uso della carta di credito ed a mettere in guardia gli utenti dall’uso sconsiderato della propria carta di credito senza preoccuparsi dei rischi che si corrono in questo semplice gesto ormai molto comune.Girovagando per la rete talvolta si finisce in siti di strutture turistiche (Alberghi, Agriturismi, Case vacanza, B&B) che mostrano ben evidenti dei link “Admin Area” o “Amministrazione” o quant’altro che riportano al pannello di gestione privato realizzato ad hoc per gestire le news, il guestbook, le prenotazioni e quant’altro il commerciale sia riuscito a vendere alla struttura turistica di turno.
Incuriositi clicchiamo sul link per vedere chissa’ cosa ma, tipicamente, veniamo interrotti da una bella pagina in PHP con una schermata di login come questa:
Sempre incuriositi inseriamo nel campo Login la scritta “login” e nel campo Passowrd la scritta “password” ma ahime’ il sistema ci risponde correttamente:
password e/o username errati
Tutto corretto ma chissa’ magari possiamo provare con altre coppie che ci potranno aiutare nell’impresa ed ecco che proviamo la coppia admin – 12345 ma nulla, il sistema e’ solido…forse!
Proviamo ad inserire un solo carattere ed il sistema ci avverte che occorrono un minimo di due caratteri ma anche questa informazione non ci aiuta e la curiosita’ intanto aumenta…
Capita pero’ che i controlli talvolta non vengano fatti adeguatamente ed allora proviamo ad inserire la coppia:
‘ ups
‘ ups
Ed il sistema non ci informa che i dati non sono esatti ma riporta uno “strano” messaggio come questo:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ups’ AND password = ’09190fa1131edbe7e875f6958e6e1d3a’ AND id_hotel=’1” at line 1
Ehh pero’ e’ proprio dura, la password sembra criptata, noi abbiamo inserito “‘ ups‘ non quella stringa ma poco ci importa; sappiamo per certo che l’errore e’ tra ‘ups’ AND …. uhmmm ragioniamo un po’ su quello che e’ successo.
Il sistema ha preso i nostri dati e per cercare l’esistenza dell’utente nella tabella di cui non sappiamo il nome ha fatto una query tipo questa:
SELECT * FROM $nomeTabella WHERE username = ‘ups’ AND password = ’09190fa1131edbe7e875f6958e6e1d3a’ AND id_hotel=’1′
dove $nomeTabella e’ il nome della tabella di tutti gli utenti, ups e’ il dato da noi inserito e 09190fa1131edbe7e875f6958e6e1d3a e’, probabilmente, l’hash ottenuto dalla password inserita!
La voglia di vedere questo pannello e’ sempre viva e ci fa pensare che se lo sviluppatore avesse fatto una query del tipo:
SELECT * FROM $nomeTabella WHERE 1=1;
sarebbe stato “perfetto” perche’ 1 e’ sempre uguale ad 1, non trovi ?
Ma il programmatore e’ stato “furbo”, ha messo delle condizioni per poter accedere, ossia se login e password non corrispondono non si entra…ma forse si sbagliava!
Torniamo quindi alla schermata di login e capito il sistema proviamo ad inserire questa coppia come login e password:
‘ OR 1=1 OR ‘
‘ OR 1=1 OR ‘
Magia ? No, semplice disattenzione, abbiamo semplicemente modificato la query come volevamo noi, ossia:
SELECT * FROM $nomeTabella WHERE username = ‘‘ OR 1=1 OR ‘‘AND password = ’09190fa1131edbe7e875f6958e6e1d3a’ AND id_hotel=’1′
et voila’ ecco garantito l’accesso al pannello di gestione. Disastro!!!
Soddisfatti vediamo che si possono gestire davvero un sacco di cose: i listini, i magazzini, le lingue e le prenotazioni.
Questa parte ci incuriosisce particolarmente anche per avere una statistica di base su quante prenotazioni ha ricevuto nulla piu’. Andiamo a cercare il periodo che ci interessa et voila’ ecco l’elenco delle prenotazioni. Sempre incuriositi andiamo a vedere il dettaglio della prenotazione e scopriamo con grande imbarazzo un dettaglio che ci coglie impreparati, giudicate voi:
Il disastro e’ giunto a livelli cosmici! Oltre ad avere tutti i dati del cliente son presentati a video tutti i dati della carta di credito! Disastro!!! Immaginate se l’utente, ignaro di tutte si sentisse telefonare da uno sconosciuto che gli annuncia:”Buonasera, ho trovato online questa carta di credito con numero 1234…. con scadenza mm/yyyy: le risulta per caso che sia una VISA ?“, come minimo svenirebbe!
Il tutorial e’ volto solo a far capire come talvolta la scelta di un CMS personalizzato possa causare piu’ danni dei CMS Open Source se i dati non vengono correttamente validati prima di essere utilizzati.
E’ bene sapere che inviare i dati della propria carta di credito online non e’ sempre una buona cosa ma, ahime’, puo’ essere fonte di notevoli problemi ed ammanchi economici di non poco conto.
Others Script adv
Leave a Reply

