Tecniche: SQL Injection

20 marzo 2006

<< Le dita dell’hacker scorrono veloci sulla tastiera, il form di autenticazione web non è un problema. Non conosce username e password, non gli servono: pochi secondi, tre battute sulla tastiera e il sistema è completamente nelle sue mani. “Good Morning, Administrator!”, recita la nuova schermata. Non sono così sicuro che sarà una buona giornata per l’amministratore, pensa l’intruso fra sé. >>

Se pensate che una cosa simile possa accadere solo al cinema, vi ricrederete: questa scena viene girata ogni giorno decine, se non centinaia di volte, a causa di una delle tecniche di hacking del web più diffuse: la SQL injection. L’introduzione romanzata non esagera riguardo alla semplicità con cui un aggressore può oltrepassare i login messi a protezione delle nostre applicazioni web: è davvero questione di secondi.

Molti già conosceranno SQL (Structured Query Language), uno dei principali linguaggi usati per interagire con i database. Le pagine web dinamiche ASP e PHP (ma non solo) lo utilizzano con successo per memorizzare e manipolare le informazioni. L’insieme di dichiarazioni SQL inviate al database per ottenere una risposta si indica con il termine query (interrogazione). Le query possono modificare la struttura del database – ad esempio eliminando una tabella – oppure manipolarne il contenuto.

Un particolare dialetto utilizzato dal database Microsoft SQL Server è il Transact SQL. Per approfondire la conoscenza del linguaggio, uno dei più diffusi nelle pagine ASP (che sono maggiormente vulnerabili alla tecnica che stiamo per esporre), consultiamo il Corso T-SQL su Asp di HTML.it.

Ora possiamo capire con facilità a cosa si riferisce il nome dato alla tecnica: la SQL injection consiste nell’inserimento di query T-SQL e nella modifica di interrogazioni già esistenti nelle pagine dinamiche, così da far compiere all’applicazione un’azione del tutto imprevista.

Pensiamo all’esempio di un campo di autenticazione molto comune, come il login alla nostra webmail. Normalmente inseriamo username e password per poter leggere la posta elettronica. Lo script si collega al database, verifica le nostre autorizzazioni e ci consente l’accesso. Tutto questo tramite interrogazioni SQL. Ma cosa succede se un utente malizioso inserisce caratteri propri del linguaggio T-SQL (ad esempio l’apostrofo , il doppio trattino , il punto e virgola ;)? Con ogni probabilità, se la pagina ASP non prevede la validazione dell’input, l’aggressore può modificare la query a suo piacimento.

Naturalmente non basta una virgola per far cadere il sistema nelle mani dell’aggressore, ma è un buon punto di partenza. Modificando le query, come vedremo più avanti, è possibile avere accesso ad alcuni dati senza autorizzazione, eludere i sistemi di autenticazione e addirittura far eseguire veri e propri comandi al server web (ad esempio un listato delle directory, o una lettura del registro di Windows).

Se vuoi aggiornamenti su Tecniche: SQL Injection inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Tecniche: SQL Injection

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy