SlideShare a Scribd company logo
University of Central Greece
Computer Science and Biomedical Informatics



     SQL INJECTION
       System Security project
               Sapountzi Eleni
               Siganos Marios
ΣΙ ΕΙΝΑΙ;
 Σεχνικό που χρηςιμοποιεύται ςυχνϊ για επιθϋςεισ ςε ΒΔ μϋςω
  δικτυακού τόπου
 Σεχνικό ϋγχυςησ (ειςαγωγόσ) κώδικα που εκμεταλλεύεται μύα
  ευπϊθεια αςφαλεύασ ςτο λογιςμικό ενόσ ιςτοτόπου
 Οι επιθϋςεισ SQL injections εμφανύςτηκαν ταυτόχρονα με τισ πρώτεσ
  εφαρμογϋσ web
 Μεγϊλοσ ο αριθμόσ των ςυςτημϊτων που εύναι ευϊλωτα ςτισ
  επιθϋςεισ SQL Injections
 Εύκολα μπορεύ να διερευνηθεύ ςε μια εφαρμογό και με κατϊλληλη
  πρόβλεψη να αποφευχθεύ
ΚΟΡΤΥΑΙΕ΢ 7 ΕΠΙΘΕ΢ΕΙ΢
Μ Π Ο Ρ ΟΤ Μ Ε Ν Α Π ΡΑ Γ Μ ΑΣ Ο Π Ο Ι Η ΢ ΟΤ Μ Ε
          ΜΙΑ ΣΕΣΟΙΑ ΕΠΙΘΕ΢Η;
Ε ΤΑ Λ ΩΣ Ε ΢ Β Δ Κ Α Ι ΓΛ Ω ΢ ΢ Ε ΢
        Π Ρ Ο Γ ΡΑ Μ Μ ΑΣ Ι ΢ Μ ΟΤ
΢χεδόν όλεσ οι βϊςεισ δεδομϋνων SQL και γλώςςεσ
προγραμματιςμού εύναι δυνητικϊ ευϊλωτεσ, πχ:
      MS SQL Server
      Oracle
      MySQL
      Postgres
      DB2
      MS Access
      Sybase
      Informix, κλπ.
Ε ΤΑ Λ ΩΣ Ε ΢ Β Δ Κ Α Ι ΓΛ Ω ΢ ΢ Ε ΢
        Π Ρ Ο Γ ΡΑ Μ Μ ΑΣ Ι ΢ Μ ΟΤ

Πρόςβαςη μϋςω εφαρμογών που ϋχουν αναπτυχθεύ με χρόςη:
     Perl και CGI scripts
     ASP, JSP, PHP
     XML, XSL και XSQL
     Javascript
     VB, MFC, και ϊλλα ODBC-based εργαλεύα και APIs
     DB ςυγκεκριμϋνη web-based εφαρμογϋσ και το API
     Reports and DB Applications
     3 and 4GL-based languages (C, OCI, Pro * C, COBOL)
ΑΝΑΛΤ΢Η
 Σι χρειαζόμαςτε;
    • Απλϊ ϋναν web browser

 Σι πρϋπει να ψϊξουμε;
    • ΢ελύδεσ που επιτρϋπουν την ειςαγωγό δεδομϋνων όπωσ:
        • login page
        • search page
        • feedback κλπ.
    • HTML ςελύδεσ που χρηςιμοποιούν POST εντολϋσ για
    να ςτεύλουν τισ ςχετικϋσ παραμϋτρουσ ςε κϊποια ςελύδα ASP
ΑΝΑΛΤ΢Η
 Τπϊρχει δυνατότητα απομακρυςμϋνησ εκτϋλεςησ με
  SQL Injection;
   • Η SQL δύνει την δυνατότητα ςτουσ developers να
     κϊνουν ΣΑ ΠΑΝΣΑ ςε ϋνα ςύςτημα
   • O SQL Server τρϋχει ςαν SYSTEM, δηλαδό τα
     δικαιώματα που ϋχει εύναι επιπϋδου administrator ςτο
     ςύςτημα
   • Οπότε μπορούμε να αποκτόςουμε εύκολα πρόςβαςη,
     αφού μπορούμε να τρϋξουμε ότι θϋλουμε
ΑΡΦΙΣΕΚΣΟΝΙΚΗ

Web Server   Application Server   Database Server




   Web            Input            Injected SQL
   Page         Validation          Execution!
  Access           Flaw
ΠΩ΢;
 Ειςϊγοντασ δηλώςεισ SQL ςτα πεδύα καταχώρηςησ
  φορμών ιςτοςελύδων
    • Πχ. αλλαγό ό διαγραφό περιεχομϋνου ςε ΒΔ πιςτωτικών
      καρτών ό κωδικών πρόςβαςησ
