Università degli Studi di Modena e
Reggio Emilia
Facoltà di Ingegneria – Sede di Modena
Corso di Laurea in Ingegneria Informatica – Nuovo Ordinamento
Analisi e Contromisure di
tecniche di Sql Injection
Relatore:
Prof. Sonia Bergamaschi
Correlatore:
Ing. Francesco Guerra
Candidato:
Jacopo Canese Nobili Spinetti
Obiettivi:
- Analisi e classificazione delle tecniche di Sql Injection.
- Studio delle possibili contromisure.
Approfondimento delle injection in linguaggio Transact-Sql e
delle misure di sicurezza in linguaggio ASP.NET.
Attività sperimentale:
- Verifica della sicurezza del sito Web della Facoltà.
- Sperimentazione delle tecniche su di un'applicazione Web di prova.
- Implementazione di diverse misure di sicurezza.
Cosa sono le Sql Injection:
- Riguardano la sicurezza delle applicazioni Web Database.
- Consistono nell'inserimento ed esecuzione di codice Sql
non previsto all'interno di una pagina web dinamica.
- Sfruttano caratteristiche proprie del linguaggio Sql come
le regole sintattiche e la loro flessibilità.
- Per la loro esecuzione è sufficiente l'utilizzo di un
qualunque browser web (sfruttano normali richieste HTTP).
Un semplice esempio:
- Query sottoposta al Database:
SELECT campoStr FROM tabella
WHERE chiave = 'stringa';
- stringa=
X’ OR ‘X’=‘X
SELECT campoStr FROM tabella
WHERE chiave = 'X’ OR ‘X’=‘X';
- Il significato della query è stato alterato.
Classificazione delle tecniche:
- Tecniche di SQL injection di base
Principi di base con i quali vengono realizzate tutte le
altre tipologie di injection.
- Tecniche di SQL injection avanzate
Injection più complesse, che riguardano operazioni sul database.
- Tecniche di investigazione di base
Osservazioni preliminari del sistema da attaccare.
- Tecniche di investigazione avanzate
Usate per ottenere informazioni contenute nel database.
- Tecniche di Blind SQL injection
Injection “alla cieca”, in assenza di messaggi d'errore.
Contromisure:
- Validazione dell'input
If (not Regex.IsMatch(numerotess.toString(),"^\d{5}$"))
then %>Errore numero di tessera.<BR><%
else...
5 caratteri di tipo numerico
- Esecuzione di query all'interno di stored procedure
strSQL = "sp_selectStudente"
cmdSP = New SqlCommand(strSQL, cn)
CREATE PROCEDURE sp_selectStudente
@numtess int, @passwd sysname
AS
select * from studenti where numtess=@numtess
and passwd=@passwd
GO
Contromisure:
- Accesso ai dati effettuato da
un utente con bassi privilegi
- Occultamento di
informazioni utili all’hacker
Attività sperimentale:
Tentativi condotti sul sito della facoltà
- Browser web impiegato: Torpark 1.5
http://www.torrify.com
- Pagine su cui sono state effettuate le injection:
Attività sperimentale:
Risultati delle injection sul sito della facoltà
- Non è stato ottenuto alcun risultato significativo.
- Il sito web si è rivelato efficacemente protetto da injection.
Misure di sicurezza intervenute:
- Occultamento dei messaggi d’errore.
- Permessi di accesso in sola lettura.
- Neutralizzazione del carattere apice negli
input.
Conclusioni:
- Realizzata una classificazione completa e flessibile dei
principi di funzionamento delle Sql Injection.
- Analizzate le contromisure necessarie per rendere un’applicazione
web sicura.
- Verificata l'effettiva sicurezza del sito web della facoltà da
attacchi condotti con Sql Injection.
Sviluppi futuri:
- Analisi e sperimentazione delle tecniche di Sql Injection in DBMS
diversi da Sql Server (ad esempio Oracle).
- Sviluppo delle misure di sicurezza con tecnologie diverse da
Microsoft .NET.
Scarica

Analisi e contormisure di tecniche di Sql Injection