SlideShare a Scribd company logo
1 of 41
TẤN CÔNG
SQL INJECTION
NHÓM G1
Tổng Quan
2
GIỚI THIỆU
SQL
INJECTION
CÁC KIỂU
TẤN CÔNG
ỨNG DỤNG
TẤN CÔNG
PHỔ BIẾN
CÁCH
PHÒNG
CHỐNG
GIỚI THIỆU
SQL INJECTION
Khái niệm SQL
╸ SQL là viết tắt của Structured
Query Language
╸ Ngôn ngữ truy vấn có cấu
trúc
╸ xác định dữ liệu trong cơ sở
dữ liệu và thao tác dữ liệu
4
Thành phần tạo lệnh truy vấn SQL
╸ SELECT
╸ INSERT
╸ UPDATE
╸ DELETE
╸ DROP
╸ UNION -
╸ WHERE
╸ AND/OR
╸ LIMIT
╸ ORDER BY
5
╸ CREATE
╸ ALTER
╸ DROP
Data Definition Language Data Manipulation Language
6
Ký tự đặc biệt trong SQL
Khái niệm SQL Injection
Kỹ thuật tiêm nhiễm mã độc vào
câu truy vấn SQL và thi hành các
câu lệnh SQL bất hợp pháp trên
cơ sở dữ liệu của máy chủ Web
7
01
02
03
04
05
Tiến hành tiêm nhiễm chuỗi ký tự độc hại
Máy chủ web tiếp nhận chuỗi ký tự độc hại
Truy vấn được thực hiện trong hệ quản
trị CSDL
Kẻ tấn công nhận được thông tin nhạy cảm
Các bước thực hiện của 1 cuộc tấn công SQL Injection
Máy chủ web ghép ký tự đọc hại vào
câu truy vấn
9
SQLi & Thống kê
10
Hậu quả của SQLi
╸ Trích xuất dữ liệu nhạy cảm của
hệ thống
╸ Thay đổi dữ liệu của hệ thống
╸ Sửa đổi cấu trúc của cơ sở dữ
liệu
11
12
CÁC KIỂU
TẤN CÔNG
SQL
INJECTION
13
Error-based SQLi
SQLi dựa vào thông
báo lỗi được trả về từ
Database Server có
chứa thông tin về cấu
trúc của cơ sở dữ liệu
In-band SQLi
Union-based SQLi
SQLi lợi dụng toán tử
UNION trong ngôn ngữ
SQL lấy tổng hợp kết
quả của 2 hay nhiều câu
truy vấn SELECT trong
cùng 1 kết quả và được
trả về
14
Blind-Boolean-Based
SQLi bắt buộc ứng
dụng trả về các kết
quả khác nhau phụ
thuộc vào câu truy
vấn là True hay False
Inferential SQLi
Time-Based-Blind
SQLi buộc cơ sở dữ liệu
phải chờ một khoảng
thời gian trước khi phản
hồi
15
Out-of-band SQLi
╸ Phụ thuộc vào các tính năng được bật trên
Database Server
╸ Thực hiện các request DNS hoặc HTTP để
chuyển dữ liệu cho kẻ tấn công
16
ỨNG DỤNG TẤN CÔNG
PHỔ BIẾN
17
Vượt đăng nhập
╸ Cho phép người dùng truy cập vào
các trang web được bảo mật yêu
cầu tài khoản và mật khẩu
18
Câu truy vấn thông thường ở DB sử dụng MySQL:
SELECT * FROM users WHERE username = ‘a123’ AND password = ‘adc‘
19
Đăng nhập với tài khoản hợp lệ
Nhập username và password Kết quả đăng nhập thành công
Hacker đăng nhập
Hacker login với username = `hacker‘or 1=1-- -` và password = `111`
Lúc này câu truy vấn ở Server:
SELECT * FROM users WHERE username='hacker' OR 1=1 -- - ' AND
password='111‘
Hacker đã lợi dụng ký tự ‘-- -’ trong SQL để loại bỏ kiểm tra mật khẩu
20
21
Hacker truy cập thành công vào hệ thống mà
không có tài khoản hợp lệ
Tấn công sử dụng câu lệnh SELECT
22
23
Lợi dụng các sơ hở trong các
thông báo lỗi từ hệ thống để dò
tìm các điểm yếu khởi đầu cho
việc tấn công
Khai thác website qua URL bằng Select
╸ Ta thường thấy url: `index.php?id=21`, `index.asp?id=6`, …
╸ Câu truy vấn: SELECT * FROM Products WHERE
Product_ID=`21`
╸ Thêm các kí tự dấu nháy đơn ('), dấu nháy kép ("), phần trăm
27 (%27), 00 phần trăm (00%) vào sau id để kiểm tra nếu nó
hiện ra lỗi hoặc không
24
25
URL hợp lệ: `ampak.com.tw/product.php?id=2`
URL với id lỗi: `ampak.com.tw/product.php?id=2%27`
Server ném ra lỗi
26
Tấn công sử dụng
Insert, Update, Delete
╸ Ứng dụng web cho phép người dùng đăng kí một tài
khoản để tham gia.
╸ Người dùng đăng nhập, xem và hiệu chỉnh thông tin của
mình. SQL injection có thể được dùng khi hệ thông
không kiểm tra tính hợp lệ của thông tin nhập vào.
28
Một câu lệnh INSERT có thể có cú pháp dạng:
INSERT INTO TableName VALUES(‘Value One’, ‘Value Two’, ‘Value
Three’)
Nếu đoạn mã xây dựng câu lệnh SQL có dạng :
<% strSQL = “INSERT INTO TableName VALUES(‘ ” & strValueOne & ”
‘, ‘ ” _ & strValueTwo & ” ‘, ‘ ” & strValueThree & ” ‘) ” Set objRS =
Server.CreateObject(“ADODB.Recordset”) objRS.Open strSQL,
“DSN=…” … Set objRS = Nothing %>
Thì chắc chắn sẽ bị lỗi SQLi, bởi vì nếu ta nhập :
‘ + (SELECT TOP 1 FieldName FROM TableName) + ‘
29
Thì chắc chắn sẽ bị lỗi SQLi, bởi vì nếu ta nhập :
‘ + (SELECT TOP 1 FieldName FROM TableName) + ‘
Lúc này câu truy vấn sẽ là :
INSERT INTO TableName VALUES(‘ ‘ + (SELECT TOP 1 FieldName
FROM TableName) + ‘ ‘, ‘abc’, ‘def’)
Khi đó, lúc thực hiện lệnh xem thông tin, xem như bạn đã yêu cầu thực hiện
thêm một lệnh nữa đó là:
SELECT TOP 1 FieldName FROM TableName
30
Sử dụng ký tự độc để thực hiện các câu
lệnh Update/Delete
Câu truy vấn tìm kiếm:
SELECT * FROM products WHERE product_name = ‘ & search_name &’
Truy vấn bị chèn mã Delete:
SELECT * FROM products WHERE product_name = ‘iphone12 promax’;
DELETE FROM products; -- ‘
Truy vấn bị chèn mã Update:
SELECT * FROM products WHERE product_name = ‘iphone12 promax’;
UPDATE products SET product_name = ‘1$’ --'
31
Tấn công sử dụng
STORED-PROCEDURE
Stored Procedure là bao gồm các câu lệnh Transact-SQL và được lưu lại trong cơ
sở dữ liệu. Các lập trình viên chỉ cần gọi ra và thực thi thông qua SQL Server
Management Studio hoặc ngay trong ứng dụng
33
SQLi đối với Stored Procedure
╸ Stored Procedure splogin gồm hai tham số là username và password, nếu
kẻ tấn công nhập:
`Username: thanhcong Password: ' ; shutdown- -`
Lệnh gọi stored procedure như sau:
EXEC splogin 'thanhcong','';shutdown- -'
Lệnh shutdown thực hiện dừng sql server ngay lập tức
34
Với câu lệnh:
EXEC xp_cmdshell 'cmd.exe dir C: '
Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C: cài
đặt server. Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau
cmd.exe.
35
PHÒNG CHỐNG
SQL INJECTION
Sử dụng ORM
╸ Chúng ta hạn chế viết SQL thuần mà toàn sử dụng ORM
(Object-Relational Mapping) framework
╸ Các framework web này sẽ tự tạo câu lệnh SQL nên hacker
cũng khó tấn công hơn.
37
38
Ta lọc các kí tự đặc
biệt (; ” ‘) hoặc các từ
khoá (SELECT, UNION)
do người dùng nhập
vào
39
╸ Không hiển thị exception, message lỗi: Hacker dựa vào
message lỗi để tìm ra cấu trúc database
╸ Phân quyền rõ ràng trong DB, không dùng account: `root`
hay `sa`
╸ Backup dữ liệu thường xuyên
╸ Sử dụng các module hỗ trợ phòng chống SQLi như:
Modsecurity trong Apache, URLScan của IIS
40
CÁM ƠN THẦY & CÁC BẠN
ĐÃ LẮNG NGHE!
41

More Related Content

What's hot

Tim hieu ve lo hong web va cach phong chong
Tim hieu ve lo hong web va cach phong chongTim hieu ve lo hong web va cach phong chong
Tim hieu ve lo hong web va cach phong chongVu Trung Kien
 
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)Luc Cao
 
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPTBài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPTMasterCode.vn
 
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web applicationCông cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web applicationducmanhkthd
 
Tổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tinTổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tinNguyen Thi Lan Phuong
 
Web application-security
Web application-securityWeb application-security
Web application-securityVisla Team
 
Báo cáo tốt nghiệp - XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ NHÀ HÀNG VỪA VÀ NHỎ SỬ DỤ...
Báo cáo tốt nghiệp - XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝNHÀ HÀNG VỪA VÀ NHỎ SỬ DỤ...Báo cáo tốt nghiệp - XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝNHÀ HÀNG VỪA VÀ NHỎ SỬ DỤ...
Báo cáo tốt nghiệp - XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ NHÀ HÀNG VỪA VÀ NHỎ SỬ DỤ...Duc Tran
 
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTITBài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTITPopping Khiem - Funky Dance Crew PTIT
 
Báo cáo thực tập
Báo cáo thực tậpBáo cáo thực tập
Báo cáo thực tậpLuc Cao
 
Rà soát Malware bằng SysInternal Suite
Rà soát Malware bằng SysInternal SuiteRà soát Malware bằng SysInternal Suite
Rà soát Malware bằng SysInternal SuitePhạm Trung Đức
 
Hệ điều hành (chương 5)
Hệ điều hành (chương 5)Hệ điều hành (chương 5)
Hệ điều hành (chương 5)realpotter
 
Trigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL ServerTrigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL ServerNguyễn Phúc
 
Phân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tậpPhân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tậpPhạm Trung Đức
 
Bài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTITBài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTITNguynMinh294
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuThiênĐàng CôngDân
 
Xây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyếnXây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyếntrương dũng
 
Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...
Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...
Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...Thịt Xốt Cà Chua
 
đồ áN cơ sở 2 đề tài xây dựng website kinh doanh phụ kiện thú cưng
đồ áN cơ sở 2 đề tài xây dựng website kinh doanh phụ kiện thú cưngđồ áN cơ sở 2 đề tài xây dựng website kinh doanh phụ kiện thú cưng
đồ áN cơ sở 2 đề tài xây dựng website kinh doanh phụ kiện thú cưngnataliej4
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGThùy Linh
 

What's hot (20)

Tim hieu ve lo hong web va cach phong chong
Tim hieu ve lo hong web va cach phong chongTim hieu ve lo hong web va cach phong chong
Tim hieu ve lo hong web va cach phong chong
 
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
 
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPTBài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
 
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web applicationCông cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
 
Tổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tinTổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tin
 
Web application-security
Web application-securityWeb application-security
Web application-security
 
Báo cáo tốt nghiệp - XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ NHÀ HÀNG VỪA VÀ NHỎ SỬ DỤ...
Báo cáo tốt nghiệp - XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝNHÀ HÀNG VỪA VÀ NHỎ SỬ DỤ...Báo cáo tốt nghiệp - XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝNHÀ HÀNG VỪA VÀ NHỎ SỬ DỤ...
Báo cáo tốt nghiệp - XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ NHÀ HÀNG VỪA VÀ NHỎ SỬ DỤ...
 
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTITBài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
 
