x

ATTACCO DA WEB

 

Aspetti legali (D.lgs 196/03 e BS 7799)
indietro
avanti

SICUREZZA INFORMATICA SUL WEB
by Nanni Bassetti

L'ATTACCO PER RUBARE DATI DA WEB

 

Simuleremo un attacco per rubare dati ad un sito web, così facendo possiamo capire quali sono le contromisure da adottare.

 

Immaginiamo di essere interessati ad un sito che contiene e vende le informazioni di tutte le aziende italiane produttrici di pasta e che noi le vogliamo per inserirle nel nostro archivio e riutilizzarle per i nostri scopi.

IL SITO TARGET: http://www.pastax.it/

questa è l'home page grafica accattivante, molti link ecc. ecc. ma ciò che balza all'occhio è la textbox del motore di ricerca, CERCA L'AZIENDA PER PAROLA CHIAVE

scriviamo BARI ed ecco uscire una lista di aziende cliccabili:

http://www.pastax.it/lista.asp

oppure

http://www.pastax.it/lista.asp?key=bari

oppure

http://www.pastax.it/lista.php con la sua variante http://www.pastax.it/lista.php?k=bari

oppure altre varianti a seconda del linguaggio di sviluppo del software del motore di ricerca.

Clicchiamo sul nome di una azienda e vediamo una scheda azienda minima senza i dati sensibili che ci interessano: telefono,fax, certificazioni varie, indirizzo, ecc. ecc.

Con un tasto o link che ci invita a comprare quell'informazione o a sottoscrivere un abbonamento per ottenere l'accesso alle schede complete.

http://www.pastax.it/scheda.asp o http://www.pastax.it/scheda.asp?id=12

(omettiamo gli altri linguaggi php,cfm, ecc. per semplicità)

A questo punto abbiamo tutto quello che ci serve, conosciamo il linguaggio di programmazione, sappiamo che c'è un database alle spalle non resta altro che scovare il sistema per avere tutti i dati.

 

PRIMA PROVA:

 

Utilizziamo tutti i bachi noti del linguaggio usato (in questo caso ASP Active Server Pages), infatti ci sono alcuni server administrator che non hanno istallato tutte la patch rilasciate dalla Microsoft per rendere invisibile il codice asp e quindi se magari il ci riusciamo possiamo leggere che tipo di database usano e in quel caso abbiamo un'informazione in più che poi vedremo come usare.

Se non funzionano i bugs allora proviamo a scassare la query del motore di ricerca così capiremo dal messaggio di errore che tipo di database c'è dietro

Ecco come fare :

nella textbox di ricerca proviamo ad inserire un numero dispari di apici " ' ", perché alcuni programmatori dimenticano di difendersi dall'apice che rompe la stringa della query sql usata nello script esempio: sql="select * from aziende where key='"&request("k")&"'" se la nostra k è BARI la query che sarà eseguita dal motore di ricerca sarà: select * from aziende where key='Bari' ma se la nostra k=' allora avverrà questo select * from aziende where key=''' che per l'inteprete asp è un errore dato che è come se fosse key='' (a vuoto) e poi un ' solo soletto nella stringa sql quindi avremo un errore del tipo:

Microsoft OLE DB Provider for ODBC Drivers errore "80040e14'

[Microsoft][Driver ODBC Microsoft Access] Errore di sintassi nella stringa nell'espressione della query 'key=''''.

E abbiamo scoperto che il database è MS Access, il famoso database su file…ma se è un file allora si può scaricare !

Infatti uno degli errori più comuni è quello di inserire il database in una cartella del server servita dal web server a volte nella stessa cartella in cui ci sono le pagine web che stiamo navigando così basterà indovinare il nome del database e scrivere nella barra degli indirizzi l'URL:

http://www.pastax.it/aziende.mdb e come per magia vedrete apparire la finestra del browser che vi chiede se volte scaricare il file e quello è il momento più eccitante, perché da quel punto in poi avrete tutto quello che vi serviva senza aver pagato un soldo e senza essere entrati in un server, ma semplicemente avendo sfruttato la superficialità dei creatori del sito.

Analizziamo la situazione appena vista:

primo errore l'apice, potrebbe non funzionare, infatti bastava inserire nel codice sorgente del motore di ricerca lista.asp la seguente istruzione: key=replace(key,"'","''") , cioè rimpiazza ogni apice nella stringa key con un doppio apice e la query non avrebbe generato errori.

Diciamo la verità ogni programmatore appena più furbo di un novellino lo fa, anche perché altrimenti sarebbe stato impossibile cercare aziende in città come L'AQUILA !!!!!!

CONTROMISURA: rimpiazzare l'apice col doppio apice nello script oppure rimpiazzare l'apice con l'apice rovescio Es. in VBScript: Replace(stringa, "'", CHR(96))

 

SECONDA PROVA:

Allora potremmo provare a far generare un errore dalla scheda, ricordate che se ciccavamo sul nome di un'azienda appariva http://www.pastax.it/scheda.asp?id=12 ?

Quello id=12 serve a generare la query sql che deve andare a prelevare il record numero 12 dal database delle aziende per visualizzare solo i campi che il programmatore ha deciso di far vedere all'utente non pagante.

Che fare ? perché non provare a scrivere http://www.pastax.it/scheda.asp?id=ciccio e vediamo che succede.

La cosa più probabile è che si genere un errore simile a quello dell'apice, questo perché il campo id del database è di tipo numerico e noi abbiamo passato la stringa "ciccio" quindi si il motore sql rileva un errore di type mismatch (errore di formato di dati) e quindi capiamo di nuovo il tipo di database usato.

Qualcuno di voi potrebbe obiettare e se invece che su stringa i dati fossero passati in metodo POST ? ossia con i tasti ed i <form></form> ?

Infatti precedentemente abbiamo visto che la situazione poteva apparire così:http://www.pastax.it/scheda.asp

Qui la situazione è già più complicata, ma non insormontabile, basterà creare un clone della pagina col tasto di invio e salvarla sul proprio computer, avendo l'accortezza di cambiareaction="scheda.asp" con action="http://www.pastax.it/scheda.asp", dato che se non lo faceste il form tenterebbe di inviare i dati al file scheda.asp del vostro computer, ma voi non avete alcun file scheda.asp sul vostro pc :

<html>
<body>
<form action="
http://www.pastax.it/scheda.asp" method="post">

<input type=hidden name="id" value="12">
<input type=submit value="Visualizza scheda">
</form>

</body>
</html>

Alla pressione sul tasto "Visualizza scheda" il form invierà i valore della variabile ID al file scheda.asp presente sul sito http://www.pastax.it/ però se voi cambiate il value="12" invalue="ciccio" otterrete l'effetto descritto precedentemente.