Tấn công dựa vào các biến đổi thay thế

Một phần của tài liệu Nghiên cứu tìm hiểu một số dạng tấn công sql injection vào hệ quản trị csdl microsoft sql server (Trang 47 - 48)

2.2. MỘT SỐ KỸ THUẬT TẤN CÔNG SQL INJECTION

2.2.4.7. Tấn công dựa vào các biến đổi thay thế

Mục đích: Trốn tránh việc phát hiện

Mơ tả: Đoạn mã được tiêm vào được biến đổi để tránh bị phát hiện từ

cách viết mã để bảo vệ và một số kỹ thuật ngăn chặn tự động. Kiểu tấn công này được sử dụng cùng với các tấn cơng khác. Nói cách khác, phương pháp biến đổi thay thế không phải là một tấn công duy nhất tới ứng dụng. Phương pháp này phép kẻ tấn công lẩn tránh các kỹ thuật phát hiện và ngăn chặn và khai thác các lỗ hổng mà các phương pháp khác không thể thực hiện được. Các kỹ thuật lẩn tránh này thường là cần thiết, bởi vì hành động lập mã bảo vệ là phổ biến như quét các “ký tự xấu” đã được biết, như các tốn tử trích dẫn và chú thích.

Để lẩn tránh khỏi bị phát hiện, kẻ tấn công đưa ra các phương pháp thay thế các biến đổi chuỗi dùng để tấn cơng. (ví dụ, sử dụng biến đổi ký tự hệ HEXA, ASCII, và Unicode). Các kỹ thuật quét và phát hiện thông thường không đánh giá tất cả các chuỗi được biến đổi đặc biệt, do vậy các tấn cơng dạng này khơng bị phát hiện.

Ví dụ, một cơ sở dữ liệu có thể sử dụng biểu thức char(120) để biểu

diễn ký tự được biến đổi thay thế “x”, nhưng char(120) khơng có ý nghĩa đặc biệt trong ngữ cảnh của ngôn ngữ ứng dụng. Trong thực tế khó có một cách nào bảo vệ chống lại phương pháp biến đổi thay thế hiệu quả, bởi vì nó địi hỏi người phát triển phải xem xét tất cả các khả năng biến đổi mà có thể ảnh hưởng tới câu truy vấn. Bởi vậy kẻ tấn công rất thành công trong việc sử dụng các biến đổi thay thế để che giấu các chuỗi tấn cơng.

Ví dụ: Do mọi kiểu tấn cơng có thể được biểu diễn sử dụng biến đổi

thay thế, ở đây đề cập một ví dụ đơn giản về cách tấn cơng được biến đổi thay thế có thể xuất hiện.

Nghiên cứu tìm hiểu một số dạng tấn cơng SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

“legalUser’; exec(0x73687574646f776e) -- ”.

Khi đó câu truy vấn được tạo ra :

SELECT accounts FROM users WHERE login=’legalUser’;

exec(char(0x73687574646f776e)) -- AND pass=’’ AND pin=

Ví dụ này sử dụng hàm char() và biến đổi hệ HEXA. Hàm char() nhận tham số là một số nguyên hoặc HEXA, biến đổi và trả lại một thể hiện của ký tự đó. Dãy các chữ số 0x73687574646f776e là biến đổi HEXA của chuỗi “SHUTDOWN”. Bởi vậy, khi cơ sở dữ liệu biên dịch truy vấn, thì lệnh SHUTDOWN này được cơ sở dữ liệu thực hiện.

Một phần của tài liệu Nghiên cứu tìm hiểu một số dạng tấn công sql injection vào hệ quản trị csdl microsoft sql server (Trang 47 - 48)

Tải bản đầy đủ (DOC)

(87 trang)
w