Báo cáo thực tập
Báo cáo thực tậpBáo cáo thực tập
Báo cáo thực tập
 
Rà soát Malware bằng SysInternal Suite
Rà soát Malware bằng SysInternal SuiteRà soát Malware bằng SysInternal Suite
Rà soát Malware bằng SysInternal Suite
 
Hệ điều hành (chương 5)
Hệ điều hành (chương 5)Hệ điều hành (chương 5)
Hệ điều hành (chương 5)
 
Trigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL ServerTrigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL Server
 
Phân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tậpPhân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tập
 
Bài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTITBài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTIT
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tu
 
Báo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin Tức
Báo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin TứcBáo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin Tức
Báo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin Tức
 
Xây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyếnXây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyến
 
Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...
Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...
Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng ...
 
đồ áN cơ sở 2 đề tài xây dựng website kinh doanh phụ kiện thú cưng
đồ áN cơ sở 2 đề tài xây dựng website kinh doanh phụ kiện thú cưngđồ áN cơ sở 2 đề tài xây dựng website kinh doanh phụ kiện thú cưng
đồ áN cơ sở 2 đề tài xây dựng website kinh doanh phụ kiện thú cưng
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
 

Similar to SQL Injection

Tan cong kieu sql injection tac hai va phong tranh vn
Tan cong kieu sql injection   tac hai va phong tranh vnTan cong kieu sql injection   tac hai va phong tranh vn
Tan cong kieu sql injection tac hai va phong tranh vnJenny Nguyen
 
Sql injection2
Sql injection2Sql injection2
Sql injection2Gió Lào
 
Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Luc Cao
 
Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Luc Cao
 
Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5phanleson
 
SQL Injection.pptx
SQL Injection.pptxSQL Injection.pptx
SQL Injection.pptxAnhQucL4
 
PHP Security SQL injection
PHP Security SQL injectionPHP Security SQL injection
PHP Security SQL injectionLoc Nguyen
 
Sql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.comSql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.comphanleson
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5pisu412
 
b2-ddl-create-190213085738.pdf
b2-ddl-create-190213085738.pdfb2-ddl-create-190213085738.pdf
b2-ddl-create-190213085738.pdfQuyVo27
 
Bảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NETBảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NETHUST
 
Lớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaLớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaANHMATTROI
 
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPTBài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPTMasterCode.vn
 

Similar to SQL Injection (20)

Sql injection
Sql injectionSql injection
Sql injection
 
Tan cong kieu sql injection tac hai va phong tranh vn
Tan cong kieu sql injection   tac hai va phong tranh vnTan cong kieu sql injection   tac hai va phong tranh vn
Tan cong kieu sql injection tac hai va phong tranh vn
 
Sql injection2
Sql injection2Sql injection2
Sql injection2
 
Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2
 
Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2
 
Sql injection2
Sql injection2Sql injection2
Sql injection2
 
Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5
 
SQL Injection.pptx
SQL Injection.pptxSQL Injection.pptx
SQL Injection.pptx
 
PHP Security SQL injection
PHP Security SQL injectionPHP Security SQL injection
PHP Security SQL injection
 
Sql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.comSql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.com
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
 
b2-ddl-create-190213085738.pdf
b2-ddl-create-190213085738.pdfb2-ddl-create-190213085738.pdf
b2-ddl-create-190213085738.pdf
 
Bao cao detai
Bao cao detaiBao cao detai
Bao cao detai
 
3250
32503250
3250
 
Owasp top 10
Owasp top 10Owasp top 10
Owasp top 10
 
Bảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NETBảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NET
 
Cach su dung data reader
Cach su dung data readerCach su dung data reader
Cach su dung data reader
 
Lớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaLớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong java
 
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPTBài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
 
3 lop
3 lop3 lop
3 lop
 

