You are on page 1of 6

ĐỀ TÀI THẢO LUẬN

TÌM HIỂU TẤN CÔNG SQL INJECTION


Nội dung chính:
1.Giới thiệu về SQL Injection
2.Các dạng tấn công SQL Injection
3.Cách phòng chống tấn công SQL Injection
4.Demo tấn công SQL Injection

1. Giới thiệu về SQL INJECTION


SQL là gì?
 Là hình thức tấn công cho phép những kẻ tấn công
lợi dụng lỗ hỏng của việc kiểm tra dữ liệu đầu vào
của 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 để đưa vào thi hành các câu
lệnh SQL bất hợp pháp.
 Điều này gây ra tác hại rất lớn do tin tặc có toàn
quyền sử dụng và thay đổi toàn bộ hệ cơ sở dữ liệu.
 Cách tấn công vào các kho lưu trữ dữ liệu vừa
đơn giản vừa hiệu quả.
1.1 Mục đích tấn công SQL INJECTION
 Đánh cắp dữ liệu từ cơ sở dữ liệu
 Thay đổi dữ liệu trong cơ sở dữ liệu
 Đánh sập một website
1.2 Cách thức hoạt động
2. Phân loại các kiểu tấn công SQL INJECTION
Có 3 kiểu tấn công:
1. In-band SQLi
2. Inferential SQLi (Blind SQLi)
3. Out-of-band SQLi
2.1 In-band SQLi
 Đây là kiểu thường thấy và đơn giản nhất để khai
thác thông tin
 Là kiểu tấn công thực hiện việc chèn mã độc và
trực tiếp nhận về kết quả trên cùng 1 kênh
 In-band SQLi được chia làm 2 loại chính là:
 Error-base SQLi : là kiểu tấn công làm cơ sở
dữ liệu tạo ra thông báo lỗi để lợi dụng khai
thác thông tin
 Union-base SQLi :là kỹ thuật lợi dụng toán
tử UNION SQL để kết hợp nhiều câu lệnh
được tạo bởi Cơ sở dữ liệu để nhận được một
HTTP response, thông tin được chứa trong đó
và có thể khai thác dễ dàng
2.2 Inferential SQLi (Blind SQLi)
 Kiểu tấn công này phát sinh khi 1 ứng dụng dễ bị
tấn công bởi SQL INJECTION nhưng lại có bảo
mật cao hơn 1 chút khi không trả về các kết quả
truy vấn SQL mà được nhập vào từ input như kiểu
In-band
 Inferential SQLi diễn ra chậm do nó dựa trên phản
ứng và các hành vi hoạt động của server, nhưng độ
thiệt thì tương tự với In-band
 Inferential có 2 dạng chính:
 Boolean-base: tấn công dựa việc đánh giá
phản hồi dạng true hoặc false từ web app
 Time-base: Tấn công dựa vào thời gian phản
hồi từ app
Giả sử khi truy cập 1 trang web bán hàng
online, URL có dạng:

URL trên sẽ hiển thị thông tin chi tiết của sản
phẩm của id=1 được lấy từ cơ sở dữ liệu. Câu
lệnh SQL lúc này sẽ là:

Nếu kẻ tấn công thêm chuỗi and 1 = 1


Lúc này câu lệnh SQL sẽ thành
Do 1=1 luôn luôn đúng nên trả về true
 hiển thị chi tiết sản phẩm có id=1
2.3 Out-of-band SQLi
 Cách này thường ít được dùng do nó cần sử
dụng các tính năng mà phải được cho phép ở
sever và được dùng bởi app
 Cách này không thể nhập đầu vào và thu về
kết quả trên cùng một kênh (không dùng
được In-band), hoặc khi sever quá chậm hoặc
không ổn định (không dùng được Inferential)
 Cách này sẽ khiến app gửi kết quả truy vấn về
một kênh khác mà tin tặc kiểm soát
 Nếu một trang web có một form tìm kiếm và
người dùng nhập vào một câu lệnh SQL
không hợp lệ, hacker có thể sử dụng form tìm
kiếm đó để gửi câu lệnh và thiết lập một trang
web khác như là một đích đến để nhận kết
quả trả về từ cơ sở dữ liệu
3. Cách phòng chống
 Loại bỏ các ký tự và từ khóa nguy hiểm (như: --,
select, where,...)
 Nên loại bỏ bất kì thông tin kỹ thuật nào chứa
trong thông điệp chuyển xuống cho người dùng
khi có lỗi
 Kiểm soát chặc chẽ tất cả các dữ liệu nhận được
từ đối tượng Request (như: giới hạn chiều dài
của chuỗi nhập liệu)
 Tránh dùng đến các quyền như dbo hay sa
4. Demo tấn công SQL INJECTION

You might also like