Gianluca's profile..::Il Tessitore di Sogn...PhotosBlogListsMore Tools Help

Blog


    December 12

    IMMUNE SQL INJECTION SYSTEM

    Immune 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.

    Comments

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    Trackbacks

    The trackback URL for this entry is:
    http://spritelol.spaces.live.com/blog/cns!898145B27A49CF93!570.trak
    Weblogs that reference this entry
    • None