SlideShare une entreprise Scribd logo
1  sur  22
Vulnerabilità web
                Sql injection


19 maggio        Massimo Fornari – SQL Injection   1
Vulnerabilità web
    Si dividono in:
•   Cross-site scripting
•   SQL injection
•   Broken authentication
•   Information leakage

    Sono dovuti a scarsa attenzione degli sviluppatori



    19 maggio            Massimo Fornari – SQL Injection   2
Statistiche di vulnerabilità



                                                     Il problema risulta
                                                     evidente dal grafico




19 maggio          Massimo Fornari – SQL Injection                   3
Cross-site scripting (XSS)
• Inserisce script malevoli all’interno delle pagine
  tramite:
   – Form di immissione
   – Campi di ricerca
   – Parametri URL
• Lo script può modificare temporaneamente o
  permanentemente la pagina
• Consente di sottrarre dati e prendere il controllo


  19 maggio          Massimo Fornari – SQL Injection   4
Information leakage
• Si entra in possesso di informazioni sensibili
  tramite:
   – Analisi del sorgente
   – Messaggi di errore
   – Commenti




  19 maggio            Massimo Fornari – SQL Injection   5
Broken authentication
• Debolezza del sistema di controllo degli accessi,
  con possibilità di autenticazione fasulla:
   – Attacco di forza bruta
   – Credenziali semplici, per tentativi
   – Aggiramento del login




  19 maggio            Massimo Fornari – SQL Injection   6
SQL Injection
• SQL Injection: An attack technique used to
  exploit web sites by altering backend SQL
  statements through manipulating application
  input (Web applicazion security consortium)
• Sfrutta l’inadeguatezza dei controlli sui dati di
  input




  19 maggio          Massimo Fornari – SQL Injection   7
Test della vulnerabilità
• Per prima cosa l’attaccante cerca di capire se
  l’applicazione è vulnerabile
   – Inserisce statement propri di SQL al posto dei
     parametri
   – Controlla se il server esegue la query con successo
         • In questo caso l’applicazione è vulnerabile
         • Se il server ritorna un messaggio di errore lo si analizza alla
           ricerca di una possibile vulnerabilità




  19 maggio                   Massimo Fornari – SQL Injection                8
Test della vulnerabilità - continua
• Verificare un singolo parametro per volta
  inserendo stament SQL:
  – ‘ (single quote)
  – Select, where
• Questo ha lo scopo di causare errori nella query
• In caso il server risponda con errori contenenti
  “..SQL server…”, “ODBC”, “sintax” l’applicazione
  è vulnerabile


 19 maggio              Massimo Fornari – SQL Injection   9
Test della vulnerabilità - continua
• Altro modo per testare la vulnerabilità è inserire
  parametri corretti, seguiti da una nuova
  condizione sempre vera:
SELECT * FROM edizioni WHERE id = 7
• Inserendo 7 AND 1=1 la query rimane inalterata
  ma il server può reagire in 2 modi:
   – Esegue la query con successo: è certamente
     vulnerabile
   – Rifiuta la query: il server è stato reso sicuro (almeno
     nel punto appena testato)
  19 maggio              Massimo Fornari – SQL Injection       10
Authentication bypass
• È uno scenario classico di attacco
• Lo script che si occupa del login è vulnerabile:

     string sqlQuery = "SELECT id FROM Login WHERE
     Username='" + UserTextBox.Text + "'AND
     Password='" + PassowordTextBox.Text + "'";

     dr=command.ExecuteReader();
     if (dr.HasRows){/*login succesful*/}
             else {/*login faild*/}




  19 maggio          Massimo Fornari – SQL Injection   11
Authentication bypass - continua
• Se il testo inserito è quello che l’applicazione ci si
  aspetta tutto funziona.
• Se i parametri contengono caratteri propri del
  linguaggio SQL si modifica la query di
  autenticazione
• Inserendo ‘ OR ‘’=‘ sia come nome che come
  pw otteniamo la seguente interrogazione:
