Eccoci arrivati a descrivere , come dice il titolo stesso , la tecnica dell’ SQL-Injection.
Questa prima parte la dedicherò alla descrizione e all’ apprendimento della SQL-Injection , ed è per questa ragione che l’ho chiamata SQL-Injection “descrizione e apprendimento”….mentre la seconda parte la dedicherò all’ attacco e e alla comprensione ed al funzionamento di tutti i tool inseriti in backtrack , che appunto riguardano gli attacchi di tipo SQL-Injection , e la chiamerò : SQL-Injection “analisi e attacco”
sperando ovviamente di riuscire a fare una guida , un articolo per due parti in totale , altrimenti ne farò anche tre….casomai immettendo nell’ultimo , per evidenziare magari , la parte riguardante la backtrack….ma cominciamo.
Innanzitutto voglio dirvi che per scrivere questa guida , o meglio quest’ articolo , ho pensato che sia bene installare un webserver , questo perché anche se come cosa è “evitabile” , nel mio piccolo ho intenzione di far capire , (e soprattutto di capire anch’io…:) ) , come funziona realmente un webserver , un database MySQL , e tutte quelle cose che ci girano intorno , altrimenti rischierei di fare una guida che è comprensibile solo per coloro che hanno conoscenza nel campo , e quindi non sarebbe più una guida o una articolo “…dalla A alla Z” , ma solo una descrizione che può essere benissimo presa da Wikipedia , o da molti altri siti in giro per la rete.
Per questo , ho visto tutta la procedura ed ho installato lo Xampp , ( che altro non sarebbe poi che l’insieme di “Apache – PHP – PERL – MySQL“….l’ equivalente “windowsiano” per lo stesso xampp , oppure per il più conosciuto EasyPHP ) , che secondo me , anche se non di fondamentale importanza , riesce meglio a rendere l’ idea diciò di cui io voglio descrivere in quest’articolo.
Installato lo Xampp , ho installato anche il CSM ,(Content Sistem Manager), Joomla! che , può servirci a provare qualche Exploit in futuro , anche se forse Joomla! , è il CSM che di exploit a meno sofferto rispetto agli altri , ma mi sembrava piuttosto facile da installare , ed è molto potente , e dopotutto , credo che se non si parta dalle basi di installazione di strumenti come questi , non si riesce a rendere bene l’ idea di ciò che si vuole ottenere. e comunque per chi volesse può sempre saltare avanti ed arrivare subito alla descrizione dell’ SQL-Injection.
In giro per la rete si trovano molte guide su come installare lo Xampp , , ed il Joomla! , anche se la magiorparte sono di solito riferite all’ installazione su Windows , o per l’ambiente GNU/Linux su Ubunu per chi volesse installarlo su backtrack , questa è una brevissima guida che avevo scritto molto tempo fà , ma che solo oggi pubblico , con un bel copia/incolla.
Quindi per chi volesse , ecco la descrizione per installare lo Xampp ed il CSM Joomla!
Per queste operazioni ho preso spunto dal sito di Apachefriends per lo Xampp , e per Joomla! da queste videolezioni.