ΕΤΠΑΘΕΙΑ

Ελλιπόσ ό λανθαςμϋνη επαλόθευςη (validation)
 των δεδομϋνων ειςόδου (input data) μιασ
 εφαρμογόσ ςε:
   • φόρμεσ (μϋθοδοι HTTP GET και POST)
   • links (μϋθοδοσ HTTP GET)
Α Ν Α ΛΤ ΢ Η Μ Ι Α ΢ Ε Τ Π ΑΘ ΟΤ ΢
      W E B ΕΥΑ Ρ Μ Ο Γ Η ΢
ΠΑΡΑΔΕΙΓΜΑ 1
Έςτω πύνακασ «employees» ςε μια ΒΔ MySQL
Ευπαθϋσ block κώδικα PHP
 <?php
    $qry = "SELECT employeeid, fullname, salary FROM employees " .
           "WHERE employeeid =" . $_GET['employeeid'];
    $result = mysql_query($qry);
 ?>
΢κοπόσ εύναι η εκτϋλεςη επερώτηςεων τησ μορφόσ:
SELECT   employeeid, fullname, salary FROM employees
 WHERE    employeeid = 3
SELECT   employeeid, fullname, salary FROM employees
 WHERE    employeeid = 352
ΠΑΡΑΔΕΙΓΜΑ 1
Σο Employeeid εύναι το πρωτεύον κλειδύ ςτον πύνακα employees δύνεται
 μϋςω browser, με χρόςη τησ μεθόδου GET του HTTP με link τησ μορφόσ:
   http://www.example.com/employees.php?employeeid=3

Η τιμό τησ παραμϋτρου GET «employeeid» που δύνεται ςτο URL, ΔΕΝ
 επαληθεύεται επαρκώσ πριν την εκτϋλεςη τησ επερώτηςησ από τον κώδικα
 http://www.example.com/employees.php?employeeid=3 OR 1=1

Ωσ αποτϋλεςμα θα εκτελεςτεύ ςτη βϊςη δεδομϋνων η εξόσ επερώτηςη:
        •SELECT employeeid, fullname, salary FROM employees
         WHERE employeeid=3 OR 1=1

Έτςι ενδϋχεται ο κακόβουλοσ χρόςτησ να δει πληροφορύεσ που δεν εύναι
ςκόπιμο
ΠΑΡΑΔΕΙΓΜΑ 2
Login form
Ευπαθϋσ block κώδικα PHP
 <?php
    $username = $_POST['username'];
    $password = $_POST['password'];
    $qry = "SELECT userid FROM users" .
           " WHERE username='$username'
             AND password='$password'";
    $result = mysql_query($qry);
    if (mysql_numrows($result) > 0) {
       //log in user...
    }
 ?>
ΠΑΡΑΔΕΙΓΜΑ 2
Οι τιμϋσ username και password δύνονται με χρόςη μιασ
 τυπικόσ web login φόρμασ με τη μϋθοδο HTTP POST

Αν δώςουμε ςτο πεδύο password: bar' OR 1=1 OR username='
  ϋχουμε την εκτϋλεςη τησ επερώτηςησ:
       •SELECT userid FROM users WHERE username='foo'
        AND password='bar' OR 1=1 OR username='';


Έτςι ενδϋχεται η πρόςβαςη ςτην εφαρμογό (login) από ϊτομα
που δεν εύναι εξουςιοδοτημϋνα
ΠΑΡΑΔΕΙΓΜΑ 3
Πολλαπλϋσ εντολϋσ SQL ωσ μια επερώτηςη ςτο ςύςτημα
Ο μεγαλύτεροσ κύνδυνοσ ςτα SQL Injections!!!

Παρϊδειγμα ευπαθούσ block κώδικα PHP
 <?php
    $qry = "SELECT employeeid, fullname, salary
            FROM employees " .
           "WHERE employeeid =" . $_GET['employeeid'];
    $result = pg_query($qry);
 ?>
ΠΑΡΑΔΕΙΓΜΑ 3
Δεδομϋνα ειςόδου από links τησ μορφόσ:
 http://www.example.com/employees.php?employeeid=3

Αποτϋλεςμα η εκτϋλεςη τησ επερώτηςησ:
 SELECT employeeid, fullname, salary FROM employees
  WHERE employeeid = 3
ΠΑΡΑΔΕΙΓΜΑ 3
Ο κακόβουλοσ χρόςτησ δύνει τo εξόσ URL
 http://www.example.com/employees.php?employeeid=3;
  DELETE FROM users;