SQL Injection

  • 2. Tổng Quan 2 GIỚI THIỆU SQL INJECTION CÁC KIỂU TẤN CÔNG ỨNG DỤNG TẤN CÔNG PHỔ BIẾN CÁCH PHÒNG CHỐNG
  • 4. Khái niệm SQL ╸ SQL là viết tắt của Structured Query Language ╸ Ngôn ngữ truy vấn có cấu trúc ╸ xác định dữ liệu trong cơ sở dữ liệu và thao tác dữ liệu 4
  • 5. Thành phần tạo lệnh truy vấn SQL ╸ SELECT ╸ INSERT ╸ UPDATE ╸ DELETE ╸ DROP ╸ UNION - ╸ WHERE ╸ AND/OR ╸ LIMIT ╸ ORDER BY 5 ╸ CREATE ╸ ALTER ╸ DROP Data Definition Language Data Manipulation Language
  • 6. 6 Ký tự đặc biệt trong SQL
  • 7. Khái niệm SQL Injection Kỹ thuật tiêm nhiễm mã độc vào câu truy vấn SQL và thi hành các câu lệnh SQL bất hợp pháp trên cơ sở dữ liệu của máy chủ Web 7
  • 8. 01 02 03 04 05 Tiến hành tiêm nhiễm chuỗi ký tự độc hại Máy chủ web tiếp nhận chuỗi ký tự độc hại Truy vấn được thực hiện trong hệ quản trị CSDL Kẻ tấn công nhận được thông tin nhạy cảm Các bước thực hiện của 1 cuộc tấn công SQL Injection Máy chủ web ghép ký tự đọc hại vào câu truy vấn
  • 9. 9
  • 10. SQLi & Thống kê 10
  • 11. Hậu quả của SQLi ╸ Trích xuất dữ liệu nhạy cảm của hệ thống ╸ Thay đổi dữ liệu của hệ thống ╸ Sửa đổi cấu trúc của cơ sở dữ liệu 11
  • 13. 13
  • 14. Error-based SQLi SQLi dựa vào thông báo lỗi được trả về từ Database Server có chứa thông tin về cấu trúc của cơ sở dữ liệu In-band SQLi Union-based SQLi SQLi lợi dụng toán tử UNION trong ngôn ngữ SQL lấy tổng hợp kết quả của 2 hay nhiều câu truy vấn SELECT trong cùng 1 kết quả và được trả về 14
  • 15. Blind-Boolean-Based SQLi bắt buộc ứng dụng trả về các kết quả khác nhau phụ thuộc vào câu truy vấn là True hay False Inferential SQLi Time-Based-Blind SQLi buộc cơ sở dữ liệu phải chờ một khoảng thời gian trước khi phản hồi 15
  • 16. Out-of-band SQLi ╸ Phụ thuộc vào các tính năng được bật trên Database Server ╸ Thực hiện các request DNS hoặc HTTP để chuyển dữ liệu cho kẻ tấn công 16
  • 17. ỨNG DỤNG TẤN CÔNG PHỔ BIẾN 17
  • 18. Vượt đăng nhập ╸ Cho phép người dùng truy cập vào các trang web được bảo mật yêu cầu tài khoản và mật khẩu 18
  • 19. Câu truy vấn thông thường ở DB sử dụng MySQL: SELECT * FROM users WHERE username = ‘a123’ AND password = ‘adc‘ 19 Đăng nhập với tài khoản hợp lệ Nhập username và password Kết quả đăng nhập thành công
  • 20. Hacker đăng nhập Hacker login với username = `hacker‘or 1=1-- -` và password = `111` Lúc này câu truy vấn ở Server: SELECT * FROM users WHERE username='hacker' OR 1=1 -- - ' AND password='111‘ Hacker đã lợi dụng ký tự ‘-- -’ trong SQL để loại bỏ kiểm tra mật khẩu 20
  • 21. 21 Hacker truy cập thành công vào hệ thống mà không có tài khoản hợp lệ
  • 22. Tấn công sử dụng câu lệnh SELECT 22
  • 23. 23 Lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công
  • 24. Khai thác website qua URL bằng Select ╸ Ta thường thấy url: `index.php?id=21`, `index.asp?id=6`, … ╸ Câu truy vấn: SELECT * FROM Products WHERE Product_ID=`21` ╸ Thêm các kí tự dấu nháy đơn ('), dấu nháy kép ("), phần trăm 27 (%27), 00 phần trăm (00%) vào sau id để kiểm tra nếu nó hiện ra lỗi hoặc không 24
  • 25. 25 URL hợp lệ: `ampak.com.tw/product.php?id=2`
  • 26. URL với id lỗi: `ampak.com.tw/product.php?id=2%27` Server ném ra lỗi 26
  • 27. Tấn công sử dụng Insert, Update, Delete
  • 28. ╸ Ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia. ╸ Người dùng đăng nhập, xem và hiệu chỉnh thông tin của mình. SQL injection có thể được dùng khi hệ thông không kiểm tra tính hợp lệ của thông tin nhập vào. 28
  • 29. Một câu lệnh INSERT có thể có cú pháp dạng: INSERT INTO TableName VALUES(‘Value One’, ‘Value Two’, ‘Value Three’) Nếu đoạn mã xây dựng câu lệnh SQL có dạng : <% strSQL = “INSERT INTO TableName VALUES(‘ ” & strValueOne & ” ‘, ‘ ” _ & strValueTwo & ” ‘, ‘ ” & strValueThree & ” ‘) ” Set objRS = Server.CreateObject(“ADODB.Recordset”) objRS.Open strSQL, “DSN=…” … Set objRS = Nothing %> Thì chắc chắn sẽ bị lỗi SQLi, bởi vì nếu ta nhập : ‘ + (SELECT TOP 1 FieldName FROM TableName) + ‘ 29
  • 30. Thì chắc chắn sẽ bị lỗi SQLi, bởi vì nếu ta nhập : ‘ + (SELECT TOP 1 FieldName FROM TableName) + ‘ Lúc này câu truy vấn sẽ là : INSERT INTO TableName VALUES(‘ ‘ + (SELECT TOP 1 FieldName FROM TableName) + ‘ ‘, ‘abc’, ‘def’) Khi đó, lúc thực hiện lệnh xem thông tin, xem như bạn đã yêu cầu thực hiện thêm một lệnh nữa đó là: SELECT TOP 1 FieldName FROM TableName 30
  • 31. Sử dụng ký tự độc để thực hiện các câu lệnh Update/Delete Câu truy vấn tìm kiếm: SELECT * FROM products WHERE product_name = ‘ & search_name &’ Truy vấn bị chèn mã Delete: SELECT * FROM products WHERE product_name = ‘iphone12 promax’; DELETE FROM products; -- ‘ Truy vấn bị chèn mã Update: SELECT * FROM products WHERE product_name = ‘iphone12 promax’; UPDATE products SET product_name = ‘1$’ --' 31
  • 32. Tấn công sử dụng STORED-PROCEDURE
  • 33. Stored Procedure là bao gồm các câu lệnh Transact-SQL và được lưu lại trong cơ sở dữ liệu. Các lập trình viên chỉ cần gọi ra và thực thi thông qua SQL Server Management Studio hoặc ngay trong ứng dụng 33
  • 34. SQLi đối với Stored Procedure ╸ Stored Procedure splogin gồm hai tham số là username và password, nếu kẻ tấn công nhập: `Username: thanhcong Password: ' ; shutdown- -` Lệnh gọi stored procedure như sau: EXEC splogin 'thanhcong','';shutdown- -' Lệnh shutdown thực hiện dừng sql server ngay lập tức 34
  • 35. Với câu lệnh: EXEC xp_cmdshell 'cmd.exe dir C: ' Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C: cài đặt server. Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe. 35
  • 37. Sử dụng ORM ╸ Chúng ta hạn chế viết SQL thuần mà toàn sử dụng ORM (Object-Relational Mapping) framework ╸ Các framework web này sẽ tự tạo câu lệnh SQL nên hacker cũng khó tấn công hơn. 37
  • 38. 38
  • 39. Ta lọc các kí tự đặc biệt (; ” ‘) hoặc các từ khoá (SELECT, UNION) do người dùng nhập vào 39
  • 40. ╸ Không hiển thị exception, message lỗi: Hacker dựa vào message lỗi để tìm ra cấu trúc database ╸ Phân quyền rõ ràng trong DB, không dùng account: `root` hay `sa` ╸ Backup dữ liệu thường xuyên ╸ Sử dụng các module hỗ trợ phòng chống SQLi như: Modsecurity trong Apache, URLScan của IIS 40
  • 41. CÁM ƠN THẦY & CÁC BẠN ĐÃ LẮNG NGHE! 41