Facciamo il download tramite Sourceforge.net , e scaricate il file nella vostra /root , dopodiché procediamo con lo scompattare l’archivio e posizionarlo in /opt
Ho fatto una piccola pubblicità a Sourceforge , sempre fondamentale per tutti noi , ma chi volesse può fare tutto in automatico dando da terminale il comando:
wget -c http://sourceforge.net/project/downloading.php?group_id=61776&use_mirror=surfnet&filename=xampp-linux-1.6.3b.tar.gz&79965514
(scusate la formattazione ma èp tutto attaccato , quindi chi volesse , copia/incolla…)e si ritrova nella propria /root , il proprio archivio di Xampp. Fatto questo procediamo
tar xvfz xampp-linux-1.6.3b.tar.gz -C /opt
Questa procedura installerà Xampp sul nostro sistema e per avviarlo basterà dare questo comando:
/opt/lampp/lampp start
mentre per fermarlo il comando sarà:
/opt/lampp/lampp stop
Ora bisogna configurare la sicurezza del nostro Xampp dando il seguente comando:
/opt/lampp/lampp security
stando attenti a non dimenticare le nostre password per MySQL il lampp ed il resto.
Durante la configurazione vi sarà chiesto se volete rendere accessibile il vostro server da web , a voi la risposta.
Quando farete i vostri lavori salvateli nella cartella:
/opt/lampp/htdocs/
Ora siamo naturalmente in backtrack , ed io consiglio sempre di avviare e di fermare il tutto con i comandi descritti sopra dati tramite Shell…..Konsole , ma per chi volesse può benissimo crearsi un launcher.
per chi lo desidera quindi :
posizioniamoci sul Desktop e con il tasto destro scegliamo l’opzione da menù New—>Create Link To Application… , inseriamo il comando , l’icona , o altri dati utili , se vogliamo una breve descrizione , e infine il nome Xampp. Se vogliamo invece crearci un icona sul menù Start di KDE andiamo appunto sul MenùStart ed appena si apre il menù con il tasto destro scegliamo EditItemMenu e dal gestore di KDE creiamo una nuova voce con NewItem , ancora scriviamo il comando e tutto il necessario , posizioniamo Xampp dove vogliamo , salviamo tramite l’icona, e usciamo dal gestore dei menù di KDE.
Avremo così il nostro webserver avviabile tramite interfaccia grfica.
Attenzione che questa guida è valida solo per backtrack , per tutte le altre distro , il posizionamento e gli stessi comandi cambiano tutti!
Passiamo ora alla verifica , andiamo in Shell , e digitiamo il comando di avvio del nostro webserver con il comando:
/opt/lampp/lampp start
vedremo che la risposta del sistema in konsole sarà la descrizione dell’ avvio del nostro Xampp for LINUX , di PHP-5 e di MySQL , a questo punto con il nostro browser preferito , Firefox per me , digitando nella barra degli indirizzi http://localhost/ riusciamo ad accedere alla pagina di Xampp , naturalmente dopo aver inserito username e password.
Dopo questa breve descrizione passiamo all’ installazione del CSM Joomla! dopodiché inizieremo subito a parlare dell’ argomento come da titolo.
Scarichiamo l’ultima release di Joomla! dal sito di Joomla.it , e una volta scaricato l’archivio estraiamolo e posizioniamolo nel posto in cui ho detto prima inseriamo i nostri lavori del webserver prima creato….e cioé in /opt/lampp/htdocs
Passiamo all’ installazione di joomla!

