MSSV: 0912312 Họ tên: Nguyễn Thị Bích Ngọc Email: violet.glass9x86@gmail.

com Điện thoại: 01694806950

SQL INJECTION
I. TÌM HIỂU NỘI DUNG
1. Khái niệm về SQL Injection SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của HQT CSDL trả về để inject và thi hành các câu lệnh SQL bất hợp pháp, SQL injection có thể cho phép những kẻ tấn công thực hiện các thao tác delete, insert, update, … trên CSDL của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lý bằng các HQT CSDL như: SQL Server, MySQL, Oracle, DB2, Sysbase… 2. Các cách tấn công SQL Injection

a. Vượt qua kiểm tra đăng nhập
Trong dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi sử dụng các câu lệnh SQL thao tác trên CSDL của ứng dụng web. Thông thường để cho phép người dung truy cập vào các trang web được bảo mật, hệ thống thường có trang đăng nhập để yêu cầu người dùng nhập thông tin về username và password. Khi người dùng nhập thông tin xong, hệ thống sẽ kiểm tra username và password có hợp lệ hay khôngđể quyết định cho phép hay từ chối thực hiện tiếp. VD: sử dụng ASP, có 2 trang: 1 HTML và 1 ASP để xử lý thông tin đăng nhập Trang nhập liệu: Login.html

-

Trang xử lý nhập liệu: execlogin.asp

Chỗ sơ hở trong đoạn mã xử lý nhập liệu trên mà tin tặc có thể lợi dụng để tấn công nằm ở chỗ dữ liệu nhập vào từ người dùng được dùng để xây dựng trực tiếp câu lệnh SQL.Ví dụ, nếu người dùng nhập chuỗi sau vào cả username và password: ' or 'a' = 'a. Khi đó, câu SQL sẽ trở thành

kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò ra các điểm yếu khởi đầu cho việc tấn công. tin tặc có thể lợi dụng sơ hở trong câu SQL để nhập vào trường tên tác giả bằng chuỗi giá trị: ' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' và khi câu truy vấn đầu thực hiện không thành công. thường cho phép người dùng nhập vào các thông tin tìm kiếm như họ.SELECT * FROM T_USER WHERE USER_NAME=' ' OR 'a' = 'a' AND USER_PASSWORD =' ' OR 'a'= 'a' Sẽ trả về tất cả các dòng của table T_USER và đọan mã tiếp thep xử lý người dùng đăng nhập bất hợp pháp này như người dùng hợp lệ. tên. Ví dụ: ta có cú pháp của một câu INSERT như sau: INSERT INTO TableName VALUES('Value One'. Tấn công dung câu INSERT Thông thường trong các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia thường có chức năng cho người dùng hiệu chỉnh các thông tin cá nhân của mình sau khi đã đăng kí thành công. b. câu truy vấn trên sẽ thành câu truy vấn thực hiện xóa bảng c. SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào. bởi vì nếu ta nhập vào trường thứ nhất chuỗi sau: ' + (SELECT TOP 1 FieldName FROM TableName) + ' Lúc đó câu SQL sẽ là .'Value Two'. … Đoạn mã thường gặp là: - - Giống như khi tấn công bằng cách vượt đăng nhập.'Value Three') Và một đoạn mã xây dựng câu lệnh SQL có dạng: thì sẽ bị lỗi. Một đoạn mã khác: ' DROP TABLE T_AUTHORS --. chương trình sẽ tiếp tục thực hiện câu truy vấn tiếp theo sau từ khóa UNION. Tấn công dung câu SELECT Đây là dạng tấn công phức tạp hơn. Để thự hiện kiểu tấn công này. VD: Trong các trang tìm kiếm.

lúc thực hiện lệnh xem thông tin.'abc'.exe dir C: '. Tấn công sử dụng STRORE-PROCEDURES Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống 'sa'. 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.. Cách phòng tránh.) và ở mức CSDL (Oracle) a.wikipedia. xem như bạn đã yêu cầu thực hiện thêm một lệnh nữa đó là: SELECT TOP 1 FieldName FROM TableName d. Java.. nếu ta thay đoạn mã tiêm vào dạng: ' .NET. Tài liệu tham khảo phần 2: http://vi. EXEC xp_cmdshell „cmdd. Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.org/wiki/SQL_injection 3.exe. ASP. bảo vệ hệ thống trước cách tấn công SQL Injection ở 2 mức: trên ứng dụng (PHP. Trên mức ứng dụng  Tránh dùng việc nối chuỗi để tạo câu SQL như sau:  Dùng parameter query để tránh lỗi do SQL injection . fg Ví dụ dùng stored-procedures: stored-procedure sp_login gồm 2 tham số là username và password Nếu nhập: - Lệnh gọi stored-procedure như sau: Lệnh shutdown thực hiện dừng SQL server ngay lập tức e.'def ') Khi đó.INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' '.. Ví dụ.

