Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SQL Injection

35,507 views

Published on

SQL Injection

Project for lecture "Computer Systems Security"

You can find a SQL Injection Attack with sqlmap here: http://www.youtube.com/watch?v=wAwUv5dzwLk
It was performed for educational purposes ONLY.

Published in: Education
  • Be the first to comment

SQL Injection

  1. 1. University of Central GreeceComputer Science and Biomedical Informatics SQL INJECTION System Security project Sapountzi Eleni Siganos Marios
  2. 2. ΣΙ ΕΙΝΑΙ; Σεχνικό που χρηςιμοποιεύται ςυχνϊ για επιθϋςεισ ςε ΒΔ μϋςω δικτυακού τόπου Σεχνικό ϋγχυςησ (ειςαγωγόσ) κώδικα που εκμεταλλεύεται μύα ευπϊθεια αςφαλεύασ ςτο λογιςμικό ενόσ ιςτοτόπου Οι επιθϋςεισ SQL injections εμφανύςτηκαν ταυτόχρονα με τισ πρώτεσ εφαρμογϋσ web Μεγϊλοσ ο αριθμόσ των ςυςτημϊτων που εύναι ευϊλωτα ςτισ επιθϋςεισ SQL Injections Εύκολα μπορεύ να διερευνηθεύ ςε μια εφαρμογό και με κατϊλληλη πρόβλεψη να αποφευχθεύ
  3. 3. ΚΟΡΤΥΑΙΕ΢ 7 ΕΠΙΘΕ΢ΕΙ΢
  4. 4. Μ Π Ο Ρ ΟΤ Μ Ε Ν Α Π ΡΑ Γ Μ ΑΣ Ο Π Ο Ι Η ΢ ΟΤ Μ Ε ΜΙΑ ΣΕΣΟΙΑ ΕΠΙΘΕ΢Η;
  5. 5. Ε ΤΑ Λ ΩΣ Ε ΢ Β Δ Κ Α Ι ΓΛ Ω ΢ ΢ Ε ΢ Π Ρ Ο Γ ΡΑ Μ Μ ΑΣ Ι ΢ Μ ΟΤ΢χεδόν όλεσ οι βϊςεισ δεδομϋνων SQL και γλώςςεσπρογραμματιςμού εύναι δυνητικϊ ευϊλωτεσ, πχ: MS SQL Server Oracle MySQL Postgres DB2 MS Access Sybase Informix, κλπ.
  6. 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. 7. ΑΝΑΛΤ΢Η Σι χρειαζόμαςτε; • Απλϊ ϋναν web browser Σι πρϋπει να ψϊξουμε; • ΢ελύδεσ που επιτρϋπουν την ειςαγωγό δεδομϋνων όπωσ: • login page • search page • feedback κλπ. • HTML ςελύδεσ που χρηςιμοποιούν POST εντολϋσ για να ςτεύλουν τισ ςχετικϋσ παραμϋτρουσ ςε κϊποια ςελύδα ASP
  8. 8. ΑΝΑΛΤ΢Η Τπϊρχει δυνατότητα απομακρυςμϋνησ εκτϋλεςησ με SQL Injection; • Η SQL δύνει την δυνατότητα ςτουσ developers να κϊνουν ΣΑ ΠΑΝΣΑ ςε ϋνα ςύςτημα • O SQL Server τρϋχει ςαν SYSTEM, δηλαδό τα δικαιώματα που ϋχει εύναι επιπϋδου administrator ςτο ςύςτημα • Οπότε μπορούμε να αποκτόςουμε εύκολα πρόςβαςη, αφού μπορούμε να τρϋξουμε ότι θϋλουμε
  9. 9. ΑΡΦΙΣΕΚΣΟΝΙΚΗWeb Server Application Server Database Server Web Input Injected SQL Page Validation Execution! Access Flaw
  10. 10. ΠΩ΢; Ειςϊγοντασ δηλώςεισ SQL ςτα πεδύα καταχώρηςησ φορμών ιςτοςελύδων • Πχ. αλλαγό ό διαγραφό περιεχομϋνου ςε ΒΔ πιςτωτικών καρτών ό κωδικών πρόςβαςησ
  11. 11. ΕΤΠΑΘΕΙΑΕλλιπόσ ό λανθαςμϋνη επαλόθευςη (validation) των δεδομϋνων ειςόδου (input data) μιασ εφαρμογόσ ςε: • φόρμεσ (μϋθοδοι HTTP GET και POST) • links (μϋθοδοσ HTTP GET)
  12. 12. Α Ν Α ΛΤ ΢ Η Μ Ι Α ΢ Ε Τ Π ΑΘ ΟΤ ΢ W E B ΕΥΑ Ρ Μ Ο Γ Η ΢
  13. 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. 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. 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. 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. 17. ΠΑΡΑΔΕΙΓΜΑ 3Πολλαπλϋσ εντολϋσ SQL ωσ μια επερώτηςη ςτο ςύςτημαΟ μεγαλύτεροσ κύνδυνοσ ςτα SQL Injections!!!Παρϊδειγμα ευπαθούσ block κώδικα PHP <?php $qry = "SELECT employeeid, fullname, salary FROM employees " . "WHERE employeeid =" . $_GET[employeeid]; $result = pg_query($qry); ?>
  18. 18. ΠΑΡΑΔΕΙΓΜΑ 3Δεδομϋνα ειςόδου από links τησ μορφόσ: http://www.example.com/employees.php?employeeid=3Αποτϋλεςμα η εκτϋλεςη τησ επερώτηςησ: SELECT employeeid, fullname, salary FROM employees WHERE employeeid = 3
  19. 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. 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. 21. Η ΔΤΝΑΜΗ ΣΟΤ «’» Κλεύνει την παρϊμετρο ςυμβολοςειρϊσ Ό,τι ακολουθεύ θεωρεύται μϋροσ τησ εντολόσ SQL Παραπλανητικϋσ προτϊςεισ Διαδικτύου περιλαμβϊνουν: • Αποφύγετε το! : Αντικαταςτόςτε το με ’’ Σα αλφαριθμητικϊ πεδύα εύναι πολύ ςυχνϊ, αλλϊ υπϊρχουν και ϊλλα εύδη πεδύων: • Αριθμητικϊ • Ημερομηνύεσ
  22. 22. Α Ν Α Ζ Η Σ Η ΢ Η Ι ΢ ΣΟ΢ Ε Λ Ι ΔΩ Ν Ε Τ Π ΑΘ Ω Ν ΢ Ε S Q L I N J EC T I O N Automated and heuristic web vulnerability scanner Ανώφελο να ανιχνεύςουμε μόνο τισ αδυναμύεσ των γνωςτών εφαρμογών Πιο ευπαθεύσ εύναι οι εφαρμογϋσ που προςαρμόζονται από τον χρόςτη
  23. 23. SQLMAP Open Source penetration testing tool Αυτοματοποιεύ τον εντοπιςμό και την αξιοπούηςη των ελαττωμϊτων SQLi και την ανϊληψη των εξυπηρετητών ΒΔ Τποςτόριξη για απαρύθμηςη των χρηςτών τησ ΒΔ, «password hashes» των χρηςτών, προνόμια, τουσ ρόλουσ των χρηςτών, ΒΔ, πύνακεσ και ςτόλεσ
  24. 24. SQLMAPΑναγνώριςη τησ μορφόσ των «password hashes» και υποςτηρύζονται για να ςπϊςουν με επύθεςη λεξικούΕντοπιςμόσ των πινϊκων που περιϋχουν διαπιςτευτόρια όπου τα ονόματα αντύςτοιχων ςτηλών περιϋχουν ςυμβολοςειρϋσ όπωσ το name και pass
  25. 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. 26. ΠΩ΢ ΑΠΟ ΥΕΤΓΟΤΜΕ SQL INJECTIONS;Αποφεύγουμε χαρακτόρεσ όπωσ: • quotes, slash, backslash, semicolon, NULL, new line, κλπ που εντοπύζονται ςε: • πεδύα από φόρμεσ ειςαγωγόσ από τουσ χρόςτεσ • παραμϋτρουσ ςτο URL • τιμϋσ από cookies
  27. 27. ΠΩ΢ ΑΠΟ ΥΕΤΓΟΤΜΕ SQL INJECTIONS;Όλα τα νούμερα μετατρϋπονται ςε ακεραύουσΔιαγραφό των stored procedures που δεν ςασ αρϋςουν και δεν χρειϊζεςτε όπωσ: • master..Xp_cmdshell, • xp_startmail, • xp_sendmail, • sp_makewebtask
  28. 28. ΢ΤΜΠΕΡΑ΢ΜΑΣΑ Η SQL Injection εύναι ςυναρπαςτικό και επικύνδυνη ευπϊθεια Όλεσ οι γλώςςεσ προγραμματιςμού και ΒΔ SQL εύναι δυνητικϊ ευϊλωτεσ Προςταςύα από SQLi απαιτεύ: • ανθεκτικό ςχεδιαςμό • ςωςτό επικύρωςη των δεδομϋνων ειςόδου
  29. 29. ΢Α΢ ΕΤΦΑΡΙ΢ΣΟΤΜΕ!

×