Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 69 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
69
Dung lượng
3,1 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN _______________________________ KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN GVHD: Th.S NGÔ VĂN CÔNG SVTH: VĨNH THÁI CƯỜNG LỚP: 49-THM MSSV: 4913071009 NHA TRANG -NĂM 2011 Đề tài : Phát hiện và ngăn chặn tấn công bằng SQL INJECTION vào cơ sở dữ liệu sử dụng Web service LỜI NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… ………………………………………………………………………………………… LỜI NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… MỤC LỤC CHƯƠNG 1 : TỔNG QUAN VỀ SQL INJECTION 8 1.1 Đặt vấn đề 8 1.1.1 Đặc trưng của các ứng dụng sử dụng cơ sở dữ liệu 8 1.1.2 Tính chất nghiêm trọng của các cuộc tấn công. 9 a) Các thống kê lịch sử 9 b) Các thống kê an ninh 10 1.2 SQL Injection. 13 1.2.1 Khái niệm SQL Injection 13 1.2.2 Nguyên nhân gây ra lỗi SQL Injection 14 a) Không kiểm tra dữ liệu đầu vào 14 b) Xử lý không đúng kiểu 14 c) Lỗi bảo mật bên trong máy chủ cơ sở dữ liệu 15 1.2.3 Tác hại từ các cuộc tấn công SQL Injection 16 1.3 Tổng kết chương 16 CHƯƠNG 2 : CÁC HÌNH THỨC TẤN CÔNG SQL INJECTION PHỔ BIẾN 18 2.1 Các hình thức tấn công SQL Injection phổ biến 18 2.1.1 Vượt qua kiểm tra lúc đăng nhập (Bypass Login) 18 2.1.2 Dạng tấn công thu thập thông tin dựa trên các phản hồi từ database. 20 a) Tìm điểm yếu của website 20 b) Tìm kiếm các thông tin về cơ sở dữ liệu 21 c) Tìm kiếm trang quản trị 26 d) Tiến hành phá hoại 26 e) Kết luận 26 2.1.3 Blind SQL Injection 27 2.1.3.1 Thực hiện tấn công Blind SQL Injection dựa trên phản hồi 28 2.1.3.2 Thực hiện tấn công Blind SQL Injection dựa trên độ trễ truy vấn 30 2.1.4 Dạng tấn công sử dụng các stored-procedure. 32 2.1.5 Một số cách qua mặt bộ lọc đầu vào. 33 2.2 Cách phòng tránh SQL Injection 34 2.2.1 Về phía người quản trị website 34 2.2.2 Về phía server 36 2.3 Tổng kết chương 37 CHƯƠNG 3 : DỊCH VỤ WEB (WEB SERVICE) 38 3.1 Tìm hiểu về Web Service. 38 3.2 Đặc điểm của dịch vụ web 41 3.2.1 Đặc điểm 41 3.2.2 Ưu và nhược điểm 42 3.2.3 Kiến trúc của dịch vụ web 43 3.2.4 Các thành phần của dịch vụ web 45 3.2.4.1 XML – eXtensible Markup Language 45 3.2.4.2 WSDL - Web Service Description Language 46 3.2.4.3 Universal Description, Discovery, and Integration (UDDI) 47 3.2.4.4 SOAP - Simple Object Access Protocol 48 3.2.5 An toàn cho dịch vụ Web 50 3.2.6 Xây dựng một dịch vụ Web 52 3.2.7 Tích hợp dịch vụ Web theo chuẩn 53 3.3 Xây dựng một web service đơn giản 55 3.4 Tổng kết chương 59 CHƯƠNG 4 : PHÒNG CHỐNG SQL INJECTION BẰNG WEB SERVICE 60 4.1 Đặt vấn đề 60 4.2 Cơ sở lý thuyết 60 4.3 Nguyên tắc hoạt động 62 4.4 Triển khai thực tế. 63 4.4.1 Dịch vụ killChars 63 4.4.2 Dịch vụ Db_2_XML 64 4.4.3 Dịch vụ XPath_XML_Validation 65 4.4.4 Kiểm tra tính hiệu quả của web service. 66 4.5 Hướng phát triển 67 KẾT LUẬN 68 LỜI MỞ ĐẦU Ngày nay, vấn đề bảo mật an ninh hệ thống mạng là một phần rất quan trọng của các công ty, tập đoàn, các tổ chức cơ quan, chính phủ trong cuộc sống xã hội hiện đại. Vấn đề an ninh và bảo mật là chìa khóa tất yếu thành công trong các lĩnh vực kinh tế, chính trị, an ninh quốc phòng và góp phần thúc đẩy sự phát triển toàn cầu nhanh chóng, liên kết khoảng cách địa lý, không gian, thời gian các nơi trên thế giới gần với nhau mà vẫn đảm bảo được an toàn. Thông thường, các nhà phát triển đa số tập trung vào các vấn đề an toàn trong việc chọn hệ điều hành, hệ quản trị CSDL, webserver sẽ chạy ứng dụng gì, Ví dụ, người ta thường quan tâm nhiều đến các lỗ hổng về an toàn trên Iternet Information Services (IIS) hơn là quan tâm đến các đoạn mã của ứng dụng có tiềm ẩn các lỗ hổng nghiêm trọng hay không. Một trong số các lỗ hổng này đó là SQL injection attack. Tại Việt Nam, đã qua thời kì các quản trị website lơ là việc quét virus, cập nhật các bản vá lỗi từ các phần mềm hệ thống, nhưng việc chăm sóc các lỗi của các ứng dụng lại rất ít được quan tâm. Đó là lí do tại sao trong thời gian vừa qua, không ít website tại Việt Nam bị tấn công và đa số đều là lỗi SQL injection. Vậy SQL injection là gì ? Nguyên nhân ? Hậu quả ? Cách phòng tránh ? Được sự hướng dẫn nhiệt tình và chu đáo của thầy Ngô Văn Công, trong 3 tháng làm đề tài tốt nghiệp, em đã tìm hiểu và nghiên cứu đề tài : “Phát hiện và ngăn chặn tấn công bằng SQL INJECTION vào cơ sở dữ liệu sử dụng Web service”. Thông qua đề tài này, em muốn giới thiệu đến mọi người một cái nhìn tổng quan về SQL Injection, khái niệm, nguyên nhân, hậu quả, các phương pháp tấn công phổ biến, cách khắc phục … Từ đó, giúp cho các bạn trẻ mới bước vào thế giới lập trình có nền tảng về vấn đề bảo mật, an ninh mạng, xây dựng được những website có độ an toàn cao. Đề tài của em cũng đề cập đến một loại hình đang phát triển thời gian gần đây là Web Service (Dịch vụ mạng), ưu – nhược điểm, các thành phần chủ yếu, cách xây dựng, bảo mật cho web service … Từ đó, em kết hợp 2 vấn đề trên tạo nên một giải pháp phòng chống SQL Injection mới bằng webservice. Đây là phương pháp hứa hẹn có thể giải quyết triệt để các cuộc tấn công SQL Injection mà các phương pháp trước đây chưa hoàn thiện. Trong phạm vi kiên thức của mình, em xin trình bày những hiểu biết của em về “Phát hiện và ngăn chặn tấn công bằng SQL INJECTION vào cơ sở dữ liệu sử dụng Web service”.” trong bài đồ án này. Đồ án tốt nghiệp đại học GVHD: Th.S Ngô Văn Công SVTH: Vĩnh Thái Cường - 49THM Page 8 CHƯƠNG 1 TỔNG QUAN VỀ SQL INJECTION 1.1 Đặt vấn đề 1.1.1 Đặc trưng của các ứng dụng sử dụng cơ sở dữ liệu Hiện nay, không khó để nhận ra rằng những ứng dụng phổ biến nhất và chiếm thị phần cũng như doanh thu cao nhất đều là những ứng dụng hỗ trợ tính năng quản lý. Dữ liệu là thứ sống còn trong mọi hoạt động nghiệp vụ hiện tại. Chính vì lý do đó, các ứng dụng nghiệp vụ hiện tại đều xây dựng trên những mô hình phát triển gắn liền với cơ sở dữ liệu. An toàn của dữ liệu phụ thuộc vào độ bảo mật của ứng dụng web kết nối tới cơ sở dữ liệu. Các mô hình phát triển ứng dụng Web hiện tại được sử dụng phổ biến nhất là 3 tầng, ngoài ra còn có một số bản cải tiến, mở rộng mô hình này nhằm những mục đích riêng. Hình 1-1. Mô hình ứng dụng 3 tầng Đồ án tốt nghiệp đại học GVHD: Th.S Ngô Văn Công SVTH: Vĩnh Thái Cường - 49THM Page 9 Hình 1-2. Mô hình ứng dụng 4 tầng Các mô hình trên luôn có một số điểm chung, đó là database server chỉ làm nhiệm vụ lưu trữ dữ liệu, database hồi đáp những truy vấn dữ liệu được xây dựng theo chuẩn (ví dụ như SQL). Mọi thao tác xử lý dữ liệu input, output của database server đều được ứng dụng web ở tầng Logic xử lý. Các vấn đề an ninh phát sinh đa phần sẽ nằm ở tầng này. 1.1.2 Tính chất nghiêm trọng của các cuộc tấn công. a) Các thống kê lịch sử - Ngày 01/11/2005, một hacker tuổi vị thành niên đã sử dụng SQL injection để xâm nhập trang chủ của một tạp chí an ninh thông tin Đài Loan từ nhóm Tech Target và ăn cắp thông tin khách hàng. - Ngày 13/01/2006, tội phạm máy tính Nga đã xâp nhập trang web của chính phủ đảo Rhode và ăn cắp dữ liệu thẻ tín dụng từ những cá nhân đã giao dịch với các cơ quan nhà nước. - Ngày 29/07/2007, một tội phạm máy tính đã bôi nhọ trang web của Microsoft tại Vương quốc Anh bằng SQL injection. Trang web The Register của Anh đã dẫn lời phát ngôn viên của Microsoft thừa nhận vấn đề này. Đồ án tốt nghiệp đại học GVHD: Th.S Ngô Văn Công SVTH: Vĩnh Thái Cường - 49THM Page 10 - Vào tháng 1 năm 2008, hàng chục ngàn máy tính cá nhân đã bị nhiễm một mã SQL injection tự động. Loại mã độc này đã khai thác một lỗ hổng trong đoạn mã chương trình sử dụng Microsoft SQL Server - Cuộc tấn công website BGD&ĐT www.moet.gov.vn ngày 27.11.2006 - Một trong những vụ tấn công SQL Injection nổi tiếng nhất là vụ tấn công vào CardSystems Solutions. b) Các thống kê an ninh Theo WhiteHat - một tổ chức có uy tín trong việc nghiên cứu và hỗ trợ các vấn đề an ninh mạng, SQL Injection nằm trong 10 lỗi bảo mật phổ biến nhất hiện nay. 10 lỗi bảo mật phổ biến gần đây nhất : Hình 1-3. Thống kê 10 lỗi bảo mật phổ biến nhất (3/2008) [...]... Công SQL Injection 1.2.1 Khái niệm SQL Injection SQL injection là kĩ thuật tấn công web lợi dụng lỗ hổng trong việc kiểm tra dữ liệu đầu vào của ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu Nó cho phép kẻ tấn công chèn vào các đoạn mã SQL bất hợp pháp với mục đích khai thác lỗ hổng bảo mật tồn tại trong cơ sở dữ liệu của một ứng dụng Lỗ hổng bảo mật này có thể xuất hiện khi ứng dụng. .. bảng users ra khỏi cơ sở dữ liệu c) Lỗi bảo mật bên trong máy chủ cơ sở dữ liệu Đôi khi lỗ hổng có thể tồn tại chính trong phần mềm máy chủ cơ sở dữ liệu, như là trường hợp hàm mysql_real_escape_string()của các máy chủ MySQL Điều này sẽ cho phép kẻ tấn công có thể thực hiện một cuộc tấn công SQL injection thành công dựa trên những ký tự Unicode không thông thường ngay cả khi dữ liệu đầu vào đã được kiểm... Văn Công 1.2.3 Tác hại từ các cuộc tấn công SQL Injection Bằng cách chèn các mã SQL query/command vào input trước khi chuyển cho ứng dụng web xử lí, kẻ tấn công có thể login mà không cần username và password, remote execution, dump data và lấy root của SQL server Cho phép kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng dụng Tác hại từ các cuộc tấn. .. Các bảng trong cơ sở dữ liệu Đây là các bảng có trong cơ sử dữ liệu của website Kẻ tấn công nhận thấy trong số này có bảng “quantri3” có khả năng là bảng chứa các thông tin về người điều hành Tìm kiếm tên cột : Sau khi chọn bảng dữ liệu nghi vấn, kẻ tấn công sẽ thực hiện tìm kiếm tên các cột có trong bảng Để thực hiện điều này, kẻ tấn công sẽ sử dụng hàm group_concat(column_name) và kết hợp truy... trị website trên đã thực hiện việc bảo mật bằng cách tắt các thông báo lỗi trả về từ database, với suy nghĩ rằng không có thông báo lỗi thì kẻ tấn công sẽ không biết dựa vào đâu để tấn công được Tấn công bằng cách thông thường : Việc truy vấn bằng cách thêm ’ vào sau liên kết, hay sử dụng các hàm truy vấn đều không đem lại kết quả Trang web vẫn hiển thị một cách bình thường Lúc này kẻ tấn công sẽ sử dụng. .. trình viên định nghĩa đầu vào dữ liệu không rõ ràng hoặc thiếu bước kiểm tra và lọc kiểu dữ liệu SVTH: Vĩnh Thái Cường - 49THM Page 14 Đồ án tốt nghiệp đại học GVHD: Th.S Ngô Văn Công đầu vào Điều này có thể xảy ra khi một trường số được sử dụng trong truy vấn SQL nhưng lập trình viên lại thiếu bước kiểm tra dữ liệu đầu vào để xác minh kiểu của dữ liệu mà người dùng nhập vào có phải là số hay không... Tác hại từ các cuộc tấn công SQL Injection còn tùy thuộc vào môi trường và cách cấu hình hệ thống Trong SQL Server, nếu ứng dụng sử dụng quyền dbo (quyền của người sở hữu CSDL - owner) khi thao tác dữ liệu, nó 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, … Nếu ứng dụng sử dụng quyền sa (quyền quản trị hệ thống), nó có thể điều khiển toàn bộ hệ quản trị CSDL và với quyền hạn rộng lớn... làm khó những kẻ tấn công không chuyên Đối với những kẻ có trình độ cao, họ sẽ sử dụng một phương pháp tấn công được gọi là Blind SQL Injection Blind SQL Injection là một phương pháp thực hiện SQL Injection trong điều kiện các thông tin khai thác được không được trình bày trực tiếp trên nội dung phản hồi từ database Blind SQL Injection dựa vào việc sử dụng các mệnh đề điều kiện để thực hiện suy luận thông... phiên bản của hệ cơ sở dữ liệu đang sử dụng : Mục đích của việc tìm kiếm phiên bản này là để kẻ tấn công xác định các bước tấn công kế tiếp Đối với mysql các phiên bản từ 5 trở lên, kẻ tấn công có thể sử dụng câu lệnh trực tiếp để lấy thông tin về cơ sở dữ liệu, đối với các phiên bản thấp hơn thì kẻ tấn công phải dùng phương pháp đoán tên bảng và tên cột Kẻ tấn công sẽ thay vị trí số “3” trong câu... 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ó . thầy Ngô Văn Công, trong 3 tháng làm đề tài tốt nghiệp, em đã tìm hiểu và nghiên cứu đề tài : Phát hiện và ngăn chặn tấn công bằng SQL INJECTION vào cơ sở dữ liệu sử dụng Web service . Thông. MSSV: 4913071009 NHA TRANG -NĂM 2011 Đề tài : Phát hiện và ngăn chặn tấn công bằng SQL INJECTION vào cơ sở dữ liệu sử dụng Web service LỜI NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… ………………………………………………………………………………………… LỜI. Blind SQL Injection 27 2.1.3.1 Thực hiện tấn công Blind SQL Injection dựa trên phản hồi 28 2.1.3.2 Thực hiện tấn công Blind SQL Injection dựa trên độ trễ truy vấn 30 2.1.4 Dạng tấn công sử dụng