Một số cách cài đặt các chức năng kiểm tra dữ liệu cơ bản o Cách 1: Thay thế dấu nháy đơn - o Cách 2: Từ chối dữ liệu bất hợp lệ o Cách 3: Chỉ chấp nhận dữ liệu hợp lệ . Error messages Error messages vô tình cung cấp thông tin cho kẻ tấn công thực hiện “thử & sai” -> Cần hạn chế chuyển những thông điệp chứa thông tin kỹ thuật xuống cho người dùng  Kiểm tra dữ liệu . .Khả băng thực hiện của 3 giải pháp trên o Giải pháp 1: khó thực hiện  Do dữ liệu bất hợp lệ rất đa dạng nên người lập trình không biết được tất cả o Giải pháp 2: khó thực hiện  Dữ liệu bất hợp lệ luôn thay đổi và cùng với việc pháp triển các kiểu tấn công mới o Giải pháp 3: tốt hơn 1 và 2 nhưng có một số hạn chế khi cài đặt  Cách bảo mật tốt nhất là kết hợp 2 và 3.Có 3 giải pháp: o Giải pháp 1: Cố gằng kiểm tra và chỉnh sửa để làm cho dữ liệu hợp lệ o Giải pháp 2: Loại bỏ những dữ liệu bất hợp lệ o Giải pháp 3: Chỉ chấp nhận những dữ liệu hợp lệ .

Kiểm tra những tài khoản nào có thể truy xuất đến những đối tượng nào o Đối với những tài khoản của một ứng dụng nào đó dùng để truy xuất CSDL thì chỉ được cấp quyền hạn cần thiết tối thiểu để truy xuất đến những đối tượng nó cần dùng ..Kiểm tra lớp sửa chữa o Có một số cách tấn công như “buffer overflow”.Kiểm tra các đối tượng tồn tại o Nhiều extended stored procedure có thể được xóa bỏ một cách an toàn. xp_starmail.php khai báo lại username và password Các chức năng: o Đăng ký o Đăng nhập o Thay đổi mật khẩu o Xem người dùng . “format string” thường chú ý đến lớp bảo vệ này . - ỨNG DỤNG Ngôn ngữ sử dụng: PHP Mô tả ứng dụng: trang web đơn giản cho phép đăng ký thành viên. thì cũng nên xem xét việc loại bỏ luôn những tập tin . Tài liệu tham khảo cho phần 3 http://www. Mức CSDL .scribd. đơn giản hãy kiểm tra dữ liệu có đúng kiểu hay không bằng hàm IsNumeric().Thay đổi “Startup và chạy SQL Server” ở mức người dùng quyền hạn thấp trong SQL Server Security c.com/vdo_1/d/64688485/7-Cach-Phong-Tranh-SQL-Injection#outer_page_50 .Kiểm tra các phiên làm việc trên server .Kiểm tra tất cả các tài khoản có trong SQL Server o Chỉ tạo tài khoản có quyền thấp cho các ứng dụng o Loại bỏ những tài khoản không cần thiết o Đảm bảo tất cả các tài khoản có một mật khẩu hợp lệ . b.SQL Server Lockdown .Cách 4: Trong trường hợp dữ liệu nhập vào là số  Lỗi xuất phát từ việc thay thế một giá trị được tiên đoán là dữ liệu số bằng chuỗi chứa câu lệnh SQL bất hợp pháp. Nếu điều này được thực hiện.xp_cmdshell. sp_makewebtask .Bài giảng của giảng viên: Phạm Thị Bạch Huệ o II. xp_sendmail. đăng nhập Hướng dẫn: vào file config.dll chứa mã của các extended stored procedure o Xóa bỏ tất cả CSDL mẫu như “northwind” và “pubs” o Xóa các stored procedure không dùng như: master. Để tránh điều này.

Sign up to vote on this title
UsefulNot useful