Vào một số trang của sinhvienit báo lỗi nghinx năm 2024

MỤC LỤC LỜI CẢM ƠN .ii LỜI CAM ĐOAN iii DANH MỤC HÌNH VẼ iv CHƢƠNG TỔNG QUAN VỀ ỨNG DỤNG WEB VÀ SQL INJECTION 1.1 Tổng quan ứng dụng web 1.2 Tổng quan SQL Injection CHƢƠNG 23 KIỂM TRA CÁC LỖ HỔNG SQL INJECTION 23 2.1 Giới thiệu 23 2.2 Tìm kiếm lỗ hổng SQL injection 23 2.3 Kiểm tra toàn diện 37 2.4 Kiểm tra thủ tục 38 2.5 Đánh giá kết 39 2.6 Công cụ kiểm tra lỗ hổng website 39 CHƢƠNG 42 MỘT SỐ KỸ THUẬT TẤN CÔNG SQL INJECTION 42 3.1 Vƣợt qua kiểm tra lúc đăng nhập 42 3.2 Câu lệnh SELECT 43 3.3 Câu lệnh INSERT 48 3.4 Stored Procedures 49 3.5 Blind SQL Injection 50 3.6 Demo công Sql injection 51 CHƢƠNG 57 MỘT SỐ GIẢI PHÁP PHÒNG CHỐNG SQL INJECTION 57 4.1 Giải pháp phòng chống SQL injection [nhƣ demo chƣơng mục 3.6]57 4.2 Phòng chống từ mức xây dựng mã nguồn ứng dụng 62 4.3 Các biện pháp bảo vệ từ mức tảng hệ thống 67 4.4 Đề xuất giải pháp công nghệ 72 i LỜI CẢM ƠN Tôi xin chân thành cảm ơn thầy giáo tận tình hƣớng dẫn, giảng dạy suốt trình học tập trƣờng Đại học Bách khoa Hà Nội Xin chân thành cảm ơn thầy giáo hƣớng dẫn TS Phạm Đăng Hải tận tình, chu đáo hƣớng dẫn tơi thực luận văn Mặc dù có nhiều cố gắng để thực luận văn cách hoàn chỉnh Song kiến thức kinh nghiệm tơi cịn hạn chế nên khơng thể tránh khỏi thiếu sót định mà thân chƣa thấy đƣợc Tôi mong nhận đƣợc đóng góp q thầy, giáo và bạn đồng nghiệp để luận văn đƣợc hồn chỉnh Tơi xin chân thành cảm ơn! Hà Nội, ngày 20 tháng 11 năm 2016 Học viên Vũ Ngọc Tuấn ii LỜI CAM ĐOAN Tôi xin cam đoan số liệu kết nghiên cứu luận văn trung thực chƣa đƣợc sử dụng để bảo vệ học vị Mọi giúp đỡ cho việc thực luận văn đƣợc cảm ơn thơng tin trích dẫn luận văn đƣợc rõ nguồn gốc rõ ràng đƣợc phép công bố Hà Nội, ngày 20 tháng 11 năm 2016 Học viên Vũ Ngọc Tuấn iii DANH MỤC HÌNH VẼ Hình 0.1 Thống kê lỗ hổng nghiêm trọng công Website vi Hình 0.2 Danh mục Top 10 lỗ hổng ứng dụng theo xếp hạng OWASP 2013 vi Hình 1.1 Kiến trúc tầng Hình 1.2 Kiến trúc tầng Hình 2.2 Luồng thơng tin kiến trúc tầng 27 Hình 2.3 Thơng tin luồng cơng việc lỗi SQL injection 28 Hình 3.1 Truy cập thành cơng vào trang Member.aspx……………………………52 Hình 3.2 Trang tìm kiếm thơng tin thành viên Member.aspx …………………… 52 Hình 3.3 Sử dụng câu lệnh sql để khai thác thơng tin bảng Member… 53 Hình 3.4 Giao diện cơng cụ Havij………………………………………………….55 Hình 4.1 Sử dụng cơng cụ Havij công với tỉ lệ thành công 100% 61 Hình 4.2 Tấn cơng sau áp dụng 4.1.2……………………………………… 62 Hình 4.3 Mơ hình hệ thống Tƣờng lửa ứng dụng Web [WAF]……… 57 iv MỞ ĐẦU Ở nƣớc ta nay, công nghệ thông tin phát triển đƣợc ứng dụng rộng rãi hầu hết lĩnh vực đời sống xã hội Một vấn đề đặt làm để đáp ứng đƣợc nhu cầu trao đổi thông tin, quảng bá thông tin trực tuyến từ nhu cầu thực tiễn dẫn đến đời ứng dụng Web Ngày nay, ứng dụng Web trở thành phƣơng tiện liên lạc hữu ích cho hàng triệu tổ chức, cá nhân, doanh nghiệp, đối tác, khách hàng dần thay giao dịch thủ công truyền thống Chẳng hạn nhƣ, ngày ngồi nhà mà thực dịch vụ nhƣ kiểm tra tài khoản ngân hàng, đặt vé tầu, vé máy bay, mua sắm trực tuyến…Chính Web yếu tố giúp doanh nghiệp, tổ chức, cá nhân tăng cƣờng hình ảnh trực tuyến giới Internet, tạo trì nhiều mối quan hệ đem lại lợi nhuận lâu dài với khách hàng tiềm khách hàng đƣờng ngắn để tiếp cận đƣợc với đối tác, khách hàng khơng nƣớc mà cịn tồn giới Nhƣng song song với hữu ích đó, ứng dụng Web tạo thách thức lớn nhà phát triển, nhà quản trị Web vấn đề làm để đảm bảo đƣợc an tồn thơng tin sử dụng ứng dụng Web Bởi hầu hết ứng dụng chứa lỗ hổng bảo mật tiềm ẩn mà kẻ cơng khai thác thực hành vi gây nguy hại đến ứng dụng Web LÝ DO THỰC HIỆN ĐỀ TÀI Cùng với phát triển mạnh mẽ ứng dụng công nghệ thông tin, công, xâm nhập trái phép vào hệ thống mạng vào hệ thống mạng quan nhà nƣớc, tổ chức, doanh nghiệp cá nhân để phá hoại thu thập lấy cắp thông tin ngày gia tăng Theo Trung tâm ứng cứu khẩn cấp máy tính Việt Nam [VNCERT], từ tháng 12-2014 đến tháng 12-2015, có 31.585 cố an ninh thông tin Việt Nam, gồm 5.898 cố lừa đảo, 8.850 cố công thay đổi giao diện 16.837 cố cài mã độc Mới ngày 29/7/2016, Hacker công vào hệ thống công nghệ thông tin Vietnam Airlines sân bay quốc tế Nội Bài Tân Sơn Nhất, chiếm quyền kiểm sốt trang mạng thức Vietnam Airlines v chuyển sang trang mạng xấu nƣớc Dữ liệu 400.000 hội viên khách hàng thƣờng xuyên Vietnam Airlines bị công bố Theo báo cáo an ninh mạng Whitehat Security hay trang Verizon Business, Sans Institute,…thì cho thấy mức độ phát triển nhanh chóng, tính nghiêm trọng lỗ hổng bảo mật, quan tâm chƣa mức tổ chức tới vấn đề Năm 2015, Whitehat Security thống kê lỗ hổng nghiêm trọng cơng Website, kết nhƣ sau: Hình 0.1 - Thống kê lỗ hổng nghiêm trọng cơng Website [11] vi Hình 0.2 – Danh mục Top 10 lỗ hổng ứng dụng theo xếp hạng OWASP 2013 [10] A1 – Injection: Tiêm nhiễm mã độc A2 – Broken Authentication and Session Management: Sai lầm kiểm tra định danh phiên làm việc A3 – Cross-Site scripting[XSS]: Thực thi mã Script xấu A4 – Insecure Direct Object Reference: Đối tƣợng tham chiếu thiếu an toàn A5 – Security Misconfiguration : Sai sót cấu hình an ninh A6 – Sensitive Data Exposure: Lộ liệu nhạy cảm A7 – Missing Function Level Access Control : Mất kiểm soát mức độ truy cập chức A8 – Cross Site Request Forgery [CSRF]: Giả mạo yêu cầu A9 – Using Known Vulnerable Components: Tấn công sử dụng thành phần với lỗ hổng biết A10 –Unvalidated Redirects and Forwards: Chuyển hƣớng chuyển tiếp khơng an tồn Nhƣ vấn đề bảo mật Web mối quan tâm hàng đầu doanh nghiệp mà mối quan tâm hầu hết quốc gia giới kỹ thuật công vào ứng dụng Web ngày trở nên tinh vi, phức tạp Nó khơng ảnh hƣởng đến kinh tế quốc gia mà cịn ảnh hƣởng đến tình hình an ninh trị nƣớc khu vực chiến trƣờng quốc tế Trong biểu đồ thống kê ta thấy SQL Injection đƣợc coi lỗ hổng phổ biến nghiêm trọng an ninh ứng dụng Web vấn đề nhận đƣợc nhiều quan tâm nhà nghiên cứu, nhà phát triển ứng dụng Web, tổ chức doanh nghiệp, quan hành Bên cạnh khó khăn sở hạ tầng mạng cịn yếu kém, phát triển khơng ngừng công cụ phƣơng pháp công khiến cho việc phịng, chống hình thức cơng ứng dụng Web trở thành vấn đề nan giải Một thực hầu hết lập trình viên chƣa nhận thức đƣợc vấn đề lập trình ứng dụng Web an tồn, ngồi nhiều giải pháp đƣợc công bố áp vii dụng nhƣng chƣa đủ tốt Đây lý mà tác giả chọn đề tài “SQL Injection – cơng cách phịng tránh” để nghiên cứu MỤC ĐÍCH CỦA ĐỀ TÀI Luận văn nhằm mục đích phân loại kỹ thuật mà kẻ công thƣờng sử dụng để công SQL Injection lên ứng dụng Web, từ nhà phát triển ứng dụng dự đốn trƣớc nguy cơng để kịp thời đƣa biện pháp ngăn chặn hành động gây an tồn thơng tin từ bên nhƣ bên ứng dụng Web loại SQL Injection…Đồng thời luận văn đƣa phƣơng pháp mà nhà phát triển ứng dụng thƣờng sử dụng để phát loại lỗ hổng SQL Injection, đƣa cảnh báo giúp cho ngƣời lập trình có nhìn tổng quan nhận thức đƣợc tầm quan trọng việc đảm bảo an tồn thơng tin cho ứng dụng Web xây dựng, phát triển vận hành ứng dụng Web Trên sở luận văn nghiên cứu đề xuất công cụ cho việc phát cảnh báo lỗ hổng SQL Injection CẤU TRÚC LUẬN VĂN Nội dung luận văn gồm có chƣơng sau: CHƢƠNG I: TỔNG QUAN VỀ ỨNG DỤNG WEB VÀ SQL INJECTION CHƢƠNG II: KIỂM TRA CÁC LỖ HỔNG SQL INJECTION CHƢƠNG III: CÁC KỸ THUẬT TẤN CÔNG SQL INJECTION CHƢƠNG IV: MỘT SỐ GIẢI PHÁP PHÒNG CHỐNG SQL INJECTION viii CHƢƠNG TỔNG QUAN VỀ ỨNG DỤNG WEB VÀ SQL INJECTION 1.1 Tổng quan ứng dụng web Ngày ứng dụng Web trở thành thứ thiếu, hữu tất thứ sống ngày nhƣ phần thiếu, từ cơng việc, mua sắm, giải trí, tin tức… Một điều mà ứng dụng web có điểm chung ngơn ngữ mà đƣợc viết ngƣời dùng tƣơng tác theo hƣớng sở liệu hầu hết ứng dụng web phổ biến thiết kế tƣơng tác theo hƣớng sở liệu Và để website hoạt động tƣơng tác với ngƣời sử dụng website đằng sau sở liệu nơi đáp ứng cung cấp thông tin cụ thể cần thiết từ phía yêu cầu ngƣời dùng, yêu cầu đƣợc thực thi từ phía máy chủ phụ thuộc vào tƣơng tác yêu cầu khác ngƣời sử dụng Một ứng dụng phổ biến ứng dụng web hƣớng sở liệu ứng dụng thƣơng mại điện tử, nơi mà hàng loạt thông tin đƣợc lƣu trữ sở liệu, chẳng hạn nhƣ thơng tin sản phẩm, chứng khốn, giá cả, giao dịch… Có lẽ hầu hết quen thuộc với ứng dụng mua hàng hóa sản phẩm trực tuyến từ cơng ty bán lẻ trực tuyến internet Một ứng dụng web hƣớng sở liệu thơng thƣờng có ba tầng: Tầng trình diễn [trình duyệt web hay chƣơng trình máy tính], tầng logic [một ngơn ngữ lập trình nhƣ C#, PHP, JSP, ASP.NET …] tầng liệu [một sở liệu nhƣ SQL Server, MySQL, Oracle, …] Các trình duyệt web [trong tầng trình diễn, chẳng hạn nhƣ Internet Explorer, Safari, Firefox, Chrome, …] gửi yêu cầu đến tầng [tầng logic] mà dịch vụ yêu cầu cách truy vấn cập nhật ngƣợc lại sở liệu Lấy ví dụ, cửa hàng bán lẻ trực tuyến mà giới thiệu cách thức tìm kiếm cho phép chọn lọc xếp thông qua sản phẩm đƣợc quan tâm đặc biệt, cung cấp tùy chọn để tiếp tục tinh chỉnh sản phẩm đƣợc thị cho phù hợp với túi tiền khách hàng Để xem tất sản phẩm có giá thấp 100 USD, ví dụ nhƣ đƣờng link sau đây: //www.victim.com/products.php?val=100 Các kịch PHP sau minh họa cách mà ngƣời dùng truyền biến đầu vào [val] thông qua câu lệnh SQL đƣợc tạo linh hoạt Phần mã PHP đƣợc thực thi đƣờng link đƣợc yêu cầu // Kết nối sở liệu $conn = mysql_connect["localhost","username","password"]; // dynamically build the sql statement with the input $query = "SELECT * FROM Products WHERE Price < '$_GET["val"]'" "ORDER BY ProductDescription"; // execute the query against the database $result = mysql_query[$query]; // Lặp qua ghi while[$row = mysql_fetch_array[$result, MYSQL_ASSOC]] { // Hiển thị kết trình duyệt echo "Description : {$row['ProductDescription']} " "Product ID : {$row['ProductID']} " "Price : {$row['Price']} "; } Nguồn: SQL Injection Attack and Defense, Justin Clarke [1] Các đoạn mã sau minh họa rõ ràng câu lệnh SQL mà kịch PHP tạo thực thi Câu lệnh trả lại tất sản phẩm có sở liệu mà có giá thấp 100 USD Những sản phẩm sau đƣợc hiển thị trình bày trình duyệt web để khách hàng lựa chọn định mua sắm dựa vào 4.2.1 Làm liệu đầu vào Việc làm liệu đầu vấn đề cốt lõi, lập trình viên, nhà quản trị làm tốt điều tiền đề cho việc xây dựng ứng dụng web an toàn cần phải đƣợc quan tâm hàng đầu có hồn tồn khả Việc làm liệu đầu vào là việc lọc liệu, cho phép liệu nhập vào đƣợc nhập vào cách sử dụng mơ hình danh sách cho phép whitelist chặn liệu khơng đƣợc phép mơ hình danh sách back_list a Mơ hình danh sách cho phép – whitelist Mơ hình danh sách cho phép việc lập trình viên cần phải xây dựng, danh sách liệt kê liệu nhập vào cần phải đƣợc kiểm soát phù hợp trƣờng liệu cụ thể địi hỏi ngƣời lập trình càn phải hiểu rõ logic ứng dụng đƣợc xây dựng Các liệu nhập vào cần phải đƣợc định dạng theo quy chuẩn nhƣ độ dài, kiểu liệu, miền liệu…Phƣơng pháp đơn giản hiệu để xây dựng mẫu [pattern] hợp lệ sử dụng biểu thức quy [regular expression] Ví dụ ta xét số mẫu biểu thức quy áp dụng cho số trƣờng sau đây: - Usemame: Chỉ chứa ký tự chữ cái, chữ số dấu gạch dƣới, độ dài tối đa 30 ký tự, tối thiểu ký tự - Password: Chỉ chứa ký tự chữ cái, chữ số, dấu gạch dƣới, độ dài tối thiểu 4, tối đa 20 ký tự - Email: Chỉ chứa ký tự chữ cái, chữ số, dấu gạch dƣới, dấu chấm ký tự @ tên b Mơ hình danh sách cấm - blacklist: Mơ hình ngƣợc lại với mơ hình cho phép white_list, mơ hình ngƣời lập trình cần phải liệt kê liệu nhập vào không đƣợc phép, ký tự gây nguy hiểm cho hệ thống từ hạn chế đƣợc mức tối đa liệu nhập vào từ phía ngƣời dùng hạn chế đƣợc công SQL injection 63 Ƣu điểm mơ hình so với whitelist việc xây dựng đơn giản Thơng thƣờng mơ hình khơng nên sử dụng mình, để đảm bảo an ninh nên sử dụng whitelist Nếu sử dụng blacklist thiết cần mã hóa output để giảm thiểu nguy rị rỉ thơng tin mẫu mà mơ hình bỏ sót Cần phải lƣu ý việc sử dụng mơ hình black_list white_list nên thực phía ngƣời sử dụng [client] tránh đƣợc phiền toái cho ngƣời sử dụng phiên làm việc ngƣời dùng gửi tới server hệ thống phát có thơng tin nhập vào khơng hợp lệ từ phía ngƣời sử dụng thơng tin xử lý bị hủy ngƣời sử dụng phải nhập lại từ đầu 4.2.2 Xây dựng truy vấn theo mơ hình tham số hóa Tại phải xây dựng sử dụng mơ hình tham số hóa? Vì mơ hình truy vấn động hay đƣợc sử dụng khơng đƣợc an tồn ln tiềm ẩn nguy sql injection, thay sử dụng mơ hình truy vấn động ta xây dựng mơ hình tham số hóa Tham số hóa có nghĩa thay dùng trực tiếp biến câu truy vấn động ta ta dùng biến đƣợc tham số đƣợc gọi biến giữ chỗ biến ràng buộc Các truy vấn tham số hóa đƣợc xây dụng lần dùng nhiều lần, lần sử dụng cần đổi tham số truyền vào lúc thực thi Các truy vấn tham số hóa đƣợc xây dựng với mục đích xây dựng lần, dùng nhiều lần [mỗi lần sử dụng cần thay đổi tham số, tham số truyền vào lúc thực thi] Khi xây dựng truy vấn tham số hóa, database thực việc tối ƣu hóa lần, thực thi, giá trị tham số đƣợc truyền vào vị trí biến giữ chỗ [placeholder] hay gọi biến ràng buộc [bind variable], truy vấn sau dùng lại khơng cần tối ƣu Tuy nhiên tham số hóa truy vấn khơng phải chìa khóa cho vấn đề SQL Injection, khơng phải truy vấn SQL tham số hóa đƣợc Trong truy vấn SQL, có giá trị [literal] đƣợc tham số hóa, cịn định danh [identifier] ví dụ nhƣ từ khóa, tên trƣờng, tên bảng, tên view, 64 khơng thể tham số hóa đƣợc mơ hình tham số hóa thực đƣợc câu lệnh DML [select, insert, replace, update, create table] dạng câu lệnh khác chƣa đƣợc hỗ trợ 4.2.3 Mơ hình thiết kế mã nguồn tổng qt Sau đề cập tới phƣơng thức thao tác với liệu đầu vào để vƣợt qua lọc mơ hình xây dựng truy vấn an tồn, tổng kết số quy tắc dạng khuyến nghị sau dành cho nhà quản trị phát triển ứng dụng web nhƣ sau a Sử dụng store procedure Stored Procedure nhóm lệnh SQL đƣợc lƣu sql server, đƣợc gọi để thực thi nhiệm vụ đó, stored procedured [gọi tắt procedure] cho phép truyền tham số Việc xây dựng procedure mục đích nhằm làm hạn chế tác hại công sql injection, làm cho kẻ công bị giới hạn quyền muốn truy vấn sở liệu quyền truy cập procedure sử dụng quyền ngƣời tạo chúng quyền ngƣời gọi chúng Do kẻ muốn cơng sql injection chúng bị giới hạn nhiều quyền thực thi tới tài nguyên cở sở liệu hạn chế giảm thiểu tác hại sql injection b Quản lý liệu nhạy cảm Hầu hết chủ đích cơng hƣớng tới sở liệu, liệu nhạy cảm cdsl nhƣ bảng chứa thông tin đăng nhập hệ thống [username, password, email, điện thoại…] bảng thông tin liên quan đến giao dịch, thơng tin thẻ tín dụng khách hàng… Do việc quản lý phƣơng pháp bảo vệ liệu quan trọng vô quan trọng có cố sảy làm ảnh hƣởng nghiêm trọng đến uy tín tổ chức nhƣ quan hệ khách hàng Sau số lƣu ý việc quản lý liệu nhạy cảm: 65 Đối với trƣờng password tuyệt đối không lƣu trữ database dạng plaintext mà phải sử dụng phƣơng pháp mã hóa băm chiều [ví dụ SHA-2] Các password đƣợc lƣu dạng chuỗi đƣợc băm, việc thực so khớp đƣợc tiến hành so xâu đƣợc băm từ giá trị ngƣời dùng cung cấp với thuật toán băm với giá trị đƣợc lƣu trữ database Đối với thơng tin tài nguời dùng ta nên thực việc mã hóa thơng tin thuật tốn đuợc khuyến cáo an tồn, ví dụ chuẩn PCIDSS cho thẻ tín dụng Chuẩn bảo mật PCI DSS [Payment Card Indutry Data Security Standard] tiêu chuẩn đƣợc áp dụng rộng rãi giới tổ chức cung cấp thẻ tín dụng quốc tế hàng đầu giới nhƣ Visa, MasterCard, American Express, JCB International, Discover xây dựng nhằm hạn chế rủi ro ngân hàng giao dịch điện tử Trong trình hoạt động hệ thống cần phải lƣu ý vấn đề lƣu trữ lịch sử giao dịch ngƣời dùng csdl, không thiết phải lƣu tất thơng tin mà cho phép hệ thống thực tự động xóa số thơng tin không cần thiết sau khoảng thời gian thiết lập cho việc xóa thơng tin không làm ảnh hƣởng đến hoạt động hệ thống, mặt khác việc xóa bớt thơng tin làm cho csdl nhẹ hơn, giảm thiểu tối đa thông tin bị lộ không may csdl sảy cố c Tránh đặt tên đối tƣợng dễ đốn Sai lầm đa số lập trình viên, ngƣời quản trị website đặt tên tài khoản quản trị mật đơn giản, dễ đoán dẫn đến việc tạo điều kiện cho kẻ công dễ dàng xâm nhập csdl Do việc đổi tên tài khoản quản trị mật việc mà ta phải làm Đổi tên tài khoản admin, tránh đặt tên dễ đoán nhƣ admin, administrator,… Đổi mật tài khoản quản trị thật phức tạp, tránh dùng số chữ Nên kết hợp ký tự đặc biệt, chữ hoa, chữ số độ dài tối thiểu 8, tránh đặt mật liên quan đến tên ngƣời, số điện thoại, ngày 66 sinh…Sử dụng tên khó đốn để đặt cho tên bảng, tên cột chứa thông tin nhạy cảm nhƣ password, credit card, Mặc dù phƣơng pháp không trực tiếp ngăn chặn kẻ công truy cập vào csdl, nhƣng gây khó khăn cho kẻ cơng việc việc dị tìm xác định mục tiêu d Các khuyến nghị bảo mật khác Ngoài khuyến nghị tác giả muốn đƣa số khuyến nghị bảo mật khác đội ngũ quản trị phát triển ứng dụng nhƣ sau: - Thƣờng xuyên rà soát hệ thống phát bất ổn hệ thống cần kịp thời đƣa phƣơng án giải kịp thời Các vá máy chủ webhosting, máy chủ csdl, firewall… cần phải đƣợc cập nhật thƣờng xuyên Sao lƣu thƣờng xuyên ứng dụng, mã nguồn, sở liệu để có phƣơng án dự phịng lƣu đƣợc tách khỏi máy chủ chạy dịch vụ mặt vật lý - Đội ngũ quản trị phát triển hệ thống cần phải đƣợc đào tạo chuyên sâu bảo mật an tồn thơng tin Sử dụng cơng cụ tài ngun sẵn có để đƣa báo cáo theo thời gian phụ thuộc vào mức độ cần thiết hệ thống - Nếu cố sảy chƣa khắp phục kịp liên hệ đơn vị hỗ trợ nhƣ Trung tâm Ứng cứu khẩn cấp máy tính Việt Nam [VNCERT] - Thƣờng xuyên cập nhật tài liệu, hƣớng dẫn phòng chống sql injection nhƣ cập nhật lỗ hổng bảo mật để xây dựng phƣơng án đối phó phịng thủ cách tối ƣu, ác website tham khảo thơng tin nhƣ //securitydaily.net, www.owasp.org, www.sqlsecurity.com, 4.3 Các biện pháp bảo vệ từ mức tảng hệ thống Biện pháp bảo vệ từ mức tảng hệ thống xậy dựng hệ thống bảo vệ hệ thống ứng dụng web hoạt động phần cứng lẫn phần mềm mục đích nhằm lọc gói tin giới hạn truy cập ngăn chặn kịp thời yêu cầu truy cập hệ thống bất hợp lệ Tuy có tùy chọn việc lọc bảo vệ hệ thống nhƣng phải đòi hỏi ngƣời quản trị hệ thống phải hiểu có kiến thức chun sâu 67 để cấu hình hệ thống bảo vệ cách phù hợp tùy thời điểm, tùy trƣờng hợp khơng làm ảnh hƣởng đến hiệu hoạt động tổng thể hệ thống Cho dù giải pháp bảo vệ mức tảng hệ thống có tốt đến đâu nhƣng bảo vệ đƣợc hệ thống việc xây dựng mã nguồn khơng an tồn, biện pháp phải luôn đƣợc ý quan tâm thực cách đồng nhất, thƣờng xuyên liên tục Một database cấu hình tốt không ngăn chặn đƣợc SQL Injection nhƣng khiến chúng gặp khó khăn lợi dụng điểm yếu ứng dụng để khai thác database, lọc an ninh đƣợc sử dụng tạm thời nhƣ vá ảo [virtual patch] từ phát lỗ hống đến đội quản trị khắc phục đƣợc lỗ hổng Các lọc đƣợc xây dựng nhanh chóng phịng tránh đƣợc lỗ hống giai đoạn zero-day công Và khắng định rằng, an ninh mức tảng thảnh phần quan trọng chiến lƣợc an ninh tống thể ứng dụng 4.3.1 Các biện pháp bảo vệ tức thời Là biện pháp áp dụng mà không cần phải thực biên dịch lại mã nguồn ứng dụng Các biện pháp bảo vệ thời gian hoạt động ứng dụng web cơng cụ hữu ích nhằm phịng tránh việc lợi dụng điểm yếu SQL Injection đươc xác đinh Việc thực sửa lỗi mã nguồn ứng dụng giải pháp triệt để nhƣng thực đƣợc với khả chi phí Ngồi ra, với ứng dụng thƣơng mại, hầu hết chúng đƣợc phát hành với hồn chỉnh biên dịch khơng phải dạng mã nguồn Và có mã nguồn việc thực chỉnh sửa hầu hết vi phạm điều khoản sử dụng sách bảo hành, hỗ trợ nhà phân phối Và đó, việc sử dụng biện pháp bảo vệ thời gian hoạt động giải pháp dạng bản-vá-ảo [virtual patch] tạm thời trƣớc việc sửa lỗi mã nguồn ứng dụng hoàn chinh Ngay thời gian, tài nguyên cần thiết cho phép việc vá lỗi mã 68 nguồn, biện pháp bảo vệ thời gian chạy lớp an ninh có giá trị cho việc phát ngăn chặn điểm yếu SQL Injection chưa biết tới Điều dễ nhận thấy mà ứng dụng chƣa trải qua đánh giá, thử nghiệm bảo mật, chƣa bị công SQL Injection - điều mà phổ biến hoạt động phát triển ứng dụng Web nƣớc ta Rõ ràng, tiền đề cho việc khai thác lỗ hổng zero-day nhƣ lỗ hổng SQL khác phát tán từ Internet Lúc này, phƣơng pháp khơng mang tính đối phó bị động [reactive] mà cung cấp biện pháp đối phó chủ động [proactive] cho ứng dụng [Chú thích: Lỗ hổng zero day thuật ngữ để lỗ hổng chưa công bố chưa khắc phục.] a Các ứng dụng tƣờng lửa Web Ứng dụng tƣờng lửa Web [Web Application Firewall - WAF] thiết bị phần cứng phần mềm đƣợc cài lên máy chủ có nhiệm vụ theo dõi thông tin đƣợc truyền tải qua giao thức http/htpps trình duyệt ngƣời dùng ứng dụng WAF giải pháp nhằm bảo vệ cho ứng dụng web tránh khỏi lỗi bảo mật nhƣ SQL injection, cross-site scripting, lỗi bảo mật khác….một ứng dụng WAF đƣợc bố trí theo mơ hình nhƣ sau: 69 Hình 4.1 - Mơ hình hệ thống Tường lửa ứng dụng Web [WAF] [7] Theo sơ đồ hầu hết WAF đƣợc đặt sau tƣờng lửa hệ thống mạng trƣớc máy chủ ứng dụng web Thông thƣờng WAF hoạt động dựa theo mơ hình bảo mật mơ hình chủ động [Positive] mơ hình bị động [Negative] Ở mơ hình Positive WAF cho phép thơng tin đƣợc định nghĩa sẵn qua chặn tất thơng tin cịn lại chƣa đƣợc định nghĩa, mơ hình Negative ngƣợc lại với mơ hình Positive, cho phép thơng tin qua chặn lại thông tin mà WAF cho nguy hại Tuy nhiên có số WAF cung cấp 02 mơ hình trên, mơ hình positive địi hỏi ngƣời quản trị phải có kiến thức chuyên sâu hệ thống cần cấu hình phức tạp nhiều tùy chỉnh b Các lọc ngăn chặn Các lọc ngăn chặn đƣợc tích hợp hầu hết ứng dụng tƣờng lửa Web [WAF] module chạy độc lập với đƣợc gắn kết với để thực thao tác xủy lý bên ứng dụng Do khơng có 70 ràng buộc với cho phép ta thêm bớt mẫu lọc mà không làm ảnh hƣởng tới hệ thống nhƣ module sẵn có Chúng ta đề cập tới hai cách triển khai lọc ngăn chặn phố biến nhất, duới dạng plug-in cho Web server duới dạng module cho tảng phát triển ứng dụng  Bộ lọc dạng Plug-in cho Web server Ở dạng này, lọc đƣợc tích hợp vào Web server dƣới dạng plugin/module, đảm nhiệm việc mở rộng khả Web server sang tác vụ xử lý [ yêu cầu request phản hồi –response] Thông thƣờng request response đƣợc xử lý Web server phải trải qua vài pha xử lý, plug-in lọc đăng kí chạy pha này, thực xử lý trƣớc request tới đƣợc ứng dụng Web sau ứng dụng Web trả response Những xử lý độc lập không ảnh hƣởng tới module khác Web server hay không làm thay đổi logic nghiệp vụ Một ƣu điểm dễ thấy triển khai dạng module Web server lọc không phụ thuộc vào tảng ứng dụng Web ngơn ngữ lập trình, ví dụ lọc ISAPI cho Microsoft IIS xử lý theo dõi request ASP ASP.NET  Dạng module hỗ trợ cho tảng phát triển ứng dụng Dạng module lọc cho phép cài đặt chúng bên mã nguồn ứng dụng web framework Dạng module tƣơng đồng với dạng plug-in cho Web server chỗ đoạn code dạng module, đƣợc cài đặt kèm theo pha xử lý request từ client Trong ASP.NET có interface tên Web.IhttpModule Java có javax.servlet.Filter để cài đặt mẫu lọc Các module đƣợc cài đặt độc lập, không làm thay đổi hoạt động ứng dụng Web 4.3.2 Các biện pháp bảo vệ database Các biện pháp bảo vệ database biện pháp bảo vệ nhằm chống lại 71 công nhằm vào database hoạt động, giảm thiểu hạn chế tối đa thơng tin bị rị rỉ bị điều khiển tin tặc Sau biện pháp tác giả đƣa nhằm bảo vệ database: - Cấp quyền ƣu tiên tối thiểu cho tài khoản đăng nhập vào database - Hủy bỏ quyền PUBLIC: Các database thƣờng cung cấp số chế độ mặc định cho tất đăng nhập, chế độ có tập mặc định quyền, bao gồm việc truy cập tới số đối tƣợng thuộc hệ thống Các chế độ công khai cung cấp quyền truy cập tới stored procedure có sẵn, số gói, hàm sử dụng cho mục đích quản trị Vì cần hủy quyền dạng tới mức tối đa - Sử dụng thuật tốn mã hóa mạnh để mã hóa lƣu trữ liệu nhạy cảm - Khóa quyền truy cập tới đối tƣợng có đặc quyền, ví dụ tiện ích quản trị, tiện ích thực thi gián tiếp lệnh phía hệ điều hành, tiện ích sinh kết nối tới đối tƣợng, database khác - Luôn cập nhật vá ứng dụng quản trị database [DBMS] Đây nguyên tắc mà cần tuân thủ, vá khơng cập nhật nhanh nhƣng có tính đảm bảo cho điểm yếu đƣợc phát - Cần có giải pháp tổng thể cho q trình lƣu phục hồi database 4.4 Đề xuất giải pháp công nghệ Thực tế lỗ hổng đƣợc đề cập luận văn khơng cịn vấn đề mới, nhiên với tình trạng phát triển ứng dụng web nhƣ cịn nhiều cơng ty, dự án phát triển phần mềm mắc phải lỗ hổng này, xét mức độ thiệt hại lỗ hổng gây tổn thất lớn không cho khách hàng, doanh nghiệp mà cịn ảnh hƣởng chung đến hệ thống an tồn web Việt Nam Do tính phức tạp ứng dụng web, việc thiết kế kiểm soát chƣa tuân thủ 72 theo quy trình khơng có giải pháp tuyệt đối cho vấn đề này.Trong luận văn giải pháp đề cập tác giả muốn đề xuất giải pháp công nghệ áp dụng với đối tƣợng nhƣ sau: Giải pháp tổ chức, doanh nghiệp vừa nhỏ: Một công cụ hiệu thơng dụng sử dụng Firewall nhằm kiểm sốt truy cập từ bên ngồi vào mạng nội giao dịch ra/vào mạng Tuy nhiên việc đầu tƣ cho thiết bị tƣờng lửa tốn kém, tổ chức - doanh nghiệp vừa nhỏ tác giả đề xuất sử dụng Các phiên WAF mã nguồn mở phổ biến nhƣ ModSecurity URLScan ModSecurity sản phẩm thuộc dự án OWASP, cho phép ngƣời dùng cấu hình, tùy chỉnh phƣơng thức phát công vào web server Phiên ModSecurity hỗ trợ Apache, Nginx IIS Mục đích ModSecurity tăng cƣờng bảo mật cho ứng dụng Web, bảo vệ chúng khỏi loại công biết chƣa biết WAF thiết lập lớp bảo vệ bên phát ngăn cản cơng trƣớc tác động đến web application.WAF có tính sau: – Có khả phân tích tỉ mỉ log tồn hoạt động giao thức Http nhƣ: Rrequest, Response – Có khả theo dõi lƣu lƣợng gói tin http [HTTP trafic] theo thời gian thực để sớm phát công tƣợng tự nhƣ hệ thống web intrusion detection chủ động theo dõi request để phát điểm khơng bình 73 thƣờng, gói tin bị log bị loại bỏ – Có khả chạy nhiều hệ điều hành Linux, Windows, Solaris, FreeBSD, OpenBSD, NetBSD, AIX, Mac OS X, HP-UX – Chống lại công an ninh web phổ biến nhƣ: SQL Injection, XSS, Execute code, phát bots, crawlers, máy quét hoạt động mã độc bề mặt, Trojan Protection – phát xâm nhập Trojans horses, Error Hiding – ngụy trang tin nhắn lỗi gửi máy chủ tính khác URLScan: Đây sản phẩm Microsoft dành riêng cho máy chủ web IIS URL scan không bảo vệ máy chủ IIS khỏi điểm yếu từ phiên cũ mà cung cấp thêm biện pháp bảo vệ khác nhƣ lọc liệu mã hóa URL lọc siêu ký tự ngƣời dùng chèn vào để chống lại loại công nhƣ XSS, SQL Injection,… Giải pháp tổ chức, doanh nghiệp lớn: Tác giả đề xuất áp dụng với mức bảo vệ nhƣ sau: Lớp bảo vệ mức 1: Ở mức đòi hỏi tổ chức, cá nhân phải trang bị thiết bị tƣờng lửa cho hệ thống mạng nhằm ngăn chặn cơng dị qt phát lỗ hổng hệ thống tin tặc, cần kết hợp hệ thống phịng chống cơng IDS/IPS đặt ngõ hệ thống mạng phần mềm giám sát hệ thống Khi gói tin qua, thiết bị an ninh lớp mạng kiểm tra hợp lệ địa nguồn, địa đích, cổng [port] gói tin [đối với firewall], kiểu công xâm nhập mạng biết trƣớc thông số hợp lệ cho qua Thiết bị an ninh mạng thơng thƣờng có khả bảo vệ kiểu cơng mạng, khơng có khả bảo vệ công khai thác điểm yếu ứng dụng Nhƣ thiết bị bảo mật chuyên dụng cho ứng dụng web bổ sung lớp bảo mật hệ thống Thiết lập thành phần VPN cho phép kết nối mạng riêng ảo với chi nhánh, văn phòng ngƣời dùng từ xa Có thể tham khảo thiết bị tƣờng lửa chuyên dụng hãng có tên tuổi nhƣ : Cisco, Checkpoint, Fortinet, Sidewinder… 74 Lớp bảo vệ mức 2: Trang bị thiết bị tƣờng lửa chuyên dụng cho ứng dụng web [WAF] nhằm mục đích kiểm soát tất luồng liệu qua máy chủ ứng dụng Thiết lập thành phần DAP[ Dynamic Aplication Protection] kiểm soát cho qua yêu cầu hợp lệ đồng thời ngăn chặn yêu cầu khơng hợp lệ Thiết lập sách bảo mật cho ứng dụng web với danh sách điều khiển truy cập web ACL[Access Control List] thiết lập cho url, tham số Thiết lập kiểm sốt liệu trƣờng có form nhập liệu cho phép mã hóa trƣờng có thơng tin quan trọng nhƣ trƣờng đăng nhập tài khoản, thông tin khách hàng thẻ tín dụng… Các phiên WAF mã nguồn mở phổ biến nhƣ: ModSecurity, URLScan, WebKnight…Các phiên thu phí: WebDefend, Hyperguard, DotDefender… Lớp bảo vệ mức 3: Ở mức bảo vệ ta phân tách mạng thành nhiều vùng mạng khác với thiết lập mức độ bảo mật khác truy cập đến hệ thống máy chủ sở liệu máy chủ ứng dụng Với sách ngăn chặn cơng trƣờng hợp chúng vƣợt qua mức bảo vệ công không rõ nguồn gốc 75 KẾT LUẬN SQL Injection đƣợc đánh giá lỗ hổng bảo mật web nguy hiểm nhiều năm qua không Việt Nam mà cịn tồn giới Do đó, ngƣời lập trình web cần hiểu rõ nguyên nhân cách khắc phục cho hiệu quả, ngƣời quản trị cần hiểu sâu hệ thống có cấu hình cần thiết để trách nguy giảm thiểu tác hại trƣờng hợp ứng dụng web có lỗi khai thác SQL Injection Các kỹ thuật công Sql Injection mà tác giả đề cập luận văn, tùy vào trƣờng hợp cụ thể mà có cách áp dụng khác Do tính chất đặc thù trƣờng hợp nhƣ nên luận văn chƣa thể bao quát hết đƣợc tất kỹ thuật Những vấn đề đạt đƣợc: Theo yêu cầu đặt ban đầu thời điểm luận văn đạt đƣợc nội dung sau: - Nghiên cứu tìm hiểu lỗ hổng sql injection, nghiên cứu phƣơng pháp kiểm tra lỗ hổng sql injection Đề xuất công cụ kiểm tra phát lỗ hổng website - Nghiên cứu, tìm hiểu số kỹ thuật công sql injection Xây dựng website demo, sử dụng công cụ để công kiểm thử loại công - Đƣa giải pháp phịng chống loại cơng, đề xuất giải pháp công nghệ Hƣớng phát triển: Trong phạm vi luận văn đạt đƣợc yêu cầu đặt ra, nhiên kết nghiên cứu khiêm tốn chƣa có nhiều thời gian Trong thời gian tới, có điều kiện tác giả cố gắng phát triển thêm nội dung sau: - Nghiên cứu tìm hiểu sâu lỗ hổng bảo mật đƣợc cơng bố, tìm hiểu phƣơng pháp dị tìm phịng chống - Xây dựng cơng cụ dị tìm phát lỗ hổng website 76 TÀI LIỆU THAM KHẢO Sách tham khảo: [1] Chris Anley[2002], Advanced SQL Injection In SQL Server Application, NISR Publication [2] Justin Clarke [2009], SQL Injection Attack and Defense, Syngress Publishing [3] Kevin Spett [2002], SQL Injection-Are you web Applications vulnerable, SPI Dynamics, Inc [4] Khóa học Certified Ethical Hacker, version 6, Module SQL injection Các website tham khảo [5] //www.integrigy.com/security-resources - lần truy cập cuối 15/9/2016 [6] //www.sqlsecurity.com - lần truy cập cuối 15/9/2016 [7] //securitydaily.net - lần truy cập cuối 10/8/2016 [8] //thuvienkhoahoc.com - lần truy cập cuối 25/8/2016 [9] //sinhvienit.net/forum - lần truy cập cuối 3/9/2016 [10] //www.owasp.org - lần truy cập cuối 10/8/2016 [11] //www.whitehatsec.com/ - lần truy cập cuối 15/9/2016 [12] //anninhmang.net - lần truy cập cuối 15/9/2016 [13].//doc.edu.vn/tai-lieu/khoa-luan-sql-injection-tan-cong-va-cach-phongtranh-22475/ - lần truy cập cuối 26/9/2016 77 ... TRA CÁC LỖ HỔNG SQL INJECTION CHƢƠNG III: CÁC KỸ THUẬT TẤN CÔNG SQL INJECTION CHƢƠNG IV: MỘT SỐ GIẢI PHÁP PHÒNG CHỐNG SQL INJECTION viii CHƢƠNG TỔNG QUAN VỀ ỨNG DỤNG WEB VÀ SQL INJECTION 1.1 Tổng... bị công đa số lỗi SQL injection Vậy SQL injection gì? SQL injection kĩ thuật cho phép kẻ công lợi dụng lỗ hổng việc kiểm tra liệu nhập ứng dụng web thông báo lỗi hệ quản trị sở liệu để "chèn vào"... lỗ hổng SQL injection Hình 2.3 cho thấy lỗi SQL injection xảy nhƣ làm để máy chủ giải Hình 2.3 - Thơng tin luồng công việc lỗi SQL injection [1] Chúng ta thấy hình 2.3, sau xảy lỗi SQL injection:

Ngày đăng: 28/02/2021, 00:07

Xem thêm:

Chủ Đề