Joomla! è un CSM totalmente opensource , e in Italia e nel mondo ha un forte appoggio tramite tutte le sue comunità , è potente , e utilizzabile con un estrema facilità.
L’installazione di un CSM quale Joomla! , non è difficile , è abbastanza intuitiva come procedura , ma dobbiamo sempre ricordarci che non solo siamo in ambiente LKinux , ma siamo addirittura in backtrack , quindi dobbiamo seguire la procedura tenendo conto della nostra situazione , ad esempio quella di essere sempre /root , che può essere a seconda dei casi un vantaggio , ma che ci ricorda anche di stare attenti altrimenti possiamo fare degli enormi danni al nostro sistema.
Per installare Joomla! , ci basta entrare nella cartella appena creata con l’ estrazione dell’ archivio tramite Firefox , entrare anora nella cartella Installation ed andare a selezionare , index.php , oppure andare con il nostro filemanager Konqueror , selezionare installation.php e con il tasto destro apri con… e scrivere firefox , che attraverso una procedura guidata , ci guiderà nell’ installazione di Joomla!
Durante l’installazione ci verranno chiesti dei dati , che vanno dal nome del nostro “sito” , alle password da inserire per il database MySQL.
Innanzitutto bisogna controllare la fase di PRE-INSTALLATION , dove ci compariranno le descrizioni di tutte le configurazioni degli script e dei moduli che attualmente si trovano nel nostro databse , tutte le scritte che ci compaiono in rosso , sono da sistemare , io personalmente ne ho travate un paio , ma sono di facile correzione ed alcune addirittura non sono poi così fondamentali , tant’é che una configurazione riguardante il PHPmyadmin è ancora da sistemare , ma per il nostro scopo puramente informativo e quindi più o meno “superficiale” , non crea alcun problema. Assicuriamoci di avere , per coloro che in backtrack si sono creati degli utenti ,(per chì lo desidera qui c’é uno script gentilmente concesso da zogs e “hostato” su evilsocket.net), che non sono quindi /root , di avere per Joomla! tutte le cartelle con permessi in lettura/scrittura , altrimenti Joomla! ci segnalerà le cartelle senza permessi adeguati colorandole di rosso….e noi dovremmo portarle in verde adeguandovi quindi i permessi.
Arriviamo così alla prima schermata che riguarderà l’ accettazione della licenza.
La seconda riguarda invece la configurazione del database MySQL , dobbiamo inserire l’ hostname , la password ed il nome del database MySQL , e l’ estensione da dare alle nostre tabelle , questa ad esempio , io l’ho lasciata di default jos_ .
Arrivati alla 3^ schermata dobbiamo inserire la PATH dell’ installazione che nel nostro caso è: /opt/lampp/htdocs/joomla , inseriamo la nostra email , e la password per l’ amministrazione del database.
A questo punto l’installazione di Joomla! è stata completata con successo , l’importante è che prima di avviare joomla! , si rimuova completamente la cartella di installazione , oppure come io stesso ho fatto , andate a cambiare il nome della cartella da joomla a pippo o come volete chiamarla voi.
Ora , Joomla! è installato , e avendo il nostro webserver in locale , è come se avessimo un vero e proprio sito web , che possiamo personalizzare come vogliamo noi , Joomla! , a merito di tutta la sua comunità , ha ad esempio molte templates , che possono rendere il nostro “sito” , personalizzabile , ma quì vi lascio a voi stessi , altrimenti andrei troppo fuoriluogo.
Adesso , dopo che ci siamo fatti un’ idea di come si installa , di come si avvia e come si usa un webserver , iniziamo con la parte fondamentale dell’ articolo….e cioé con la descrizione della tecnica di attacco , di hacking , che è la SQL-Injection .
Come recita Wikipedia la SQL-Injection è appunto una tecnica di attacco , o hacking , che sfruttando delle vulnerabilità , riesce a colpire le applicazioni web che si trovano su di un determinato host di tipo SQL. Oltre a questo , e questo è il suo vero punto di forza , la SQL-Injection riesce a farci mantenere l’accesso ai dati all’ interno della nostra applicazione web , in questo modo l’ attaccante può ottenere i permessi dell’ admin , amministratore , del server o anche di una intera rete , avendo così , tutto nelle sue mani.
Ma vediamo ora come funziona l’ingresso in un database.
Noi ogni giorno , da quando accendiamo la nostra macchina , (intesa come Pc , e sempre per coloro che la spengono naturalmente) , eseguiamo un’infinità di accessi , anche se non sono sempre esplicabili nel caso che stiamo studiando ora , sono pursempre degli accessi , che vengono eseguiti da noi utenti e ricevuti dalla nostra stessa macchina e , quando siamo in rete , dai database…server , host , chimateli come volete.
Ora , un database , per arrivare alla decisione di farci entrare oppure no , e con i vari permessi , utilizza due script , eseguiti da noi che vogliamo entrarvi.
Gli script sono 2 , e insieme formano quello che è il nostro “login” , cioé l’insieme della procedura che un determinato database esegue , con intervento umano , per caratterizare l’ingresso o meno dell’utente che richiede l’ accesso.
Quando noi eseguiamo un accesso su di un server veniamo riportati tramite il nostro browser davanti ad una finestra che ci chiede delle informazioni , che sono:
1) username
2) password
Tramite queste informazioni il database riceve i dati da noi inseriti , per poi memorizzarli sottoforma di variabile , naturalmente dopo che lo stesso ha acconsentito oppure no , al nostro ingresso.
La “finestra” che ci compare davanti , è fatta generalmente dei 2 script di cui abbiamo parlato prima , e che sono scritti il primo in html ovvero il “form.html” ed il secondo in php , il “login.php“.

