Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
407,5 KB
Nội dung
G V : M a i X u â n H ù n g N h ó m T H : Đ o à n P h ư ơ n g T h ả o N g u y ễ n M i n h N g ọ c Đ ỗ T h ị N g a TẤN CÔNG WEB SITE BẰNG SQL INJECTION VÀ CÁCH PHÒNG CHỐNG TẤN CÔNG WEB SITE BẰNG SQL INJECTION VÀ CÁCH PHÒNG CHỐNG SQL INJECTION LÀ GÌ? CÁC DẠNG TẤN CÔNG CỦA SQL INJECTION. CÁC BƯỚC TẤN CÔNG. PHƯƠNG PHÁP PHÒNG CHỐNG TẤN CÔNG SQL INJECTION . I. TẤN CÔNG WEBSITE BẰNG 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 ứ ụ ỗ ủ h qu n tr c s d li u tr v đ inject (tiêm vào) 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 c s d li u 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 h qu n tr c s d li u ệ ượ ả ằ ệ ả ị ơ ở ữ ệ nh SQL Server, MySQL, Oracle, DB2, Sysbase ư SQL INJECTION Là một trong số những lỗi bảo mật phổ biến nhất Xác xuất gặp phải lỗ hổng bảo mật ở dạng này khá cao Được sử dụng nhiều bởi tính đơn giản, không đòi hỏi nhiều công cụ hỗ trợ Thời gian khắc phục điểm yếu này thường khá lâu dẫn đến gây hậu quả nặng nề hơn II. CÁC DẠNG TẤN CÔNG BẰNG SQL INJECTION D ng t n công v t qua ki m tra đăng nh pạ ấ ượ ể ậ D ng t n công s d ng câu l nh SELECTạ ấ ử ụ ệ D ng t n công s d ng câu l nh INSERTạ ấ ử ụ ệ D ng t n công s d ng stored-proceduresạ ấ ử ụ DẠNG TẤN CÔNG VƯỢT QUA KIỂM TRA ĐĂNG NHẬP V i 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 dùng các câu l nh SQL thao tác trên c ậ ờ ỗ ệ ơ s d li u c a ng d ng webở ữ ệ ủ ứ ụ Xét một ví dụ điển hình, thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu. Sau khi người dùng nhập username, password và click nút submit, username và password này sẽ được gửi đến ứng dụng và xử lý chúng. M t ộ câu truy v n SQL s đ c t o ra và l y các hàng kh p v i thông tin ấ ẽ ượ ạ ấ ớ ớ ng i dùng cung c p. Ng i dùng lúc đó s đ c ch ng th c và ườ ấ ườ ẽ ượ ứ ự chuy n đ n trang yêu c u.ể ế ầ DẠNG TẤN CÔNG VƯỢT QUA KIỂM TRA ĐĂNG NHẬP Tuy nhiên, n u không đ c ki m tra k s d b ế ượ ể ỹ ẽ ễ ị l i SQL injectionỗ . Ví d đo n code sau đâu b l i SQL ụ ạ ị ỗ injection: string strQry = “SELECT Count(*) FROM Users WHERE Username=’” + txtUser.Text + “‘ AND Password =’” + txtPassword.Text + “‘”; N u ng i dùng đăng nh p bình th ng, ví d username là ế ườ ậ ườ ụ ‘Jason’ và password là ‘Springfield’. Khi đó ng d ng s th c ứ ụ ẽ ự hi n câu truy v n:ệ ấ SELECT Count(*) FROM Users WHERE Username = ‘Jason’ AND Password = ‘Springfield’. DẠNG TẤN CÔNG VƯỢT QUA KIỂM TRA ĐĂNG NHẬP Tuy nhiên, n u đăng nh p v i username và Password nh sau:ế ậ ớ ư Username là “ Thao’ or 1=1” , password là “Springfield” khi đó câu truy vấn sẽ được thực hiện như sau:SELECTCount(*)FROMUsersWHEREUsername=‘Thao’OR1 =1—ANDPassword=‘Springfield’. Chú ý rằng sau dấu – là comment. Nghĩa là câu truy vấn thật sự là: SELECTCount(*) FROMUsersWHEREUsername=‘Blah’OR1=1. Như vậy là người tấn công sẽ vượt qua phần kiểm tra đăng nhập. DẠNG TẤN CÔNG SỬ DỤNG CÂU LỆNH INSERT Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia. Chức năng không thể thiếu là sau khi đăng kí thành công, ngƣời dùng có thể xem và hiệu chỉnh thông tin của mình. 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. DẠNG TẤN CÔNG SỬ DỤNG STORE-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'. Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ' ; 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. [...]...DẠNG TẤN CÔNG SỬ DỤNG CÂU LỆNH SELECT Dạng tấn công này phức tạp hơn Để thực hiện được kiểu tấn công này, 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ò tìm các điểm yếu khởi đầu cho việc tấn công Xét một ví dụ rất thƣờng gặp trong các website về tin tức Thông thường, sẽ có một trang nhận ID của... MySQL cho biết thông tin về database đang chạy website -Ở đây website đang sử dụng database dem04ngang0 KHAI THÁC DỮ LIÊU Tiếp tục khai thác dữ liệu http://localhost:6789/demo/information.php?item=-7 union select 1,2,3,4,5,6,user() Hàm user() là hàm của MySQL cho biết thông tin về user đang chạy database website Ở đây user đang schayj database của website là: root@localhost KHAI THÁC DỮ LIỆU Khai... truy vấn nội dung của tin có ID này III CÁC BƯỚC TẤN CÔNG MỘT WEBSITE BẰNG SQL INJECTION Bước 1: Tìm kiếm lỗi Bước 2: Khai thác lỗi TÌM KIẾM LỖI - SQL injection phát sinh lỗi khi người lập trình không kiểm soát chặt chẽ dữ liệu đầu vào trước khi thực thi câu lệnh SQL để truy vấn dữ liệu Cách đơn giản để phát hiện lỗi SQL injection là thêm kí tự “ ‘” vào URL truy vấn VD:1 URL mà người dùng truy... có nghĩa là: Liệt kê NAME và PASSWORD của table nhanvien 0x2f là dấu “/” được đổi ra mã hex Ở đây ta lấy đựơc user là admin pass: 1234 Có thông tin quản tiến hành login vào hệ thống và kiểm soát hệ thống đó PHÒNG CHỐNG SQL INJECTION Như vậy, có thể thấy lỗi SQL injection khai thác những bất cẩn của các 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... 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 Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu Kiểm soát chặt chẽ dữ liệu nhập vào KIỂM SOÁT CHẶT CHẼ DỮ LIỆU NHẬP VÀO Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ các câu lệnh SQL là bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng Request (Request, Request.QueryString, Request.Form, ... 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 Để tránh điều này, đơn giản hãy kiểm tra dữ liệu có đúng kiểu hay không bằng hàm IsNumeric() Ngoài ra có thể xây dựng hàm loại bỏ một số kí tự và từ khóa nguy hiểm như: ;, , select, insert, xp_, … ra khỏi chuỗi dữ liệu nhập từ phía người dùng để hạn chế các tấn công dạng... thông tin kĩ thuật nào chứa trong thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi Các thông báo lỗi thông thường tiết lộ các chi tiết kĩ thuật có thể cho phép kẻ tấn công biết được điểm yếu của hệ thống CẢM ƠN THẦY VÀ CÁC BẠN ĐÃ LẮNG NGHE! ... xp_, … ra khỏi chuỗi dữ liệu nhập từ phía người dùng để hạn chế các tấn công dạng này THIẾT LẬP CẤU HÌNH AN TOÀN CHO HỆ QUẢN TRỊ CSDL Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài khoản người dùng mà ứng dụng web đang sử dụng Các ứng dụng thông thường nên tránh dùng đến các quyền như dbo hay sa Quyền càng bị hạn chế, thiệt hại càng ít Ngoài ra để tránh các nguy cơ từ SQL... dữ liệu bằng cách sử dụng truy vấn union Khi đó URL sẽ có dạng: http://localhost:6789/demo/information.php?item=7 union select 1,2,3,4,5,6,7 KHAI THÁC LỖI Tới đây ta sẽ thấy dữ liệu của truy vấn: Select * from sanpham where item=7; Che lấp dữ liệu của truy vấn Union select 1,2,3,4,5,6,7 Vì vậy để hiển thị được dữ liệu của truy vấn sau ta loại bỏ dữ liệu của truy vấn trước bằng cách đặt giá... của MySQL cho biết thông tin về user đang chạy database website Ở đây user đang schayj database của website là: root@localhost KHAI THÁC DỮ LIỆU Khai thác chi tiết hơn dữ liệu cần biết được các table và column cua databse: Tiếp tục khai thác dữ liệu http://localhost:6789/demo/information.php?item=-7 union select 1,2,3,4,5,6, group_concat(table_name ) from information_schema.tables where table_schema=database() . c Đ ỗ T h ị N g a TẤN CÔNG WEB SITE BẰNG SQL INJECTION VÀ CÁCH PHÒNG CHỐNG TẤN CÔNG WEB SITE BẰNG SQL INJECTION VÀ CÁCH PHÒNG CHỐNG SQL INJECTION LÀ GÌ? CÁC DẠNG TẤN CÔNG CỦA SQL INJECTION INJECTION. CÁC BƯỚC TẤN CÔNG. PHƯƠNG PHÁP PHÒNG CHỐNG TẤN CÔNG SQL INJECTION . I. TẤN CÔNG WEBSITE BẰNG SQL INJECTION SQL injection là m t k thu t cho phép nh ng k t n ộ ỹ ậ ữ ẻ ấ công l i d ng. nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe. DẠNG TẤN CÔNG SỬ DỤNG CÂU LỆNH SELECT D ng t n công này ph c t p h n. Đ th c hi n ạ ấ ứ ạ ơ ể ự ệ đ c ki u t n công này, k t n công ph i có kh