Έτςι θα εκτελεςτούν οι 2 εντολϋσ:
 SELECT employeeid, fullname, salary
  FROM employees WHERE   employeeid = 3;
 DELETE FROM users;


Διαγραφό όλων των δεδομϋνων του πύνακα users από τη βϊςη!
Α Ν Α Ζ Η Σ Η ΢ Η Ε Τ Π ΑΘ Ω Ν Ι ΢ Σ Ε ΢ Ε Λ Ι ΔΩ Ν
Φ Ρ Η ΢ Ι Μ Ο Π Ο Ι Ω Ν ΣΑ ΢ G O O G L E D O R K S

Αναζότηςη με τα παρακϊτω:    Προςθϋτουμε ’ ςτο τϋλοσ
 inurl:index.php?id=        του url και αν εμφανύςει
                             error τότε η ιςτοςελύδα
 inurl:index.php?catid=     εύναι ευϊλωτη ςε SQLi
 inurl:news.php?id=         επιθϋςεισ

 inurl:news.php?catid=

 inurl:product.php?id=
Η ΔΤΝΑΜΗ ΣΟΤ «’»
 Κλεύνει την παρϊμετρο ςυμβολοςειρϊσ

 Ό,τι ακολουθεύ θεωρεύται μϋροσ τησ εντολόσ SQL

 Παραπλανητικϋσ προτϊςεισ Διαδικτύου περιλαμβϊνουν:
    • Αποφύγετε το! : Αντικαταςτόςτε το με ’’

 Σα αλφαριθμητικϊ πεδύα εύναι πολύ ςυχνϊ, αλλϊ υπϊρχουν και
  ϊλλα εύδη πεδύων:
    • Αριθμητικϊ
    • Ημερομηνύεσ
Α Ν Α Ζ Η Σ Η ΢ Η Ι ΢ ΣΟ΢ Ε Λ Ι ΔΩ Ν
 Ε Τ Π ΑΘ Ω Ν ΢ Ε S Q L I N J EC T I O N

 Automated and heuristic web vulnerability scanner

 Ανώφελο να ανιχνεύςουμε μόνο τισ αδυναμύεσ των
  γνωςτών εφαρμογών

 Πιο ευπαθεύσ εύναι οι εφαρμογϋσ που προςαρμόζονται
  από τον χρόςτη
SQLMAP
 Open Source penetration testing tool
 Αυτοματοποιεύ τον εντοπιςμό και την αξιοπούηςη των
  ελαττωμϊτων SQLi και την ανϊληψη των εξυπηρετητών ΒΔ
 Τποςτόριξη για απαρύθμηςη των χρηςτών τησ ΒΔ, «password
  hashes» των χρηςτών, προνόμια, τουσ ρόλουσ των χρηςτών,
  ΒΔ, πύνακεσ και ςτόλεσ
SQLMAP
Αναγνώριςη τησ μορφόσ των «password hashes»
 και υποςτηρύζονται για να ςπϊςουν με επύθεςη
 λεξικού
Εντοπιςμόσ των πινϊκων που περιϋχουν
 διαπιςτευτόρια όπου τα ονόματα αντύςτοιχων ςτηλών
 περιϋχουν ςυμβολοςειρϋσ όπωσ το name και pass
SQLMAP - ΣΕΦΝΙΚΕ΢
 Boolean-based blind SQL injection ό inferential SQL
  injection

 Time-based blind SQL injection ό blind SQL injection

 Error-based SQL injection

 UNION query SQL injection ό inband SQL injection

 Stacked queries SQL injection ό multiple statements
  SQL injection
ΠΩ΢ ΑΠΟ ΥΕΤΓΟΤΜΕ
        SQL INJECTIONS;
Αποφεύγουμε χαρακτόρεσ όπωσ:
     • quotes, slash, backslash, semicolon, NULL, new line, κλπ
 που εντοπύζονται ςε:
     • πεδύα από φόρμεσ ειςαγωγόσ από τουσ χρόςτεσ
     • παραμϋτρουσ ςτο URL
     • τιμϋσ από cookies
ΠΩ΢ ΑΠΟ ΥΕΤΓΟΤΜΕ
        SQL INJECTIONS;
Όλα τα νούμερα μετατρϋπονται ςε ακεραύουσ
Διαγραφό των stored procedures που δεν ςασ αρϋςουν
 και δεν χρειϊζεςτε όπωσ:
   • master..Xp_cmdshell,
   • xp_startmail,
   • xp_sendmail,
   • sp_makewebtask