Secondo il numero ed il tipo di caratteri che noi inseriamo nei due campi , il database esegue o no l’ accesso…ma vediamo in base a cosa:
Il database trasporta i dati da noi inseriti all’ interno dello script “form.html” , (…la finestra) , all’interno di una memoria , e lo fa tramite il “login.php” , che tiene poi le due stringhe in due variabili ( $_POST['user'] ; $_POST['pwd']) . In base al contenuto di queste due variabili il database effettua una ricerca , chiamata “query” , al suo interno , e se trova le stringhe corrispondenti , ci fa entrare , assegnandoci i corrispondenti diritti di accesso , altrimenti no , e ci rimanda di nuovo davanti alla finestra di login.
Fino a quì , nessun problema , prassi di tutti i giorni , ma vediamo ora cosa può succedere se vogliamo l’ accesso al database senza possedere quelle due stringhe , che altro non sono che username e password.
Comiciamo dicendo che un programmatore quando esegue uno script , lo fa per gli scopi prestabiliti , nel senso che se fa lo script del form.html , si preoccupa di fare in modo che possa entrare solo la persona che possiede username e password , e basta. Ma se noi siamo a conoscenza del linguaggio del database ovvero l’ SQL , possiamo interagire con lo stesso database , e da quì parte quella che è definita la tecnica dell’ SQL-Injection. La tecnica hacking in questione prende il suo stesso nome dal procedimento in questione , ovvero: l’ iniezione di dati e valòori alterati all’ interno del database stesso , in modo che con l’ inserimento di questi dati , si possa inetragire con il database MySQL , attraverso la query che il database effettua per ricercare e poi comparare i valori inseriti dall’ utente con quelli residenti al suo interno.
Ma vediamo adesso uno dei principi dell’ Inject , e cioé l’ “alterazione dei dati”, perché è in base a questi principi che si possono eseguire tecniche di “iniezione” non conformi alle regole , ma vediamo come:
La cosa importante è sapere che il database SQL non ha alcuna “responsabilità” se così può essere definita , a riguardo , perché ad eseguire le nostre stringhe , sarà un linguaggio , se quindi noi ci comportiamo di conseguenza , e cioè usando lo stesso linguaggio possiamo fare in modo di interagire con la query stessa.
Un esempio , abbastanza remoto preso da wikipedia sempre , è quello che se noi all’ arrivo dello script form.html invece di inserire “username” e “password” inseriamo una stringa come ad esempio questa:
123′ OR ‘1′=’1
lo script in php , prende i dati dal form.html , e ne esegue una query che però anche se non contiene username e password , tramite la riga scritta sopra va ad incidere lo stesso sul database , infatti questo è il risultato in linguaggio SQL:
SELECT * FROM users WHERE user=’root’ AND pwd=’123′ OR ‘1′=’1′
(dove il valore 1 descrive l’accesso , e lo 0 -zero- , il rifiuto dello stesso , e visto che 1 , è sempre uguale a 1 , il database ci garantisce l’ accesso)
ma perché ci troviamo davanti a questa stringa se abbiamo scritto solo 123′ OR ‘1=’1???
Perché il controllo viene effettuato dalla query , ma solo per il riconoscimento delle stringhe , nessun controllo viene effettuato ai dati che l’ utente inserisce.
Sapendo quindi un pò di linguaggio web e dei database SQL , si riesce ad interagire con il database stesso.
Naturalmente abbiamo fatto una sola descrizione , questa è una delle stringhe a cui è stato posto rimedio già da moltissimo tempo , la vera arte sta nello scoprire sempre nuove stringhe in SQL che generano nuove vulnerabilità , in modo da comunicarle al più presto agli addetti e contribuire alla sicurezza della rete tutta.
È ovvio dire che per scoprire nuove vulnerabilità , occorre conoscere dei linguaggi di programmazione , solo in questo modo ovviamente si puossono trovare delle vulnerabilità da sfruttare , è inutile andare in giro per la rete a cercare stringhe create da altre persone , in questo modo anche se è possibile entrare e quindi sfruttare delle vulnerabilità di qualche webserver non aggiornato , non si arriverà mai allo scopo di capire veramente ciò che si fà , e quindi di conseguenza non si contribuisce allo sviluppo della sicurezza , e comunque , di solito , quando si scoprono nuove stringhe efficaci , dopo pochissimo tempo , fortunatamente , gli admin attenti pongono il loro rimedio.
in backtrack2 , ci sono molti strumenti che riguardano le tecniche di SQL-Injection , se andiamo nel MenuStartKDE—>backtrack—>VulnerabilityIdentification—>”…” , possiamo trovare più voci che appunto sono state create dagli sviluppatori per testare la sicurezza su vari tipi di database , con tool del calibro di “SQL-Inject – SQLninja – SQLnix – SQLbrute“
Oltre a questo , abbiamo degli scanner di SQL , come ad esempio lo stesso SQLscanner. Tramite tutti questi strumenti noi poossiamo identificare nuove vulnerabilità , e dopo aver effettuato i nostri test porre quindi gli eventuali rimedi.
All’interno del <back|track~BOX , inserirò , per lo scopo in questione , una raccolta di SQL-Injection , che sono prese in giro per la rete e da siti amici , come ad esempio SecurityBox.
Quindi per effettuare delle SQL-Injection , bisogna assolutamente conoscere il linguaggio SQL , o almeno le caratteristiche e i comandi essenziali. un metodo , che personalmente non ho ancora testato , per poter apprendere il più possibile sul campo della websecurity è quello di installarsi uno strumento come il WebGoat , della OSWAP.
Questa notizia l’ ho appresa dal sito di IronGeek , che ha realizzato un video-guida per l’installazione di WebGoat in ambiente Windows , io ne ho fatta una tutta mia per installare WebGoat , su backtrack.
Cos’é il WebGoat? , ed in quale modo può rendersi utile allo scopo che ci interessa maggiornmente ora? Vediamo:
Innanzitutto dedichiamo qualche riga all’ OSWAP , ovvero “Open Web Application Security Project” , che è una comunità molto attiva , che ha lo scopo di diffondere tramite i suoi progetti opensource , la websecurity , attraverso progetti come il WebGoat , fà in modo che gli utenti riescano ad apprendere le nozioni principali della sicurezza.
Il WebGoat è , a mio avviso , un ottimo strumento , che permette ad ogni utente volenteroso di apprendere il più possibile sul campo.
WebGoat è scritto in Java , e quindi può essere avviato su una Java Virtual Machine che ospiti un application server J2EE compliant. Nel nostro caso , sulla nostra backtrack , installeremo il TomCat , tre programmi (due moduli *.mo e un *.tgz) , che ci permetteranno di avviare ed utilizzare il WebGoat.
Innanzitutto tramite i repository di Slacky.eu , scarichiamo il pacchetto JDK.tgz
Dopodiché dalla pagina di download di slax , scarichiamo il modulo per Java , e chi vuole per Java_developpment
Una volta fatti i download , da Shell , date il comando :
installpkg nomepacchettoJAVA.tgz
assicurandoci di essere root e nella corretta directory , per chi vuole fare come me , si apra la Shell , direttamente dentro la directory in cui si è scaricati il pacchetto , e dopo aver dato installpkg trascinate il *.tgz fin dentro la konsole , date l’ invio , e aspettate il termine dell’ installazione.(Naturalmente se siete root , il download , se non avete cambiato le cose in precedenza , viene fatto direttamente in /root , e non vi servirà nemmeno di cambiare directory per fare queste operazioni).
Per i moduli invece stessa procedura di sempre , in konsole date i comandi:
mo2lzm nomepacchettoJAVA nomepacchettoJAVA.lzm *** da fare per tutti e due i moduli ***
Una volta covertiti i moduli in *.lzm , date i comandi
lzm2dir nomepacchettoJAVA.lzm / *** da fare per tutti e due i moduli ***
una volta effettuate queste operazioni scaricate tramite Sourceforge.net l’archivio di WebGoat (ovviamente quello per UNIX) , ed estraetene il contenuto in una cartella che può essere ad esempio: /usr/local
Una volta eseguita l’estrazione di WebGoat , andiamo ad aprire con il nostro editor di testi preferito , ad esempio kate , il file webgoat.sh , e al suo interno alla riga con il seguente contenuto :
JAVA_HOME=”Set me to a Java 1.5 JDK install”
cambiate la PATH secondo la vostra installazione , che in backtrack altro non può essere che:
JAVA_HOME=/usr/lib/jre1.5.0_09
Naturalmente il nome dipende dalla versione di Java che avete installato , ma se avete scaricato i pacchetti che ho linkato in quest’ articolo , non possono esserci dei dubbi.
Una volta fatta questa operazione , apritevi una Shell , e digitate:
sh webgoat.sh start80
In questo modo farete partire il webserver TomCat e con WebGoat , e per incominciare ad apprendere tramite le lezioni di WebGoat , vi basterà andare con Konqueror o Firefox all’ indirizzo seguente dopo aver inserito username e password “guest” e “guest“
http://127.0.0.1:80/ WebGoat/attack/
Per fermarlo , ovvio:
sh webgoat.sh stop
Siamo così arrivati alla fine dell’ articolo.
Quest’articolo l’ho fatto per crearmi , e per creare in chi volesse leggermi , un’idea ben precisa di quello che può essere la tecnica dell’ SQL-Injection , senza alcuna dimostrazione e senza l’ uso alcuno dei tool che ci mette a disposizione la backtrack , appena posso lo farò , per adesso mi accontento di aver creato , almeno spero , una idea chiara e precisa di del tema trattato , anche perché credo che non si possa capire come creare un SQL-Injection , senza sapere com’ è strutturato un webserver , e credo , tramite l’ installazione di WebGoat in backtrack , di aver messo a disposizione una guida all’ uso di uno strumento molto valido , che per coloro che , come me , vogliono apprendere il più possibile , è una cosa fondamentale. Naturalmente non posso non linkare il manuale del PHP e SQL
Spero di avere il tempo necessario a fare un articolo sull’ uso degli strumenti presenti in backtrack , e che riguardano l’uso dei tool inseriti nella backtrack , sperando di riuscirci , in locale , tramite i webserver e i pacchetti installati e che ho descritto in quest’ articolo.
Intanto , visto che ho scelto il CSM joomla! , per chi volesse studiarsi degli Exploit , cliccando sull’ immagine quì sotto verrete riportati alla pagina di milw0rm.com , con i risultati di ricerca per le vulnerabilità sui componenti di joomla! Vi basterà inserire nella barra di ricerca la parola”joomla“.
Noi ci vediamo alla seconda parte dell’ SQL-Injection , riguardante appunto l’ “analisi e attacco”
5 Commenti
Commenti RSS TrackBack Identifier URI
Lascia un commento






![«Back|Track-[IT]](http://www.ethicalhacker.net/images/stories/features/root/bt3_150.jpg)



















bellissima guida..i miei più sentiti complimenti…
HANKU
grazie!
[...] SQL-Injection -pt.1/3- “descrizione e apprendimento”back|track~box!crack wep-64bit con la suite “Aircrack-ng”.Vulnerabilità in “the [...]
Bravo, bella guida…dettagliata intuitiva e completa.
[...] ottimo per apprendere la tecnica di intrusione dell’ SQL-Injection , (di cui ho già scritto quì), ma una volta installato il Java ci permette di fare molte cose tra cui ad esempio la compilazione [...]