Tấn công dựa vào các truy vấn trái phép/sai logic

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 40 - 41)

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

2.2.4.2.Tấn công dựa vào các truy vấn trái phép/sai logic

Mục đích: Xác định các tham số có thể tiêm, nhận dạng fingerprint của cơ

sở dữ liệu, trích dữ liệu

Mô tả: Tấn công này cho phép kẻ tấn công thu thập thông tin quan trọng

về kiểu và cấu trúc của cơ sở dữ liệu back-end của ứng dụng Web. Tấn công này được xem như là bước thu thập thông tin, tài liệu để hỗ trợ cho các tấn công khác. Kiểu tấn công này đưa ra các lỗ hổng dựa vào các trang thông báo lỗi mặc định được trả về từ các server ứng dụng vì các lỗi này thường được mô tả chi tiết. Trong thực tế, thông báo lỗi được tạo ra thường liên quan đến các tham số mà kẻ tấn công tiêm vào. Ban đầu thông tin lỗi thêm vào dự định hỗ trợ cho lập trình viên gỡ rối ứng dụng, sau này kẻ tấn cơng sử dụng nó để thu thập thông tin về giản đồ của cơ sở dữ liệu.

Khi thực hiện tấn công này, kẻ tấn công cố gắng tiêm các lệnh làm gây ra lỗi cú pháp, lỗi chuyển đổi kiểu hoặc lỗi logic vào cơ sở dữ liệu.

Các lỗi cú pháp có thể được sử dụng để xác định các tham số có thể bị tiêm. Các lỗi định kiểu có thể được sử dụng để suy luận ra kiểu dữ liệu của các cột hoặc để trích dữ liệu. Các lỗi logic thường liên quan đến tên của các bảng và cột.

Ví dụ: Theo ví dụ, tấn cơng này gây ra một lỗi khi chuyển đổi kiểu dữ

liệu. Để thực hiện điều này, kẻ tấn công tiêm đoạn lệnh sau vào trường pin :

“convert(int,(select top 1 name from sysobjects where xtype=’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

SELECT accounts FROM users WHERE login=’’ AND

pass=’’ AND pin= convert (int,(select top 1 name from sysobjects where xtype=’u’))

Trong chuỗi tấn công này, câu truy vấn cố gắng trích bảng người dùng đầu tiên (xtype=’u’) từ bảng metadata của cơ sở dữ liệu (giả định sử dụng Microsoft SQL Server, thì các bảng metadata được gọi là sysobjects). Sau đó truy vấn này chuyển đổi tên bảng thành một số nguyên. Do việc chuyển đổi kiểu là không hợp pháp, cơ sở dữ liệu đưa ra thông báo lỗi. Đối với Microsoft SQL Server, lỗi này sẽ là “Microsoft OLE DB Provider for SQL Server

(0x80040E07) Error converting nvarchar value ’CreditCards’ to a column of data type int.”

Như vậy kẻ tấn cơng sẽ thu thập được hai thơng tin có ích. Đầu tiên, kẻ tấn cơng có thể biết đây là cơ sở dữ liệu SQL Server. Thứ hai thông báo lỗi liên quan đến giá trị của chuỗi mà gây ra lỗi khi chuyển đổi kiểu. Trong trường hợp này, giá trị này là tên của bảng được định nghĩa trong cơ sở dữ liệu là “CreditCards”. Sử dụng thông tin về giản đồ của cơ sở dữ liệu, kẻ tấn cơng có thể mở rộng các tấn công và mục tiêu là các mẩu thông tin cụ 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 40 - 41)