΢ΤΜΠΕΡΑ΢ΜΑΣΑ
 Η SQL Injection εύναι ςυναρπαςτικό και επικύνδυνη
  ευπϊθεια

 Όλεσ οι γλώςςεσ προγραμματιςμού και ΒΔ SQL εύναι
  δυνητικϊ ευϊλωτεσ

 Προςταςύα από SQLi απαιτεύ:
    • ανθεκτικό ςχεδιαςμό
    • ςωςτό επικύρωςη των δεδομϋνων ειςόδου
΢Α΢ ΕΤΦΑΡΙ΢ΣΟΤΜΕ!

More Related Content

PPT
Sql injection
Pallavi Biswas
 
PPTX
Sql Injection attacks and prevention
helloanand
 
PPT
SQL Injection
Adhoura Academy
 
PPTX
Ppt on sql injection
ashish20012
 
PPTX
SQL Injections - A Powerpoint Presentation
Rapid Purple
 
PPTX
Sql injection
Hemendra Kumar
 
DOCX
Types of sql injection attacks
Respa Peter
 
PPTX
Sql injection
Zidh
 
Sql injection
Pallavi Biswas
 
Sql Injection attacks and prevention
helloanand
 
SQL Injection
Adhoura Academy
 
Ppt on sql injection
ashish20012
 
SQL Injections - A Powerpoint Presentation
Rapid Purple
 
Sql injection
Hemendra Kumar
 
Types of sql injection attacks
Respa Peter
 
Sql injection
Zidh
 

Viewers also liked (18)

PDF
Sql Injection Myths and Fallacies
Karwin Software Solutions LLC
 
PDF
SQL Injection 101 : It is not just about ' or '1'='1 - Pichaya Morimoto
Pichaya Morimoto
 
PDF
Sql Injection - Vulnerability and Security
Sandip Chaudhari
 
PPT
D:\Technical\Ppt\Sql Injection
avishkarm
 
PDF
SQL injection: Not Only AND 1=1 (updated)
Bernardo Damele A. G.
 
PPT
Web application attacks using Sql injection and countermasures
Cade Zvavanjanja
 
PDF
SQL injection: Not only AND 1=1
Bernardo Damele A. G.
 
PDF
How to Become a Thought Leader in Your Niche
Leslie Samuel
 
PPT
Les attaques par injection sql
Mohamed Yassin
 
PPT
Sql Injection Attacks Siddhesh
Siddhesh Bhobe
 
PPT
Sql injection attack
RajKumar Rampelli
 
PPTX
SQL INJECTION
Anoop T
 
PPTX
ETHICAL HACKING PPT
Sweta Leena Panda
 
PPT
TYPES OF HACKING
SHERALI445
 
PPTX
Introduction To Ethical Hacking
Neel Kamal
 
PPTX
ethical hacking in the modern times
jeshin jose
 
PPTX
Ethical hacking presentation
Suryansh Srivastava
 
PPTX
Hacking ppt
giridhar_sadasivuni
 
Sql Injection Myths and Fallacies
Karwin Software Solutions LLC
 
SQL Injection 101 : It is not just about ' or '1'='1 - Pichaya Morimoto
Pichaya Morimoto
 
Sql Injection - Vulnerability and Security
Sandip Chaudhari
 
D:\Technical\Ppt\Sql Injection
avishkarm
 
SQL injection: Not Only AND 1=1 (updated)
Bernardo Damele A. G.
 
Web application attacks using Sql injection and countermasures
Cade Zvavanjanja
 
SQL injection: Not only AND 1=1
Bernardo Damele A. G.
 
How to Become a Thought Leader in Your Niche
Leslie Samuel
 
Les attaques par injection sql
Mohamed Yassin
 
Sql Injection Attacks Siddhesh
Siddhesh Bhobe
 
Sql injection attack
RajKumar Rampelli
 
SQL INJECTION
Anoop T
 
ETHICAL HACKING PPT
Sweta Leena Panda
 
TYPES OF HACKING
SHERALI445
 
Introduction To Ethical Hacking
Neel Kamal
 
ethical hacking in the modern times
jeshin jose
 
Ethical hacking presentation
Suryansh Srivastava
 
Hacking ppt
giridhar_sadasivuni
 
Ad

Similar to SQL Injection (20)

PPTX
Δημιουργία Ιστοσελίδων
Despina Kamilali
 
PPT
Beauty salon
'Yiannis Stav'
 
PDF
Thesis.Net Features
MGAKIS
 
PPTX
Asfask1
Tasos Vizaniaris
 
PPTX
Dontsios Dimitris
ISSEL
 
PDF
08 - Λογαριασμοί και Δικαιώματα σε Database Server
Fotis Kokkoras
 
PPT
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
ISSEL
 
