SQL Injection
Brief Tutorial of SQL
•
Log in to MySQL: We will use MySQL database, which is an open-source relational database management
system. We can log in using the following command:
•
Create a Database: Inside MySQL, we can create multiple databases. “SHOW DATABSES” command can be
used to list existing databases. We will create a new database called dbtest:
SQL Tutorial: Create a Table
•
A relational database organizes its data using tables. Let us create a table called employee with seven
attributes (i.e. columns) for the database “dbtest”
SQL Tutorial: Insert a Row
•
We can use the INSERT INTO statement to insert a new record into a table :
•
Here, we insert a record into the “employee” table.
•
We do not specify a value of the ID column, as it will be automatically set by the database .
SQL Tutorial: SELECT Statement
•
•
The SELECT statement is the most common operation on databases
It retrieves information from a database
Asks the database for all its
records, including all the
columns
Asks the database only for
Name, EID and Salary
columns
SQL Tutorial: WHERE Clause
•
•
It is uncommon for a SQL query to retrieve all records in a database.
WHERE clause is used to set conditions for several types of SQL statements including SELECT, UPDATE,
DELETE etc.
•
•
•
The above SQL statement only reflects the rows for which the predicate in the WHERE clause is TRUE.
The predicate is a logical expression; multiple predicates can be combined using keywords AND and OR.
Lets look at an example in the next slide.
SQL Tutorial: WHERE Clause
•
•
The first query returns a record that has EID5001 in EID field
The second query returns the records that satisfy either EID=‘EID5001’ or Name=‘David’
SQL Tutorial: WHERE Clause
•
If the condition is always True, then all the rows are affected by the SQL statement
•
This 1=1 predicate looks quite useless in real queries, but it will become useful in SQL Injection attacks
SQL Tutorial: UPDATE Statement
•
We can use the UPDATE Statement to modify an existing record
SQL Tutorial: Comments
MySQL supports three comment styles
•
•
•
Text from the # character to the end of line is treated as a comment
Text from the “--” to the end of line is treated as a comment.
Similar to C language, text between /* and */ is treated as a comment
Tương tác với Database trong ứng dụng Web
•
Một ứng dụng Web thông thường bao gồm 3 thành phần chính:
SQL-Injection
SQL injection là một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng lập trình trong
việc kiểm tra dữ liệu nhập đầu vào trong các ứng dụng web và các thông báo lỗi của hệ
quản trị cơ sở dữ liệu để "tiêm vào” (inject) và thi hành các câu lệnh SQL bất hợp pháp.
Hậu quả của nó rất nguy hiểm vì nó cho phép những kẻ tấn công có thể thực hiện các thao
tác xem, hiệu chỉnh,… do có toàn quyền trên cơ sở dữ liệu của ứng dụng, thậm chí là server
mà ứng dụng đó đang chạy
SQL Injection
Một số kiểu tấn công SQL injection
Dạng 1: ByPass Login
Là kiểu tấn công mà attacker có thể vượt qua những sự chứng thực nhờ lỗi khi dùng
các câu lệnh truy vấn SQL thao tác trên cơ sở dữ liệu của ứng dụng web.
Ví dụ:
count(*) from users where userName='john' and userPass=‘doe’
Khi người dùng Login vào với username: john
Password: ' or 1=1 - -
SQL Injection
Câu truy vấn sẽ là:
select count(*) from users where userName='john' and userPass='' or 1=1--”
Sự kiểm tra chỉ xảy ra ở Username = john với password là 1=1-- Như vậy attacker
có thể vượt qua sự kiểm tra một cách dể dàng.
SQL Injection
•
Các cụm từ khóa hay dùng để bypass với Username và password là:
1=1-' or' or
1=1-1=1-' or' or
1=1--
'a'='a
' or' or
'a'='a
'a'='a
' or' or
'a'='a
" or
1=1-" or
1=1-" or
1=1-" or
1=1--
" or
"a"="a
" or
"a"="a
" or
"a"="a
" or
"a"="a
1=1-oror
1=1-1=1-oror
1=1--
') or
('a'='a
') or
('a'='a
') or
('a'='a
') or
('a'='a
SQL Injection
Dạng 2: Sử Dụng các thông báo lỗi của ODBC
Đây là cách tấn công mà attacker truy vấn csdl và thu được những thông tin dựa
vào sự thống báo lỗi của hệ thống.
Nhờ vào các “ Error message” mà attacker có thể xác định được cấu trúc và
những thông tin cần thiết trong Database
SQL Injection
Tác Hại của SQL Injection
Với kỷ thuật tấn công này attacker có biết được những thông tin nhạy cảm cũng
như có thể chiếm quyền quản trị của website.
Với những website buôn bán và ngân hàng thì SQL injection có tác hại rất lớn khi
attacker có thể chiếm đoạt tài khoản của khách hàng ..
SQL Injection
•
Cách phòng tránh:
Đừng tin những gì mà user nhập vào. Kiểm tra và loại bỏ các từ khóa nhạy cảm
như ( ’ ) . Giới hạn quyền của User.
Loại bỏ quyền Drop data.
Tạo ra các trang bẫy lỗi….
SSL & TLS
SSL
-
Secure Socket Layer
Được phát triển bởi Netscape
Được sử dụng rộng rãi trên Worl Wide Web trong việc xác thực và mã hóa thông tin giữa client và server
Được thiết kế như một giao thức riêng, có thể hỗ trợ cho nhiều ứng dụng
SSL không phải là giao thức đơn lẻ, tập hợp các thủ tục đã được chuẩn hóa để thực hiện các nhiệm vụ bảo mật
Các thuật toán dùng trong SSL: DES, 3DES, DSA, KEA, MD5, RSA, RC2 và RC4, SHA-1
Cấu trúc SSL
3 đặc điểm nổi bật
•
Các bên giao tiếp có thể xác thực lẫn nhau sử dụng mật
mã khóa chung
•
kết nối được mã hóa trong suốt trong suốt quá trình
truyền dữ liệu sau khi sự thiết lập quan hệ ban đầu và
thương lượng khóa session diễn ra.
•
Tính xác thực và toàn vẹn dữ liệu của lưu lượng dữ liệu
được bảo vệ
TLS
•
•
•
•
•
Transport Layer Security
Được pháp triển dựa trên SSL v3
Cung cấp sự riêng tư và toàn vẹn dữ liệu
Gồm 2 lớp: Record layer và Handshake layer
Bài tập SV: Lỗ hổng trong giao thức TLS/SSL (DROWN)
HTTPS
•
Hyper Text Tranfer Protocol over Secure Socket Layer
HTTPS
•
•
HTTPS sử dụng port 443
•
Sử dụng phương thức hashing để đảm bảo tính toàn vẹn dữ liệu giữa client và server
(Integrity)
•
Sử dụng Digital Certificate giúp client tin tưởng Website đang truy cập là đúng (không phải giả
mạo) (Authenticity)
Sử dụng phương thức mã hóa đảm bảo các thông điệp trao đổi giữa client và server đ ược b ảo
mật (confidentiality)
HTTPS
•
HTTPS (HTTP over SSL)
– Kết hợp HTTP và SSL/TSL bảo mật các giao tiếp giữa browser và server
•
https:// thay cho http://
– Port 443 thay cho 80
•
Mã hóa:
– URL, nội dung, cookies, HTTP header
•
Bài tập
Phương pháp tấn công HTTPS
(SSLStrip)