select id from Login where Username=‘’ or ‘’=‘’ and Password=‘’ or ‘’=‘’



  19 maggio               Massimo Fornari – SQL Injection           12
Authentication bypass - continua
• A questo punto la query estrae tutte le righe
  della tabella, in quanto la condizione WHERE è
  sempre verificata.
• In tale modo si è avuto accesso ad un’area
  riservata




 19 maggio             Massimo Fornari – SQL Injection   13
Altri scenari
• SQL injection può essere usata anche per altri
  scopi:
  – Ottenere dati “extra” da un’interrogazione
  – Forzare l’inserimento di nuove tuple
• Uno scenario possibile è quello di concatenare
  due query usando come separatore “;” oppure
  usare UNION per fare l’unione di 2 query in
  un’unica tabella



 19 maggio           Massimo Fornari – SQL Injection   14
Struttura del database
• Sfruttando il separatore “;” è possibile, per
  esempio, inserire una query del tipo:
              SELECT * FROM sys.tables; --
• Essa ha l’effetto di mostrare tutte le tabelle
  presenti nel database (la sequenza “--” serve a
  ignorare tutto ciò che viene dopo di essa”)
• L’informazione che se ne ricava permetterà
  all’attaccante di accedere alle informazioni
  desiderate.

  19 maggio                Massimo Fornari – SQL Injection   15
Considerazzioni
• È possibile inoltre sostituire la SELECT con una insert, al
  fine di inserire nuove tuple (tipicamente per ottenere
  un utente amministratore)
• Un attacco di questo tipo non è sempre possibile, in
  quanto richiede che il risultato della query venga
  visualizzato direttamente sullo schermo.
• Tuttavia è possibile comunque eseguire tali comandi
  anche senza vederne direttamente i risultati, si parla di
  BLIND SQL INJECTION in cui spesso si procede per
  tentativi


  19 maggio             Massimo Fornari – SQL Injection         16
Come proteggersi
• L’applicazione dovrebbe SEMPRE controllare i
  dati di input
• Rimuovere gli apici dalle query
• Convertire i parametri in formato URL
  (sostituisce i caratteri speciali nel formato %n).
• Nell’input sostituire gli apici con “ ’ ”
• Utilizzo di query parametriche (disponibile in
  tutti i linguaggi principali)


  19 maggio          Massimo Fornari – SQL Injection   17