PPT
Design and Implementation of a Mechanism that automates the generation of Sof...
ISSEL
 
PPTX
Δούμας Οδυσσέας 7168
ISSEL
 
PPTX
Αυτοματοποίηση της μετατροπής των HR επιχειρησιακών διαδικασιών εταιριών σε W...
ISSEL
 
PPTX
Automated digital transformation of HR business processes to web applications
ISSEL
 
PDF
Thesis.Net Framework Training
pdalianis
 
PPTX
Web sql: a quick approach (Greek)
Theodosis Sourgounis
 
PPTX
JavaScript
KVoulgaris
 
PDF
Software requirements
George Kara
 
PPTX
Sonar platform
Patroklos Papapetrou (Pat)
 
PPTX
Thesis.Net - Training
Anna Tsolakou
 
PPTX
Μια εισαγωγή στο Bootstrap
Θεόφιλος Κατσιγιάννης
 
PDF
Thesis.Net Framework
MGAKIS
 
Δημιουργία Ιστοσελίδων
Despina Kamilali
 
Beauty salon
'Yiannis Stav'
 
Thesis.Net Features
MGAKIS
 
Dontsios Dimitris
ISSEL
 
08 - Λογαριασμοί και Δικαιώματα σε Database Server
Fotis Kokkoras
 
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
ISSEL
 
Design and Implementation of a Mechanism that automates the generation of Sof...
ISSEL
 
Δούμας Οδυσσέας 7168
ISSEL
 
Αυτοματοποίηση της μετατροπής των HR επιχειρησιακών διαδικασιών εταιριών σε W...
ISSEL
 
Automated digital transformation of HR business processes to web applications
ISSEL
 
Thesis.Net Framework Training
pdalianis
 
Web sql: a quick approach (Greek)
Theodosis Sourgounis
 
JavaScript
KVoulgaris
 
Software requirements
George Kara
 
Thesis.Net - Training
Anna Tsolakou
 
Μια εισαγωγή στο Bootstrap
Θεόφιλος Κατσιγιάννης
 
Thesis.Net Framework
MGAKIS
 
Ad

Recently uploaded (8)

PPTX
Saint James, the Great, Apostle (Greek).pptx
Martin M Flynn
 
PDF
ΧΑΛΚΙΑ ΠΑΝΑΓΙΩΤΑ, ΜΙΑ ΧΑΡΑΜΑΔΑ ΦΩΣ (της Κίρας Σίνου).pdf
Λαμπρινή Μαγαλιού
 
PDF
Μπιζάκη Χριστίνα, Ο Χάρι Πότερ και η φιλοσοφική λίθος (της J.K. Rowling).pdf
Λαμπρινή Μαγαλιού
 
PDF
2025_apotelesmata2586545215knhgfdrhjgd.pdf
ssuserf9afe7
 
PDF
Μπατσιώρας Στ.,Μια υπόθεση για τον ντετέκτιβ Κλουζ.pdf
Λαμπρινή Μαγαλιού
 
PPTX
1.4 ΤΟ ΜΥΣΤΗΡΙΟ ΤΟΥ ΤΡΙΑΔΙΚΟΥ ΘΕΟΥ1.pptx
ΘΡΗΣΚΕΥΤΙΚΑ ΚΑΙ ΜΟΥΣΙΚΗ
 
PPTX
Saint Joachim and Saint Anne, parents of Mary (Greek).pptx
Martin M Flynn
 
DOCX
Οδύσσεια Α γυμνασίου Θέματα Εξεάσεων.docx
Sofia Mpourmpoulithra
 
Saint James, the Great, Apostle (Greek).pptx
Martin M Flynn
 
ΧΑΛΚΙΑ ΠΑΝΑΓΙΩΤΑ, ΜΙΑ ΧΑΡΑΜΑΔΑ ΦΩΣ (της Κίρας Σίνου).pdf
Λαμπρινή Μαγαλιού
 
Μπιζάκη Χριστίνα, Ο Χάρι Πότερ και η φιλοσοφική λίθος (της J.K. Rowling).pdf
Λαμπρινή Μαγαλιού
 
2025_apotelesmata2586545215knhgfdrhjgd.pdf
ssuserf9afe7
 
Μπατσιώρας Στ.,Μια υπόθεση για τον ντετέκτιβ Κλουζ.pdf
Λαμπρινή Μαγαλιού
 
1.4 ΤΟ ΜΥΣΤΗΡΙΟ ΤΟΥ ΤΡΙΑΔΙΚΟΥ ΘΕΟΥ1.pptx
ΘΡΗΣΚΕΥΤΙΚΑ ΚΑΙ ΜΟΥΣΙΚΗ
 
