1
Breaking Databases
via SQLi attacks
Azqa Nadeem
PhD Student @ Cyber Security Group
The Cyber Security lecture series
Breaking Databases via SQLi attacks Azqa Nadeem PhD Student @ - - PowerPoint PPT Presentation
Breaking Databases via SQLi attacks Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series 1 About Cyber Security lecture series The Cyber Security lecture series 2 About Cyber Security lecture series A hot
1
PhD Student @ Cyber Security Group
The Cyber Security lecture series
2
The Cyber Security lecture series
3
The Cyber Security lecture series
4
– Cyber security topics in existing courses – First of the (hopefully) many to come
The Cyber Security lecture series
5
– Cyber security topics in existing courses – First of the (hopefully) many to come
– Assignment 3 – Exam questions – Feedback form for the course
The Cyber Security lecture series
6
The Cyber Security lecture series
7
https://www.forbes.com/sites/davidvolodzko/2018/12/04/marriott-breach-exposes-far-more-than- just-data/#1f0d3c276297
8
https://www.nbcnews.com/business/consumer/quora-hack-breach-crowdsourced-question-answer- site-exposes-100-million-n943496
9
https://steemit.com/bitcoin/@hacker0/how-i-hacked-hundreds-of-bitcoins-ama
10
https://informationisbeautiful.net/visualizations/worlds-biggest-data-breaches-hacks/
11
12
13
an attacker can execute malicious SQL statements that control a web application’s database server (also known as RDBMS).
https://www.acunetix.com/websitesecurity/sql-injection/
14
an attacker can execute malicious SQL statements that control a web application’s database server (also known as RDBMS).
– Web application – SQL-based database – User-controlled query parameter
https://www.acunetix.com/websitesecurity/sql-injection/
15
16
– Web application infrastructure – Who is to blame? – What can attackers do?
17
– Web application infrastructure – Who is to blame? – What can attackers do?
18
– Web application infrastructure – Who is to blame? – What can attackers do?
19
– Web application infrastructure – Who is to blame? – What can attackers do?
– Input sanitization – Escaping input – Prepared statements
20
21
webshop.abc.xy
22
webshop.abc.xy
23
webshop.abc.xy
24
SQL database webshop.abc.xy
25
SQL database webshop.abc.xy
26
SQL database webshop.abc.xy
27
SQL database webshop.abc.xy
28
SQL database webshop.abc.xy
29
30
31
– INSERT INTO users (username, password) VALUES (‘attacker’, ‘youvebeenhacked’)
C
32
– INSERT INTO users (username, password) VALUES (‘attacker’, ‘youvebeenhacked’) – SELECT * FROM users WHERE userType=‘admin’
C R
33
– INSERT INTO users (username, password) VALUES (‘attacker’, ‘youvebeenhacked’) – SELECT * FROM users WHERE userType=‘admin’ – UPDATE users SET password=‘youvebeenhacked’ ;
C R U
34
– INSERT INTO users (username, password) VALUES (‘attacker’, ‘youvebeenhacked’) – SELECT * FROM users WHERE userType=‘admin’ – UPDATE users SET password=‘youvebeenhacked’ ; – DELETE FROM users;
C R U D
35
– INSERT INTO users (username, password) VALUES (‘attacker’, ‘youvebeenhacked’) – SELECT * FROM users WHERE userType=‘admin’ – UPDATE users SET password=‘youvebeenhacked’ ; – DELETE FROM users;
– Root access, Denial of Service attack, etc.
C R U D
36
webshop.abc.xy
37
webshop.abc.xy
Search for an item
Keyword
38
SQL database webshop.abc.xy
Search for an item
Keyword
39
SQL database webshop.abc.xy
Search for an item
Keyword
itemName itemPicture Shirt X Pen X Car X
Inventory
40
SQL database webshop.abc.xy
Search for an item
Keyword
itemName itemPicture Shirt X Pen X Car X
Inventory
41
SQL database webshop.abc.xy
Search for an item
car
Keyword
itemName itemPicture Shirt X Pen X Car X
Inventory
car
42
SQL database webshop.abc.xy
Search for an item
car
Keyword
itemName itemPicture Shirt X Pen X Car X
Inventory
car
43
Search for an item
??
Keyword
SQL database webshop.abc.xy
itemName itemPicture Shirt X Pen X Car X
??
Inventory
44
Search for an item
car’ OR 1 #
Keyword
SQL database webshop.abc.xy
itemName itemPicture Shirt X Pen X Car X
car’ OR 1 #
Inventory
45
Search for an item
car’ OR 1 #
Keyword
SQL database webshop.abc.xy
itemName itemPicture Shirt X Pen X Car X
car’ OR 1 #
Inventory
46
Search for an item
car’ OR 1 #
Keyword
SQL database webshop.abc.xy
itemName itemPicture Shirt X Pen X Car X
car’ OR 1 #
Inventory
→ Tautology
47
SQL database webshop.abc.xy
Log in Form
?? ??
Username Password
Go
?? ??
48
SQL database webshop.abc.xy
Log in Form Blah’ OR 1#
Blah
Username Password
Go
Blah Blah’ OR 1 #
49
SQL database webshop.abc.xy
Log in Form Blah’ OR 1#
Blah
Username Password
Go
Blah Blah’ OR 1 #
50
51
52
– JOIN (Append horizontally)
53
– JOIN (Append horizontally) – UNION (Append vertically)
54
– JOIN (Append horizontally) – UNION (Append vertically)
55
– JOIN (Append horizontally) – UNION (Append vertically)
Bunny
56
– JOIN (Append horizontally) – UNION (Append vertically)
Bunny
57
– JOIN (Append horizontally) – UNION (Append vertically)
Bunny Fluffy Bunny 1 2
58
SQL database webshop.abc.xy
Search for an item
??
Keyword
59
SQL database webshop.abc.xy
Search for an item
??
Keyword
??
60
username password fluffyBunny cArR0T admin admin123
SQL database webshop.abc.xy
Search for an item
??
Keyword
??
itemName itemPicture Shirt X Pen X Car X
Inventory Users
61
SQL database webshop.abc.xy
Search for an item
car’ UNION SELECT password FROM users# Keyword
car’ UNION SELECT password FROM users# itemName itemPicture Shirt X Pen X Car X
Inventory Users
username password fluffyBunny cArR0T admin admin123
62
SQL database webshop.abc.xy
Search for an item
car’ UNION SELECT password FROM users# Keyword
car’ UNION SELECT password FROM users# itemName itemPicture Shirt X Pen X Car X
Inventory Users
username password fluffyBunny cArR0T admin admin123
63
https://www.explainxkcd.com/wiki/index.php/327:_Exploits_of_a_Mom
64
https://www.explainxkcd.com/wiki/index.php/327:_Exploits_of_a_Mom
Piggy-backed query
65
66
SELECT profile FROM users WHERE uname= ‘Blah‘ AND pwd= ‘Blah‘
67
SELECT profile FROM users WHERE uname=‘Blah‘ OR 1=1 # ‘ AND pwd= ‘Blah‘ SELECT profile FROM users WHERE uname= ‘Blah‘ AND pwd= ‘Blah‘
68
SELECT profile FROM users WHERE uname= ‘Blah‘ AND pwd= ‘Blah‘ SELECT profile FROM users WHERE uname=‘Blah‘ OR 1=1 # ‘ AND pwd= ‘Blah‘
69
– Clean the input in order to use it
70
– Clean the input in order to use it
71
– Clean the input in order to use it
– Not all scenarios are known
72
– To avoid data being mistaken as code
73
– To avoid data being mistaken as code – Input:
74
– To avoid data being mistaken as code – Input: – Must be processed as:
75
– To avoid data being mistaken as code – Input: – Must be processed as:
– Possibly a 2nd Order SQLi attack
76
Users
username password fluffyBunny cArR0T admin admin123
77
Robert’; Drop table users;# Blah
Username Password
Register
Users
username password fluffyBunny cArR0T admin admin123
1)
78
Robert’; Drop table users;# Blah
Username Password
Register
Users
username password fluffyBunny cArR0T admin admin123
1)
79
Robert’; Drop table users;# Blah
Username Password
Register
Users
username password fluffyBunny cArR0T admin admin123 Robert’; Drop table users;# Blah username password fluffyBunny cArR0T admin admin123
1)
80
Robert’; Drop table users;# Blah
Username Password
Register
Users
username password fluffyBunny cArR0T admin admin123 Robert’; Drop table users;# Blah username password fluffyBunny cArR0T admin admin123
1) 2)
Robert’; Drop table users;# Blah
Username Password
Login
81
Robert’; Drop table users;# Blah
Username Password
Register
Users
username password fluffyBunny cArR0T admin admin123 Robert’; Drop table users;# Blah username password fluffyBunny cArR0T admin admin123
1) 2)
Robert’; Drop table users;# Blah
Username Password
Login
82
Robert’; Drop table users;# Blah
Username Password
Register
Users
username password fluffyBunny cArR0T admin admin123 Robert’; Drop table users;# Blah username password fluffyBunny cArR0T admin admin123
Welcome, Robert’; Drop table users;# 1) 2)
Robert’; Drop table users;# Blah
Username Password
Login
3)
83
Robert’; Drop table users;# Blah
Username Password
Register
Users
username password fluffyBunny cArR0T admin admin123 Robert’; Drop table users;# Blah username password fluffyBunny cArR0T admin admin123
Welcome, Robert’; Drop table users;# 1) 2)
Robert’; Drop table users;# Blah
Username Password
Login
Blah2 Blah2
Password Confirm
Update password
3)
84
Robert’; Drop table users;# Blah
Username Password
Register
Users
username password fluffyBunny cArR0T admin admin123 Robert’; Drop table users;# Blah username password fluffyBunny cArR0T admin admin123
Welcome, Robert’; Drop table users;# 1) 2)
Robert’; Drop table users;# Blah
Username Password
Login
Blah2 Blah2
Password Confirm
Update password
3)
85
Robert’; Drop table users;# Blah
Username Password
Register
Users
username password fluffyBunny cArR0T admin admin123 Robert’; Drop table users;# Blah username password fluffyBunny cArR0T admin admin123
Welcome, Robert’; Drop table users;# 1) 2)
Robert’; Drop table users;# Blah
Username Password
Login
Blah2 Blah2
Password Confirm
Update password
3)
86
– Separation of concerns
Code Data Query
87
– Separation of concerns – Pre-compile legitimate query – Add placeholders for data
Code Data Query
88
– Separation of concerns – Pre-compile legitimate query – Add placeholders for data
Code Data Query
89
– Separation of concerns – Pre-compile legitimate query – Add placeholders for data
Code Data Query
90
91
attack
92
attack
– Tautology-based query – Union-based query – Piggy-backed query – 2nd Order attack
93
attack
– Tautology-based query – Union-based query – Piggy-backed query – 2nd Order attack
94
attack
– Tautology-based query – Union-based query – Piggy-backed query – 2nd Order attack
95
attack
– Tautology-based query – Union-based query – Piggy-backed query – 2nd Order attack
96
biggest-data-breaches-of-the-21st-century.html
https://www.cc.gatech.edu/fac/Alex.Orso/papers/halfond.viegas.o rso.ISSSE06.pdf
– https://www.codingame.com/playgrounds/154/sql-injection- demo/sql-injection – http://leettime.net/sqlninja.com/ – https://www.veracode.com/security/sql-injection
97