Gianluca's profile..::Il Tessitore di Sogn...PhotosBlogListsMore ![]() | Help |
|
December 12 IMMUNE SQL INJECTION SYSTEMImmune Sql Injection System
L'altro giorno cazzeggiando in classe mi è venuta in mente un idea brillante: un semplicissimo sistema per immunizzare completamente un sito web dinamico, che utilizza un server MySql per la gestione dei dati sensibili, da qualsiasi attacco SqlInjc!
Non ho ancora avuto modo di testare il sistema dal punto di vista pratico, solamente perchè non ho la minima voglia di mettermi davanti il computer a programmarlo... ho di meglio da fare ;)!
Cmq vi spiego il sistema di modo che, chi ha tempo lo possa applicare sul proprio sito o sul cms che utilizza.
Il sistema dovrebbe essere efficace e duraturo nel tempo, qualsiasi critica o ottimizzazione è ben accetta sulla mia casella mail: sprite_lol@hotmail.com.
Il concetto:
Quando noi igniettiamo del codice Sql in una variabile successivamente elaborata dal webserver non facciamo altro che modificare la query che verrà lanciata sul server MySql, e questo lo sappiamo tutti, ma l'unica cosa che possiamo fare per accedere ai dati sensibili (quali pwd dell'admin e user dell'admin) è unire una seconda query ad una di tipo SELECT già esistente, attraverso la funzione UNION SELECT, che ci permetterà quindi di andare a selezionare altri dati su un altra tabella o sulla medesima, per poi riportarli in output sul nostro schermo per così leggere i dati riservati che ci interessano.
La soluzione:
Semplice, non mettiamo i dati importanti sul database... "Bravo così sanno farlo tutti!" E invece no, non è semplice come si crede, perchè salvando i dati su un file all'interno dell'ftp si renderebbe vulnerabile il nostro sito: permettendo ad un attaccante di accedere direttamente al nostro file, soprattutto in un cms dove la path del file sarebbe resa pubblica a chiunque legga il sorgente delle pagine php.
Qundi si può operare in questa maniera, fare uno script in php che durante l'installazione del cms generi una stringa casuale, che verrà usata per dare il nome ad una cartella, poi si potrebbe ripetere l'operazione n volte per creare di volta in volta sottocartelle con nomi casuali, successivamente verrà generato un nome casuale per il file, l'estenzione sarà ".php" e il contenuto sarà sotto forma di commento, di modo che se si rintracciasse la path del file non si potrà comunque conoscere il contenuto.
Quindi otterremo una path del genere: "gfFG56GF/Lkj23sdd/457ghgfTR/ghU7Hgh/nome_file_casuale.php" impossibile da ricostruire.
Andremo dunque a mettere le password di amministrazione in questo file, magari criptate.
Ora non ci resta che modificare le nostre pagine di login e fargli fare il controllo della passw utilizzando il nostro file e non il database.
Ovviamente lo script deve sapere dove è situato il file all'interno dell'ftp... noi non faremo la cazzata di scrivere la path del file in una variabile all'interno del database, altrimenti una semplice SqlInj manderebbe tutto a pu*****, ma inizializzeremo una variabile con la path del file direttamente nello script in php, magari in un file con le varie configurazioni del sito (es. config.php) da includere successivamente nelle pagine che ne hanno bisogno.
Ora qualsiasi SqlInj proveranno nel nostro sito sarà vana xkè tanto non ci sono i dati sensibili da rubare, nel nostro database. Questo sistema è molto utile a chi utilizza un cms, in quanto il 90% degli attacchi utili a quei sistemi sono SqlInj!
Inoltrerò questo articolo a i migliori team di cms come: PhpBB, PhpNuke, vBullettin, Joomla, IPB, ecc. Sperando che lo applicheranno nelle prossime release.
Per il momento aspetto commenti utili.
[+]msn: sprite_lol@hotmail.com TrackbacksThe trackback URL for this entry is: http://spritelol.spaces.live.com/blog/cns!898145B27A49CF93!570.trak Weblogs that reference this entry
|
|
|