e) Kết luận
2.1.4 Dạng tấn công sử dụng các stored-procedure
Trong các hệ quản trị cơ sở dữ liệu, các lập trình viên đã tạo sẵn cho người dùng một số hàm có sẵn, phục vụ mục đích truy vấn cơ sở dữ liệu dễ dàng hơn. Các stored-procedure này đều bắt đầu bằng “xp_”, ví dụ xp_cmdshell, xp_startmail, xp_sendmail, xp_makewebtask … với các mục đích sử dụng khác nhau.
Để sử dụng các stored-procedure này thì ứng dụng phải được cấp quyền. Trong SQL Server, một số quyền mặc định bao gồm dbo (quyền của người sở hữu cơ sở dữ liệu) - có thể xóa toàn bộ các bảng dữ liệu, tạo các bảng dữ liệu mới); sa (quyền quản trị hệ thống) - có thể điều khiển toàn bộ hệ quản trị cơ sở dữ liệu và với quyền hạn rộng lớn như vậy nó có thể tạo ra các tài khoản người dùng bất hợp pháp để điều khiển hệ thống của bạn.
Đây là một trong những lỗ hỏng chết người mà những kẻ tấn công có thể khai thác. Nếu ứng dụng lỗi SQL Injection có quyền dbo hay sa thì việc sử dụng các stored-procedure sẽ rất dễ dàng.
SVTH: Vĩnh Thái Cường - 49THM Page 33 Đầu tiên, kẻ tấn công sẽ tìm kiếm trang bị lỗi SQL Injection một cách thông thường. Sau đó, họ sẽ chèn vào các câu lệnh điều khiển các stored- procedure với mục đích tìm kiếm thông tin về server, các website nằm cùng server, xóa dữ liệu server …
Ví dụ, nếu kẻ tấn công chèn vào một form login, một liên kết, hay trang tìm kiếm của website bị lỗi SQL Injection đoạn mã sau :
' ; 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
Hoặc :
' ; EXEC xp_cmdshell ‘cmd.exe format C: '
Tương đương với việc xóa sạch toàn bộ dữ liệu ở ổ đĩa C của server.