Dạng tấn công sử dụng Stored-Procedures

Một phần của tài liệu NGHIÊN cứu bảo đảm AN TOÀN THÔNG TIN BẰNG KIẾM SOÁT “lỗ HỔNG” TRONG DỊCH vụ WEB (Trang 40 - 41)

“Stored Procedure” được dùng trong lập trình Web với mục đích giảm sự phức tạp trong ứng dụng và tránh bị tấn công bằng kĩ thuật SQL Injection. Tuy nhiên hacker vẫn có thể lợi dụng “Stored Procedure” để tấn cơng vào hệ thống.

Việc tấn công bằng “stored-procedures” sẽ gây tác hại lớn, nếu ứng dụng được thực thi với quyền quản trị hệ thống 'sa'.

Ví dụ 15: nếu ta thay đoạn mã dạng:

'; EXEC xp_cmdshell ‘cmd.exe dir C:'.

Hệ thống sẽ thực hiện lệnh liệt kê thư mục trên 0 đĩ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.

Ví dụ 16:

Stored procedure sp_login gồm hai tham số là username và password. Nếu nhập:

Username: nhimmap Password: ‘;shutdown--

Lệnh gọi stored procedure như sau:

exec sp_login ‘nhimmap’,‘’;shutdown--’

Dấu chấm phẩy (;) kết thúc truy vấn SQL và cho phép thi hành lệnh SQL mới. Lúc này, “Shutdown” khơng cịn là password, nó trở thành lệnh thực thi dừng SQL, dấu “--” thơng báo khơng làm gì tiếp theo.

2.3.5. Biện pháp phòng tránh:

Lỗi SQL injection khai thác những bất cẩn của lập trình viên phát triển ứng dụng web, khi xử lí các dữ liệu nhập vào để xây dựng câu lệnh SQL. Tác hại từ lỗi SQL injection tùy thuộc vào mơi trường và cách cấu hình hệ thống.

Nếu ứng dụng sử dụng quyền “dbo” (quyền của người sở hữu CSDL) khi thao tác dữ liệu, nó có thể xóa tồn bộ các bảng dữ liệu, tạo các bảng dữ liệu mới, ... Nếu ứng dụng sử dụng quyền “sa” nó có thể điều khiển tồn bộ hệ quản trị CSDL, và với quyền hạn rộng 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.

Để phịng tránh, ta có thể thực hiện ở hai mức:

Một phần của tài liệu NGHIÊN cứu bảo đảm AN TOÀN THÔNG TIN BẰNG KIẾM SOÁT “lỗ HỔNG” TRONG DỊCH vụ WEB (Trang 40 - 41)

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

(74 trang)
w