Saint Joachim and Saint Anne, parents of Mary (Greek).pptx
Martin M Flynn
 
Οδύσσεια Α γυμνασίου Θέματα Εξεάσεων.docx
Sofia Mpourmpoulithra
 

SQL Injection

  • 1. University of Central Greece Computer Science and Biomedical Informatics SQL INJECTION System Security project Sapountzi Eleni Siganos Marios
  • 2. ΣΙ ΕΙΝΑΙ;  Σεχνικό που χρηςιμοποιεύται ςυχνϊ για επιθϋςεισ ςε ΒΔ μϋςω δικτυακού τόπου  Σεχνικό ϋγχυςησ (ειςαγωγόσ) κώδικα που εκμεταλλεύεται μύα ευπϊθεια αςφαλεύασ ςτο λογιςμικό ενόσ ιςτοτόπου  Οι επιθϋςεισ SQL injections εμφανύςτηκαν ταυτόχρονα με τισ πρώτεσ εφαρμογϋσ web  Μεγϊλοσ ο αριθμόσ των ςυςτημϊτων που εύναι ευϊλωτα ςτισ επιθϋςεισ SQL Injections  Εύκολα μπορεύ να διερευνηθεύ ςε μια εφαρμογό και με κατϊλληλη πρόβλεψη να αποφευχθεύ
  • 4. Μ Π Ο Ρ ΟΤ Μ Ε Ν Α Π ΡΑ Γ Μ ΑΣ Ο Π Ο Ι Η ΢ ΟΤ Μ Ε ΜΙΑ ΣΕΣΟΙΑ ΕΠΙΘΕ΢Η;
  • 5. Ε ΤΑ Λ ΩΣ Ε ΢ Β Δ Κ Α Ι ΓΛ Ω ΢ ΢ Ε ΢ Π Ρ Ο Γ ΡΑ Μ Μ ΑΣ Ι ΢ Μ ΟΤ ΢χεδόν όλεσ οι βϊςεισ δεδομϋνων SQL και γλώςςεσ προγραμματιςμού εύναι δυνητικϊ ευϊλωτεσ, πχ: MS SQL Server Oracle MySQL Postgres DB2 MS Access Sybase Informix, κλπ.
  • 6. Ε ΤΑ Λ ΩΣ Ε ΢ Β Δ Κ Α Ι ΓΛ Ω ΢ ΢ Ε ΢ Π Ρ Ο Γ ΡΑ Μ Μ ΑΣ Ι ΢ Μ ΟΤ Πρόςβαςη μϋςω εφαρμογών που ϋχουν αναπτυχθεύ με χρόςη:  Perl και CGI scripts  ASP, JSP, PHP  XML, XSL και XSQL  Javascript  VB, MFC, και ϊλλα ODBC-based εργαλεύα και APIs  DB ςυγκεκριμϋνη web-based εφαρμογϋσ και το API  Reports and DB Applications  3 and 4GL-based languages (C, OCI, Pro * C, COBOL)
  • 7. ΑΝΑΛΤ΢Η  Σι χρειαζόμαςτε; • Απλϊ ϋναν web browser  Σι πρϋπει να ψϊξουμε; • ΢ελύδεσ που επιτρϋπουν την ειςαγωγό δεδομϋνων όπωσ: • login page • search page • feedback κλπ. • HTML ςελύδεσ που χρηςιμοποιούν POST εντολϋσ για να ςτεύλουν τισ ςχετικϋσ παραμϋτρουσ ςε κϊποια ςελύδα ASP
  • 8. ΑΝΑΛΤ΢Η  Τπϊρχει δυνατότητα απομακρυςμϋνησ εκτϋλεςησ με SQL Injection; • Η SQL δύνει την δυνατότητα ςτουσ developers να κϊνουν ΣΑ ΠΑΝΣΑ ςε ϋνα ςύςτημα • O SQL Server τρϋχει ςαν SYSTEM, δηλαδό τα δικαιώματα που ϋχει εύναι επιπϋδου administrator ςτο ςύςτημα • Οπότε μπορούμε να αποκτόςουμε εύκολα πρόςβαςη, αφού μπορούμε να τρϋξουμε ότι θϋλουμε
  • 9. ΑΡΦΙΣΕΚΣΟΝΙΚΗ Web Server Application Server Database Server Web Input Injected SQL Page Validation Execution! Access Flaw
  • 10. ΠΩ΢;  Ειςϊγοντασ δηλώςεισ SQL ςτα πεδύα καταχώρηςησ φορμών ιςτοςελύδων • Πχ. αλλαγό ό διαγραφό περιεχομϋνου ςε ΒΔ πιςτωτικών καρτών ό κωδικών πρόςβαςησ
  • 11. ΕΤΠΑΘΕΙΑ Ελλιπόσ ό λανθαςμϋνη επαλόθευςη (validation) των δεδομϋνων ειςόδου (input data) μιασ εφαρμογόσ ςε: • φόρμεσ (μϋθοδοι HTTP GET και POST) • links (μϋθοδοσ HTTP GET)
  • 12. Α Ν Α ΛΤ ΢ Η Μ Ι Α ΢ Ε Τ Π ΑΘ ΟΤ ΢ W E B ΕΥΑ Ρ Μ Ο Γ Η ΢
  • 13. ΠΑΡΑΔΕΙΓΜΑ 1 Έςτω πύνακασ «employees» ςε μια ΒΔ MySQL Ευπαθϋσ block κώδικα PHP <?php $qry = "SELECT employeeid, fullname, salary FROM employees " . "WHERE employeeid =" . $_GET['employeeid']; $result = mysql_query($qry); ?> ΢κοπόσ εύναι η εκτϋλεςη επερώτηςεων τησ μορφόσ: SELECT employeeid, fullname, salary FROM employees WHERE employeeid = 3 SELECT employeeid, fullname, salary FROM employees WHERE employeeid = 352
  • 14. ΠΑΡΑΔΕΙΓΜΑ 1 Σο Employeeid εύναι το πρωτεύον κλειδύ ςτον πύνακα employees δύνεται μϋςω browser, με χρόςη τησ μεθόδου GET του HTTP με link τησ μορφόσ: http://www.example.com/employees.php?employeeid=3 Η τιμό τησ παραμϋτρου GET «employeeid» που δύνεται ςτο URL, ΔΕΝ επαληθεύεται επαρκώσ πριν την εκτϋλεςη τησ επερώτηςησ από τον κώδικα http://www.example.com/employees.php?employeeid=3 OR 1=1 Ωσ αποτϋλεςμα θα εκτελεςτεύ ςτη βϊςη δεδομϋνων η εξόσ επερώτηςη: •SELECT employeeid, fullname, salary FROM employees WHERE employeeid=3 OR 1=1 Έτςι ενδϋχεται ο κακόβουλοσ χρόςτησ να δει πληροφορύεσ που δεν εύναι ςκόπιμο
  • 15. ΠΑΡΑΔΕΙΓΜΑ 2 Login form Ευπαθϋσ block κώδικα PHP <?php $username = $_POST['username']; $password = $_POST['password']; $qry = "SELECT userid FROM users" . " WHERE username='$username' AND password='$password'"; $result = mysql_query($qry); if (mysql_numrows($result) > 0) { //log in user... } ?>
  • 16. ΠΑΡΑΔΕΙΓΜΑ 2 Οι τιμϋσ username και password δύνονται με χρόςη μιασ τυπικόσ web login φόρμασ με τη μϋθοδο HTTP POST Αν δώςουμε ςτο πεδύο password: bar' OR 1=1 OR username=' ϋχουμε την εκτϋλεςη τησ επερώτηςησ: •SELECT userid FROM users WHERE username='foo' AND password='bar' OR 1=1 OR username=''; Έτςι ενδϋχεται η πρόςβαςη ςτην εφαρμογό (login) από ϊτομα που δεν εύναι εξουςιοδοτημϋνα
  • 17. ΠΑΡΑΔΕΙΓΜΑ 3 Πολλαπλϋσ εντολϋσ SQL ωσ μια επερώτηςη ςτο ςύςτημα Ο μεγαλύτεροσ κύνδυνοσ ςτα SQL Injections!!! Παρϊδειγμα ευπαθούσ block κώδικα PHP <?php $qry = "SELECT employeeid, fullname, salary FROM employees " . "WHERE employeeid =" . $_GET['employeeid']; $result = pg_query($qry); ?>
  • 18. ΠΑΡΑΔΕΙΓΜΑ 3 Δεδομϋνα ειςόδου από links τησ μορφόσ: http://www.example.com/employees.php?employeeid=3 Αποτϋλεςμα η εκτϋλεςη τησ επερώτηςησ:  SELECT employeeid, fullname, salary FROM employees WHERE employeeid = 3
  • 19. ΠΑΡΑΔΕΙΓΜΑ 3 Ο κακόβουλοσ χρόςτησ δύνει τo εξόσ URL  http://www.example.com/employees.php?employeeid=3; DELETE FROM users; Έτςι θα εκτελεςτούν οι 2 εντολϋσ:  SELECT employeeid, fullname, salary FROM employees WHERE employeeid = 3;  DELETE FROM users; Διαγραφό όλων των δεδομϋνων του πύνακα users από τη βϊςη!
  • 20. Α Ν Α Ζ Η Σ Η ΢ Η Ε Τ Π ΑΘ Ω Ν Ι ΢ Σ Ε ΢ Ε Λ Ι ΔΩ Ν Φ Ρ Η ΢ Ι Μ Ο Π Ο Ι Ω Ν ΣΑ ΢ G O O G L E D O R K S Αναζότηςη με τα παρακϊτω: Προςθϋτουμε ’ ςτο τϋλοσ  inurl:index.php?id= του url και αν εμφανύςει error τότε η ιςτοςελύδα  inurl:index.php?catid= εύναι ευϊλωτη ςε SQLi  inurl:news.php?id= επιθϋςεισ  inurl:news.php?catid=  inurl:product.php?id=
  • 21. Η ΔΤΝΑΜΗ ΣΟΤ «’»  Κλεύνει την παρϊμετρο ςυμβολοςειρϊσ  Ό,τι ακολουθεύ θεωρεύται μϋροσ τησ εντολόσ SQL  Παραπλανητικϋσ προτϊςεισ Διαδικτύου περιλαμβϊνουν: • Αποφύγετε το! : Αντικαταςτόςτε το με ’’  Σα αλφαριθμητικϊ πεδύα εύναι πολύ ςυχνϊ, αλλϊ υπϊρχουν και ϊλλα εύδη πεδύων: • Αριθμητικϊ • Ημερομηνύεσ
  • 22. Α Ν Α Ζ Η Σ Η ΢ Η Ι ΢ ΣΟ΢ Ε Λ Ι ΔΩ Ν Ε Τ Π ΑΘ Ω Ν ΢ Ε S Q L I N J EC T I O N  Automated and heuristic web vulnerability scanner  Ανώφελο να ανιχνεύςουμε μόνο τισ αδυναμύεσ των γνωςτών εφαρμογών  Πιο ευπαθεύσ εύναι οι εφαρμογϋσ που προςαρμόζονται από τον χρόςτη
  • 23. SQLMAP  Open Source penetration testing tool  Αυτοματοποιεύ τον εντοπιςμό και την αξιοπούηςη των ελαττωμϊτων SQLi και την ανϊληψη των εξυπηρετητών ΒΔ  Τποςτόριξη για απαρύθμηςη των χρηςτών τησ ΒΔ, «password hashes» των χρηςτών, προνόμια, τουσ ρόλουσ των χρηςτών, ΒΔ, πύνακεσ και ςτόλεσ
  • 24. SQLMAP Αναγνώριςη τησ μορφόσ των «password hashes» και υποςτηρύζονται για να ςπϊςουν με επύθεςη λεξικού Εντοπιςμόσ των πινϊκων που περιϋχουν διαπιςτευτόρια όπου τα ονόματα αντύςτοιχων ςτηλών περιϋχουν ςυμβολοςειρϋσ όπωσ το name και pass
  • 25. SQLMAP - ΣΕΦΝΙΚΕ΢  Boolean-based blind SQL injection ό inferential SQL injection  Time-based blind SQL injection ό blind SQL injection  Error-based SQL injection  UNION query SQL injection ό inband SQL injection  Stacked queries SQL injection ό multiple statements SQL injection
  • 26. ΠΩ΢ ΑΠΟ ΥΕΤΓΟΤΜΕ SQL INJECTIONS; Αποφεύγουμε χαρακτόρεσ όπωσ: • quotes, slash, backslash, semicolon, NULL, new line, κλπ που εντοπύζονται ςε: • πεδύα από φόρμεσ ειςαγωγόσ από τουσ χρόςτεσ • παραμϋτρουσ ςτο URL • τιμϋσ από cookies
  • 27. ΠΩ΢ ΑΠΟ ΥΕΤΓΟΤΜΕ SQL INJECTIONS; Όλα τα νούμερα μετατρϋπονται ςε ακεραύουσ Διαγραφό των stored procedures που δεν ςασ αρϋςουν και δεν χρειϊζεςτε όπωσ: • master..Xp_cmdshell, • xp_startmail, • xp_sendmail, • sp_makewebtask
  • 28. ΢ΤΜΠΕΡΑ΢ΜΑΣΑ  Η SQL Injection εύναι ςυναρπαςτικό και επικύνδυνη ευπϊθεια  Όλεσ οι γλώςςεσ προγραμματιςμού και ΒΔ SQL εύναι δυνητικϊ ευϊλωτεσ  Προςταςύα από SQLi απαιτεύ: • ανθεκτικό ςχεδιαςμό • ςωςτό επικύρωςη των δεδομϋνων ειςόδου