Esempio query parametrica
OleDbCommand cm = new OleDbCommand("INSERT INTO Corrieri
   ([NomeSocietà], [Telefono]) VALUES (?, ?)", cn);

OleDbParameter prm = new OleDbParameter();
prm.Direction = ParameterDirection.Input;
prm.DbType = DbType.String;
prm.Value = "Dall'Ara Francescò";
cm.Parameters.Add(prm);

prm = new OleDbParameter();
prm.DbType = DbType.String;
prm.Value = "(555)123-456";
 cm.Parameters.Add(prm);




  19 maggio             Massimo Fornari – SQL Injection    18
Query parametrica
• Si vede come questa strutturazione, porta a
  forzare il tipo del parametro da inserire nella
  query, in modo che al momento della
  costruzione di quest’ultima venga controllata la
  correttezza.
• Questo pattern oltre a evitare problemi di
  sicurezza, risolve alcuni problemi di invio dei
  parametri



 19 maggio          Massimo Fornari – SQL Injection   19
Injector software
• Esistono software che consentono di testare e
  iniettare codice SQL senza passare dal browser
  – SQL power injector
     http://www.sqlpowerinjector.com/
  – Priamos
     http://www.priamos-project.com/




 19 maggio              Massimo Fornari – SQL Injection   20
Vulnerability tester
• Esistono inoltre software in grado di rilevare
  vulnerabilita web (la cosa è legale solo sul
  proprio sito oppure dopo aver ottenuto
  l’autorizzazione) non solo di SQL injection
   – Acunetix (versione trial oppure free limitata a XSS)
     http://www.acunetix.com/
   – Google skipfish
     http://code.google.com/p/skipfish/



  19 maggio            Massimo Fornari – SQL Injection      21
Bibbliografia
http://www.orkspace.net/secdocs/

http://www.intilinux.com/sicurezza/634/le-
  vulnerabilita-delle-applicazioni-web/

http://www.webappsec.org/




 19 maggio         Massimo Fornari – SQL Injection   22

Contenu connexe

Similaire à Sql injection - intro

Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...Federico Villa
 
festival ICT 2013: Sicurezza delle applicazioni web
festival ICT 2013: Sicurezza delle applicazioni webfestival ICT 2013: Sicurezza delle applicazioni web
festival ICT 2013: Sicurezza delle applicazioni webfestival ICT 2016
 
Hackers vs Developers - SQL Injection - Attacco e Difesa
Hackers vs Developers - SQL Injection - Attacco e DifesaHackers vs Developers - SQL Injection - Attacco e Difesa
Hackers vs Developers - SQL Injection - Attacco e DifesaSimone Onofri
 
Web Application Security: Bug Hunting e Code Review
Web Application Security: Bug Hunting e Code ReviewWeb Application Security: Bug Hunting e Code Review
Web Application Security: Bug Hunting e Code ReviewAntonio Parata
 
TechDay: Hackers vs. Developers - Le SQL Injection - Simone Onofri
TechDay: Hackers vs. Developers - Le SQL Injection - Simone OnofriTechDay: Hackers vs. Developers - Le SQL Injection - Simone Onofri
TechDay: Hackers vs. Developers - Le SQL Injection - Simone OnofriCodemotion
 
Sicurezza Informatica e Hacking - Università di Teramo 23/10/2015
Sicurezza Informatica e Hacking - Università di Teramo 23/10/2015Sicurezza Informatica e Hacking - Università di Teramo 23/10/2015
Sicurezza Informatica e Hacking - Università di Teramo 23/10/2015Pawel Zorzan Urban
 
Sql Injection: attacchi e rimedi
Sql Injection: attacchi e rimediSql Injection: attacchi e rimedi
Sql Injection: attacchi e rimediDavide Micale
 
Extended Summary of "Search-Based SQL Injection Attacks Testing using Genetic...
Extended Summary of "Search-Based SQL Injection Attacks Testing using Genetic...Extended Summary of "Search-Based SQL Injection Attacks Testing using Genetic...
Extended Summary of "Search-Based SQL Injection Attacks Testing using Genetic...AndreaGonzato
 
Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Mauro Servienti
 
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...IBM Italia Web Team
 
Sicurezza delle applicazioni web
Sicurezza delle applicazioni webSicurezza delle applicazioni web
Sicurezza delle applicazioni webAdvenias
 
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...Team per la Trasformazione Digitale
 

Similaire à Sql injection - intro (13)

Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
 
festival ICT 2013: Sicurezza delle applicazioni web
festival ICT 2013: Sicurezza delle applicazioni webfestival ICT 2013: Sicurezza delle applicazioni web
festival ICT 2013: Sicurezza delle applicazioni web
 
Hackers vs Developers - SQL Injection - Attacco e Difesa
Hackers vs Developers - SQL Injection - Attacco e DifesaHackers vs Developers - SQL Injection - Attacco e Difesa
Hackers vs Developers - SQL Injection - Attacco e Difesa
 
Web Application Security: Bug Hunting e Code Review
Web Application Security: Bug Hunting e Code ReviewWeb Application Security: Bug Hunting e Code Review
Web Application Security: Bug Hunting e Code Review
 
TechDay: Hackers vs. Developers - Le SQL Injection - Simone Onofri
TechDay: Hackers vs. Developers - Le SQL Injection - Simone OnofriTechDay: Hackers vs. Developers - Le SQL Injection - Simone Onofri
TechDay: Hackers vs. Developers - Le SQL Injection - Simone Onofri
 
Sicurezza Informatica e Hacking - Università di Teramo 23/10/2015
Sicurezza Informatica e Hacking - Università di Teramo 23/10/2015Sicurezza Informatica e Hacking - Università di Teramo 23/10/2015
Sicurezza Informatica e Hacking - Università di Teramo 23/10/2015
 
Owasp parte3
Owasp parte3Owasp parte3
Owasp parte3
 
Sql Injection: attacchi e rimedi
Sql Injection: attacchi e rimediSql Injection: attacchi e rimedi
Sql Injection: attacchi e rimedi
 
Extended Summary of "Search-Based SQL Injection Attacks Testing using Genetic...
Extended Summary of "Search-Based SQL Injection Attacks Testing using Genetic...Extended Summary of "Search-Based SQL Injection Attacks Testing using Genetic...
Extended Summary of "Search-Based SQL Injection Attacks Testing using Genetic...
 
Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010
 
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
 
Sicurezza delle applicazioni web
Sicurezza delle applicazioni webSicurezza delle applicazioni web
Sicurezza delle applicazioni web
 
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
 

Plus de Ce.Se.N.A. Security

Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
 Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route... Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...Ce.Se.N.A. Security
 
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...Ce.Se.N.A. Security
 
Exploit techniques - a quick review
Exploit techniques - a quick reviewExploit techniques - a quick review
Exploit techniques - a quick reviewCe.Se.N.A. Security
 
Msfpayload/Msfencoder cheatsheet
Msfpayload/Msfencoder cheatsheetMsfpayload/Msfencoder cheatsheet
Msfpayload/Msfencoder cheatsheetCe.Se.N.A. Security
 
Analisi sulla sicurezza di una autovettura moderna
Analisi sulla sicurezza di una autovettura modernaAnalisi sulla sicurezza di una autovettura moderna
Analisi sulla sicurezza di una autovettura modernaCe.Se.N.A. Security
 
Monitoraggio di mac address in lan
Monitoraggio di mac address in lanMonitoraggio di mac address in lan
Monitoraggio di mac address in lanCe.Se.N.A. Security
 
Crimini informatici e accesso abusivo
Crimini informatici e accesso abusivoCrimini informatici e accesso abusivo
Crimini informatici e accesso abusivoCe.Se.N.A. Security
 

Plus de Ce.Se.N.A. Security (20)

Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
 Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route... Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
 
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
 
Mona cheatsheet
Mona cheatsheetMona cheatsheet
Mona cheatsheet
 
Exploit techniques - a quick review
Exploit techniques - a quick reviewExploit techniques - a quick review
Exploit techniques - a quick review
 
Msfpayload/Msfencoder cheatsheet
Msfpayload/Msfencoder cheatsheetMsfpayload/Msfencoder cheatsheet
Msfpayload/Msfencoder cheatsheet
 
ICTF overview
ICTF overviewICTF overview
ICTF overview
 
Anonymous email
Anonymous emailAnonymous email
Anonymous email
 
Hacking reti wireless
Hacking reti wirelessHacking reti wireless
Hacking reti wireless
 
SELinux - overview
SELinux - overviewSELinux - overview
SELinux - overview
 
Analisi sulla sicurezza di una autovettura moderna
Analisi sulla sicurezza di una autovettura modernaAnalisi sulla sicurezza di una autovettura moderna
Analisi sulla sicurezza di una autovettura moderna
 
Sicurezza delle reti 802.11
Sicurezza delle reti 802.11Sicurezza delle reti 802.11
Sicurezza delle reti 802.11
 
Rilevamento intrusioni in wlan
Rilevamento intrusioni in wlanRilevamento intrusioni in wlan
Rilevamento intrusioni in wlan
 
Rainbow tables
Rainbow tablesRainbow tables
Rainbow tables
 
Network monitoring tramite snmp
Network monitoring tramite snmpNetwork monitoring tramite snmp
Network monitoring tramite snmp
 
Monitoraggio di rete con nagios
Monitoraggio di rete con nagiosMonitoraggio di rete con nagios
Monitoraggio di rete con nagios
 
Monitoraggio di mac address in lan
Monitoraggio di mac address in lanMonitoraggio di mac address in lan
Monitoraggio di mac address in lan
 
Insider attack
Insider attackInsider attack
Insider attack
 
Iena
IenaIena
Iena
 
Crimini informatici e accesso abusivo
Crimini informatici e accesso abusivoCrimini informatici e accesso abusivo
Crimini informatici e accesso abusivo
 
IENA
IENAIENA
IENA
 

Dernier

Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereMarco Chizzali
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................giorgiadeascaniis59
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxlorenzodemidio01
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.camillaorlando17
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxtecongo2007
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....giorgiadeascaniis59
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxlorenzodemidio01
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 

Dernier (16)

Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opere
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 

Sql injection - intro

  • 1. Vulnerabilità web Sql injection 19 maggio Massimo Fornari – SQL Injection 1
  • 2. Vulnerabilità web Si dividono in: • Cross-site scripting • SQL injection • Broken authentication • Information leakage Sono dovuti a scarsa attenzione degli sviluppatori 19 maggio Massimo Fornari – SQL Injection 2
  • 3. Statistiche di vulnerabilità Il problema risulta evidente dal grafico 19 maggio Massimo Fornari – SQL Injection 3
  • 4. Cross-site scripting (XSS) • Inserisce script malevoli all’interno delle pagine tramite: – Form di immissione – Campi di ricerca – Parametri URL • Lo script può modificare temporaneamente o permanentemente la pagina • Consente di sottrarre dati e prendere il controllo 19 maggio Massimo Fornari – SQL Injection 4
  • 5. Information leakage • Si entra in possesso di informazioni sensibili tramite: – Analisi del sorgente – Messaggi di errore – Commenti 19 maggio Massimo Fornari – SQL Injection 5
  • 6. Broken authentication • Debolezza del sistema di controllo degli accessi, con possibilità di autenticazione fasulla: – Attacco di forza bruta – Credenziali semplici, per tentativi – Aggiramento del login 19 maggio Massimo Fornari – SQL Injection 6
  • 7. SQL Injection • SQL Injection: An attack technique used to exploit web sites by altering backend SQL statements through manipulating application input (Web applicazion security consortium) • Sfrutta l’inadeguatezza dei controlli sui dati di input 19 maggio Massimo Fornari – SQL Injection 7
  • 8. Test della vulnerabilità • Per prima cosa l’attaccante cerca di capire se l’applicazione è vulnerabile – Inserisce statement propri di SQL al posto dei parametri – Controlla se il server esegue la query con successo • In questo caso l’applicazione è vulnerabile • Se il server ritorna un messaggio di errore lo si analizza alla ricerca di una possibile vulnerabilità 19 maggio Massimo Fornari – SQL Injection 8
  • 9. Test della vulnerabilità - continua • Verificare un singolo parametro per volta inserendo stament SQL: – ‘ (single quote) – Select, where • Questo ha lo scopo di causare errori nella query • In caso il server risponda con errori contenenti “..SQL server…”, “ODBC”, “sintax” l’applicazione è vulnerabile 19 maggio Massimo Fornari – SQL Injection 9
  • 10. Test della vulnerabilità - continua • Altro modo per testare la vulnerabilità è inserire parametri corretti, seguiti da una nuova condizione sempre vera: SELECT * FROM edizioni WHERE id = 7 • Inserendo 7 AND 1=1 la query rimane inalterata ma il server può reagire in 2 modi: – Esegue la query con successo: è certamente vulnerabile – Rifiuta la query: il server è stato reso sicuro (almeno nel punto appena testato) 19 maggio Massimo Fornari – SQL Injection 10
  • 11. Authentication bypass • È uno scenario classico di attacco • Lo script che si occupa del login è vulnerabile: string sqlQuery = "SELECT id FROM Login WHERE Username='" + UserTextBox.Text + "'AND Password='" + PassowordTextBox.Text + "'"; dr=command.ExecuteReader(); if (dr.HasRows){/*login succesful*/} else {/*login faild*/} 19 maggio Massimo Fornari – SQL Injection 11
  • 12. Authentication bypass - continua • Se il testo inserito è quello che l’applicazione ci si aspetta tutto funziona. • Se i parametri contengono caratteri propri del linguaggio SQL si modifica la query di autenticazione • Inserendo ‘ OR ‘’=‘ sia come nome che come pw otteniamo la seguente interrogazione: select id from Login where Username=‘’ or ‘’=‘’ and Password=‘’ or ‘’=‘’ 19 maggio Massimo Fornari – SQL Injection 12
  • 13. Authentication bypass - continua • A questo punto la query estrae tutte le righe della tabella, in quanto la condizione WHERE è sempre verificata. • In tale modo si è avuto accesso ad un’area riservata 19 maggio Massimo Fornari – SQL Injection 13
  • 14. Altri scenari • SQL injection può essere usata anche per altri scopi: – Ottenere dati “extra” da un’interrogazione – Forzare l’inserimento di nuove tuple • Uno scenario possibile è quello di concatenare due query usando come separatore “;” oppure usare UNION per fare l’unione di 2 query in un’unica tabella 19 maggio Massimo Fornari – SQL Injection 14
  • 15. Struttura del database • Sfruttando il separatore “;” è possibile, per esempio, inserire una query del tipo: SELECT * FROM sys.tables; -- • Essa ha l’effetto di mostrare tutte le tabelle presenti nel database (la sequenza “--” serve a ignorare tutto ciò che viene dopo di essa”) • L’informazione che se ne ricava permetterà all’attaccante di accedere alle informazioni desiderate. 19 maggio Massimo Fornari – SQL Injection 15
  • 16. Considerazzioni • È possibile inoltre sostituire la SELECT con una insert, al fine di inserire nuove tuple (tipicamente per ottenere un utente amministratore) • Un attacco di questo tipo non è sempre possibile, in quanto richiede che il risultato della query venga visualizzato direttamente sullo schermo. • Tuttavia è possibile comunque eseguire tali comandi anche senza vederne direttamente i risultati, si parla di BLIND SQL INJECTION in cui spesso si procede per tentativi 19 maggio Massimo Fornari – SQL Injection 16
  • 17. Come proteggersi • L’applicazione dovrebbe SEMPRE controllare i dati di input • Rimuovere gli apici dalle query • Convertire i parametri in formato URL (sostituisce i caratteri speciali nel formato %n). • Nell’input sostituire gli apici con “ ’ ” • Utilizzo di query parametriche (disponibile in tutti i linguaggi principali) 19 maggio Massimo Fornari – SQL Injection 17
  • 18. Esempio query parametrica OleDbCommand cm = new OleDbCommand("INSERT INTO Corrieri ([NomeSocietà], [Telefono]) VALUES (?, ?)", cn); OleDbParameter prm = new OleDbParameter(); prm.Direction = ParameterDirection.Input; prm.DbType = DbType.String; prm.Value = "Dall'Ara Francescò"; cm.Parameters.Add(prm); prm = new OleDbParameter(); prm.DbType = DbType.String; prm.Value = "(555)123-456"; cm.Parameters.Add(prm); 19 maggio Massimo Fornari – SQL Injection 18
  • 19. Query parametrica • Si vede come questa strutturazione, porta a forzare il tipo del parametro da inserire nella query, in modo che al momento della costruzione di quest’ultima venga controllata la correttezza. • Questo pattern oltre a evitare problemi di sicurezza, risolve alcuni problemi di invio dei parametri 19 maggio Massimo Fornari – SQL Injection 19
  • 20. Injector software • Esistono software che consentono di testare e iniettare codice SQL senza passare dal browser – SQL power injector http://www.sqlpowerinjector.com/ – Priamos http://www.priamos-project.com/ 19 maggio Massimo Fornari – SQL Injection 20
  • 21. Vulnerability tester • Esistono inoltre software in grado di rilevare vulnerabilita web (la cosa è legale solo sul proprio sito oppure dopo aver ottenuto l’autorizzazione) non solo di SQL injection – Acunetix (versione trial oppure free limitata a XSS) http://www.acunetix.com/ – Google skipfish http://code.google.com/p/skipfish/ 19 maggio Massimo Fornari – SQL Injection 21