2.2. MỘT SỐ KỸ THUẬT TẤN CÔNG SQL INJECTION
2.2.4.5. Tấn công dựa vào các thủ tục lưu trữ
Mục đích: Thực hiện leo thang đặc quyền, từ chối dịch vụ, thực hiện các
lệnh từ xa.
Mô tả: Kiểu tấn công này cố gắng thực hiện các thủ tục lưu trữ đang có
trong cơ sở dữ liệu. Ngày nay, hầu hết trong các cơ sở dữ liệu có lưu các thủ tực lưu trữ để mở rộng tính năng của một cơ sở dữ liệu và cho phép nó tương tác với hệ điều hành. Do đó khi kẻ tấn cơng xác định được cơ sở dữ liệu đang được sử dụng, SQLIA có thể giả mạo để thực thi các thủ tục lưu trữ, bao gồm các thủ tục mà tương tác với hệ điều hành. Một nhận thức sai phổ biến là sử dụng các thủ tục lưu trữ để viết các ứng dụng Web làm cho chúng khó thể bị tổn thương bởi SQLIA. Tuy nhiên các thủ tục này có thể bị tấn cơng giống như các ứng dụng thơng thường khác.
Ngồi ra, bởi vì các thủ tục lưu trữ thường được viết dưới dạng ngơn ngữ kịch bản, chúng có thể chứa các kiểu mất an toàn khác, như tràn bộ đệm, điều này cho phép kẻ tấn công chạy đoạn mã bất kỳ trên server hoặc leo thang đặc quyền.
Đoạn chương trình sau mơ tả một thủ tục thực hiện xác thực người dùng.
CREATE PROCEDURE DBO.isAut,henticated
@userName varchar2, @pass varchar2, @pin int AS
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
WHERE login=’" +@userName+ "’ and pass=’" +@password+
"’ and pin=" +@pin); GO
Ví dụ: Trong trường hợp này, các thủ tục lưu trữ được tham số hóa có thể
bị khai thác bởi SQLIA. Giả sử chuỗi truy vấn được tạo tại dịng 5,6,7 của ví dụ được thay bởi lời gọi thủ tục lưu trữ được định nghĩa ở trên. Thủ tục này trả lại giá trị đúng/sai để chỉ ra người dùng được xác nhận chính xác. Để thực hiện một SQLIA, kẻ tấn công tiêm đoạn:
“ ’ ; SHUTDOWN; --”
vào trong trường userName hoặc password. Khi đó thủ tục sẽ tạo câu truy vấn sau:
SELECT accounts FROM users WHERE
login=’doe’ AND pass=’ ’; SHUTDOWN; -- AND pin=
Tại đây, tấn công này làm việc giống như tấn công piggy-back. Truy vấn thứ nhất thực hiện bình thường, sau đó truy vấn nguy hiểm thứ hai được thực hiện và kết quả là tắt cơ sở dữ liệu. Ví dụ này chỉ ra rằng thủ tục lưu trữ có thể bị tấn cơng giống như các mã lệnh ứng dụng thông thường.