Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 63 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
63
Dung lượng
2,91 MB
Nội dung
BỘ CÔNG THƢƠNG TRƢỜNG CAO ĐẲNG CÔNG NGHIỆP VÀ THƢƠNG MẠI GIÁO TRÌNH MƠ ĐUN: BẢO MẬT WEB VÀ CƠ SỞ DỮ LIỆU NGHỀ: QUẢN TRỊ MẠNG MÁY TÍNH TRÌNH ĐỘ: CAO ĐẲNG NGHỀ (Ban hành kèm theo Quyết định số: /QĐ-CDCN&TM ngày tháng năm 2018 Hiệu trưởng Trường Cao đẳng Công nghiệp Thương Mại Vĩnh phúc, năm 2018 Tên mô đun: Bảo mật Website sở liệu Mã số mô đun: MDCC13030191 Thời gian thực mô đun: 75h (Lý thuyết:15; Thực hành: 57; Kiểm tra: 3) I Vị trí, tính chất mơ đun: - Vị trí mơ đun: Mơ đun giúp ngƣời học có kiến thức, kỹ kiểm tra thực phịng chống cơng vào Website CSDL máy chủ - Tính chất mô đun: mô đun chuyên môn bắt buộc II Mục tiêu mơ đun: + Kiến thức: - Trình bày đƣợc trƣờng hợp phổ biến gây an ninh, an tồn Website CSDL - Trình bày đƣợc phƣơng pháp bảo mật website CSDL + Kỹ năng: - Tổ chức thực công để kiểm tra bảo mật website - Áp dụng kỹ thuật phịng chống cơng Website - Sao lƣu phục hồi liệu Website CSDL + Về lực tự chủ trách nhiệm: Ngƣời học có thái độ đắn cẩn thận, chủ động việc lĩnh hội kiến thức III Nội dung mô đun: Nội dung tổng quát phân phối thời gian: Thời gian (giờ) TT Nội dung mô đun Kiểm Thực tra* Tổng Lý hành (LT số thuyết Bài hoặcT tập H) Bài 1: Một số kỹ thuật công bảo 50 mật Website Bài 2: Bảo mật CSDL 25 Tổng cộng 75 10 38 15 19 57 MỤC LỤC BÀI 1: MỘT SỐ KỸ THUẬT TẤN CÔNG VÀ BẢO MẬT WEBSITE 1 MỘT SỐ PHƢƠNG PHÁP TẤN CÔNG WEBSITE: SQL INJECTION, XSS, DDOS, PHISING, COOKIE THEFT, VIRUSES AND MALICIOUS CODE, 1.1.1 SQL injection 1.1.2 TẤN CÔNG XSS (CROSS-SITE SCRIPTING) 1.1.3 DDOS 1.1.4 BOTNET LÀ GÌ? 1.1.5 Phòng Chống Dos - Ddos - Botnet 1.1.6 PHISHING 1.1.5 COOKIE THEFT 13 1.2 CÀI KALI LINUX 23 1.2.1 CÀI KALI LINUX TRÊN VMWARE WORKSTATION TỪ BẢN ẢO HÓA FULL 23 1.2.2 CÀI ĐẶT KALI LINUX TRÊN MÁY ẢO VM WARE TỪ FILE ISO 28 1.3 KIỂM TRA BẢO MẬT VÀ CÁC BIỆN PHÁP PHÒNG CHỐNG 45 51 BÀI : TẤN CÔNG VÀ BẢO MẬT CSDL 51 2.1 CÁC PHƢƠNG PHÁP TẤN CÔNG, KHAI THÁC TRÁI PHÉP CSDL 51 2.1.1Tổng quan SQL Injection 51 Khái niệm 51 Nguyên nhân 51 Tính nguy hiểm cơng SQL Injection 52 2.1.2 Phân loại kiểu công SQL Injection 52 In-band SQLi 52 Inferential SQLi (Blind SQLi) 54 Out-of-band SQLi 55 2.2 BẢO MẬT, AN TOÀN CSDL 55 BÀI 1: MỘT SỐ KỸ THUẬT TẤN CÔNG VÀ BẢO MẬT WEBSITE 1 MỘT SỐ PHƢƠNG PHÁP TẤN CÔNG WEBSITE: SQL INJECTION, XSS, DDOS, PHISING, COOKIE THEFT, VIRUSES AND MALICIOUS CODE, 1.1.1 SQL injection * Khái niệm: SQL injection kĩ thuật cho phép kẻ công thực lệnh thực thi SQL bất hợp pháp (mà ngƣời phát triển không lƣờng trƣớc đƣợc), cách lợi dụng lỗ hổng bảo mật từ liệu nhập vào ứng dụng * Cách thức hoạt động Sql injection Lỗi Sql injection thƣờng xảy thiếu kiểm tra liệu truyền vào, điều gây tác động không mong muốn ngồi mục đích câu truy vấn Ta xem xét câu truy vấn sau: Selected_user = "SELECT * FROM users WHERE name = '" + userName + "';" Ta thấy rằng, mục đích câu truy vấn lục tìm bảng users dịng liệu mà trƣờng name có giá trị với tham số userName truyền vào Thoạt nhìn câu truy vấn cấu trúc khơng có vấn đề gì, nhƣng ta thử phân tích tình sau đây: giả sử ngƣời gọi câu truy vấn truyền vào tham số userName có giá trị: a' or 't'='t Nhƣ câu truy vấn ta có đƣợc hiểu nhƣ sau: SELECT * FROM users WHERE name = 'a' or 't'='t'; Câu truy vấn có ý nghĩa gì? Mệnh đề WHERE câu truy vấn ln đúng, lí „t‟=‟t‟ ln cho giá trị Nhƣ vậy, thay trả kết dòng liệu mong muốn, câu truy vấn trả kết toàn liệu bảng users Nguyên nhân việc truy vấn sai liệu tham số truyền vào Hãy tƣởng tƣợng toàn liệu bị sử dụng nhằm mục đích khơng tốt, hậu thật khó lƣờng phải khơng nào? * Các trƣờng hợp thƣờng bị công Sql injection Bất thao tác ứng dụng có thực truy vấn tới sở liệu bị lợi dụng để công Sql injection Các thao tác với CSDL là: select, insert, update bị cơng Có thể kể vài thao tác phổ biến cơng nhƣ: Kiểm tra đăng nhập ứng dụng Thao tác lƣu comment user xuống DB Thao tác truy vấn thơng tin user … * Cách phịng tránh lỗi Sql injection Nhƣ phân tích trên: điểm để cơng tham số truyền vào câu truy vấn Do phải thực biện pháp phòng chống để đảm bảo việc kiểm tra liệu truyền vào gây sai lệch thực truy vấn Giải pháp cho việc kiểm tra sử dụng “chuỗi escape” Khi thực escape chuỗi, tức mã hố kí tự đặc biệt chuỗi (nhƣ kí tự „, &, |, …) để khơng cịn đƣợc hiểu kí tự đặc biệt Mỗi ngơn ngữ lập trình cung cấp hàm để thực escape chuỗi, với PHP ta sử dụng hàm mysqli_real_escape_string() dùng addslashes() để thực điều Ví dụ hàm addslashes(): kí tự nháy kép lúc khơng cịn đƣợc hiểu kí tự điểu khiển $str = addslashes('What does "yolo" mean?'); //$str = 'What does \"yolo\" mean?' 1.1.2 TẤN CÔNG XSS (CROSS-SITE SCRIPTING) * Khái niệm XSS kĩ thuật công, kẻ cơng chèn đoạn mã client-script độc (thƣờng javascript HTML) vào trang web, đoạn mã đƣợc thực thi ngƣời dùng truy cập load trang có chứa mã độc Khác với Sql injection nơi mà mã độc đƣợc thực thi server, XSS dạng công mã độc đƣợc thực thi máy client Bởi mã độc đƣợc chứa server nhƣng lại đƣợc thực thi client, kĩ thuật đƣợc gọi “cross-site” * Cách thức hoạt động XSS Có thể chia XSS thành loại: Stored-XSS Reflected-XSS Cả đƣa đoạn mã độc tới máy client để thực thi, cụ thể việc hiển thị nội dung đƣợc sinh trình trang web hoạt động, nhiên cách thức có đơi chút khác biệt nhƣ sau: * Stored-XSS Loại công XSS lợi dụng lỗ hổng bảo mật trang web để lƣu trữ đoạn mã độc server, ngƣời dùng tải trang đoạn mã độc đƣợc thực thi Điển hình loại công lợi dụng điểm chứa liệu nhập vào từ ngƣời dùng nhƣ: ô comment trang blog, ô điền nội dung thông tin tài khoản công khai, … Giả sử trang web có nhập nội dung comment nhƣ sau: Cài đặt sử dụng Kali Linux Kiểm tra bảo mật biện pháp phịng chống cơng Thay nhập comment nhƣ bình thƣờng, kẻ cơng chèn mã độc, ví dụ nhƣ đoạn script sau: alert("XSS"); Khi đó, ngƣời dùng khác truy cập vào trang web này, đoạn script đƣợc kích hoạt, kết nhƣ sau: Trên ví dụ đơn giản kĩ thuật công XSS, tất nhiên kẻ cơng hồn tồn chèn vào đoạn mã nguy hiểm để khai thác thông tin ngƣời dùng Ta thấy rằng, đoạn mã độc đƣợc lƣu server, nhƣng lại đƣợc thực thi máy tính client, đƣợc gọi stored-XSS * Reflected-XSS Ở kĩ thuật công này, mã độc đƣợc gắn trực tiếp vào link trang web, bạn truy cập vào đƣờng link có chứa mã độc, đoạn mã độc đƣợc thực thi Giả sử ta có link trang web sau: xyz.abc.vn/xss/reflected/index?qid=alert(„XSS‟); Nếu nhƣ trang web dùng giá trị tham số qid để hiển thị, truy cập vào đƣờng link này, ta bị lỗi XSS * CÁC PHÒNG TRÁNH XSS Nhƣ đề cập trên, mấu chốt kĩ thuật công nằm chỗ hiển thị nội dung nhập vào client, để phòng tránh ta kiểm sốt chặt chẽ nơi hiển thị nội dung Cũng tƣơng tự nhƣ cách phòng chống Sql injection, nhận vào liệu, ta thực kiểm tra mã hố kí tự đặc biệt kí tự điều khiển có nguy gây hại cho chƣơng trình Khi kí tự đặc biệt đƣợc biến đổi cách tƣơng tự nhƣ sau: đƣợc đổi thành <script> Để làm đƣợc điều này, trƣớc hiển thị thơng tin thẻ HTML, ta thực escape trƣớc server để biến đổi kí tự đặc biệt thành html entity (trong PHP ta sử dụng hàm htmlentities() để làm việc này) 1.1.3 DDOS Dos viết tắt "Denial Of Service" nghĩa "Tấn công từ từ chối dịch vụ", kiểu thƣờng đƣợc sử dụng để công vào máy chủ, web server nhằm mục đích làm tắc nghẽn, gián đoạn kết nối ngƣời dùng máy chủ gây cạn kiệt tài nguyên Kiểu công thƣờng dùng Attacker gửi liên tục yêu cầu đến máy chủ yêu cầu mang dung lƣợng lớn Do phải xử lý lƣợng yêu cầu mà máy chủ khơng cịn đủ tài ngun để xử lý u cầu từ ngƣời dùng khác gây nên tình trạng gián đoạn kết nối "Ddos" tên đầy đủ "Distributed Denial Of Service" hay "Tấn công từ từ chối dịch vụ phân tán" Tƣơng tự nhƣ Dos nhƣng lần Attacker công từ nhiều luồng khác với nhiều IP dãy IP khác Họ gửi nhiều lƣợt truy cập vào máy chủ thời điểm, làm máy chủ không phân tán nhiều tài nguyên để xử lý đồng thời yêu cầu Gây tình trạng q tải điều mà Attacker mong muốn Cách tất công khiến máy chủ khó phát ngăn chặn Dos Để ngƣời dễ hình dung xin phép lấy kẹt xe đặc sản Sài Gịn làm ví dụ: Bạn đƣờng "băng thông" đến công ty bạn làm tên "máy chủ" bình thƣờng khơng đơng ngƣời đƣờng hơm có đồn xe tải nhà xe "Dos" nối đuôi dài bất tận chạy chiếm hết đƣờng khiến khơng lƣu thơng đƣợc Nhận thấy cố ý phá hoại đến từ nhà xe "Dos" công ty bạn đặt biển cấm xe "Dos" cách Ban IP Attacker Thì Ddos Attacker thể cơng từ nhiều luồng, nhiều địa khác nhƣ sử dụng nhiều xe, tới từ nhiều hƣớng nên khó xác định đƣợc xuất phát từ đâu Vậy mà Attacker sử dụng nhiều IP nhƣ lúc để thực hành vi ? Có khác nhiều cách khác nhƣ sử dụng server ảo, thay đổi IP liên tục qua proxy Botnet 1.1.4 BOTNET LÀ GÌ? BotNet thuật ngữ viết ngắn "Bots Network" Chỉ mạng lƣới máy tính nhiễm mã độc (Bots/Zombie) bị chi phối máy tính khác Mạng lƣới Botnet lớn độ nguy hiểm cao Có mạng lƣới Botnet liên đến hàng ngàn trăm ngàn máy zombie Hiện có hình thức cấu trúc mạng lƣới Botnet client/server botnet model peer-topeer botnet model Client/server botnet model Với mơ hình máy bot/zombie kết nối với máy chủ cụm máy chủ thông qua tên kênh IRC để nhận lệnh Botmaster Mơ hình thƣờng phổ biến dễ dàng sử dụng Các máy zombie thƣờng bị chi phối ngầm mà ngƣời sử dụng máy zombie không hay biết khó nhận Thơng qua chi phối Botmaster ngƣời điều khiển thể phát tán mã độc khác để tạo mạng lƣới Botnet lớn mạnh Phƣơng thức phát tán thƣờng thấy ẩn mã độc vào các phần mềm miễn phí quen thuộc rồi phát tán link tải internet Botmaster điều khiển máy zombie thực nhiều yêu cầu khác cho nhiều mục đích khác Attacker bao gồm Ddos Ngƣời sử dụng điều khiển máy bot công vào web server thông qua giao diện điều khiển đặc biệt họ, máy bot online mạng lƣới dù có khắp giới lúc truy cập đến trang mục tiêu Mơ hình ngày có nhƣợc điểm, máy bị nhiễm mã độc điều kết nối tới máy chủ nên tìm đƣợc máy chủ ngày q trình phân tích mã độc Chỉ cần máy bị phá hủy ngƣng hoạt động máy bots khơng cịn Peer-to-peer botnet model Mơ hình Bonet kết nối ngang hàng Mơ hình đƣợc sinh để khắc phục điểm yếu client/server Thay kết nối tập trung vào máy chủ máy bots kết nối ngang hàng chia sẻ với Thêm chức điều khiển vào máy bots để máy dễ dàng giao tiếp, chia sẻ điều khiển lẫn nhằm mục đích cản trở nỗ lực tìm máy chủ Trong cấu trúc máy chủ lẫn máy bots kết nối qua nút lân cận để truyền liệu cho Để trì ổn định cấu trúc máy có danh sách máy tin cậy để kết nối với Mơ hình nguy hiểm nhiều so với client/server, khó khăn để tìm nguồn gốc ngăn để ngăn chặn phá hủy hoàn toàn máy mạng lƣới điều có khả máy điều khiển Nhƣng mơ hình lại lộ nhƣợc điểm chức điều khiển máy bots nên ngƣời tạo chúng có khả quyền kiểm soát Để hạn chế điều mã độc thƣờng đƣợc mã hóa kỹ lƣỡng 1.1.5 Phịng Chống Dos - Ddos - Botnet Đối với phòng chống Ddos chƣa có cách phịng chống triệt để rõ ràng Vì kiểu cơng chủ động nhƣ nêu trên, để bảo mật website cần phải có kế hoạch cụ thể LP Tech giới thiệu số cách phòng chống Ddos Botnet nhƣ sau: Định tuyến hố đen (black hole) Đây cách làm phổ biến quản trị viên làm bảo mật website Khi phát lƣợng lớn truy cập bất thƣờng, truy cập đƣợc chuyển vào kể truy cập bình thƣờng hay ác ý, nhằm giảm thiểu thiệt hại cho máy chủ Hiện nhà cung cấp dịch vụ internet ISP cung cấp dịch vụ Tuy nhiên để thiết lập cần tốn nhiều thời gian thiết bị Giới hạn truy cập Tự thiết lập số lƣợng truy cập cho máy chủ, website lúc Cách nhằm ổn định kết nối với cho ngƣời sử dụng hệ thống xảy công Sau đạt đƣợc số lƣợng giới hạn truy cập cho phép truy cập sau bị chặn lại phải chờ Tuy nhiên biện pháp có rủi ro định, website làm SEO, Nếu bạn chạy Dịch Vụ SEO mà chặn hay giới hạn truy cập nguy hiểm Chặn IP Ngăn chặn IP đáng ngờ truy cập liên tục vào website bạn Đối với Dos cách đơn giản nhƣng hiệu Cách đƣợc sử dụng hầu hết trang web PHP cách cấu hình file htaccess Ở ví dụ nhắc tới Tuy nhiên việc chặn IP phần mềm có góp phần vào việc bảo mật website khỏi công DDOS nhƣng chặn cơng nhẹ mà thơi Các cơng lớn để Bảo mật website tốt cần phải ngăn chặn Request Layer đầu tiên, vào tới server vào đến Layer-7 theo Mơ Hình OSI rồi, việc giảm hiệu bảo mật website Sử dụng Firewall Đây khái niệm quen thuộc với làm bảo mật website Tƣờng lửa hoạt động nhƣ rào chắn lọc kết nối khơng an tồn chiều vào hệ thống Nó giúp lọc truy cập bị nghi ngờ bots công giúp hạn chế nguồn tài nguyên tiêu hao ổn định chất lƣợng ngƣời dùng bên Sử dụng Cloudflare Dịch vụ Cloudflare DNS trung gian giúp điều phối lƣợng truy cập vào máy chủ Thay truy cập trực tiếp thơng quan DNS ngƣời dùng truy cập thơng qua máy chủ DNS Cloudflare Đây hình thức bảo mật website hiệu quả, nhiên sử dụng gói miễn phí có nhiều vấn đề nhƣ thời gian Down-Time tốc độ bị ảnh hƣởng tham số ứng dụng trƣớc trình yêu cầu, phản hồi trình duyệt ứng dụng web Tham khảo: Pentest gì? Dịch vụ Pentest website & mobile app Phƣơng pháp kiểm tra lỗi tự động q trình cơng cụ thực tự động quét thƣ mục, tập tin ứng dụng web tự động xác định điểm mà cần đệ trình liệu Trên sở xác định điểm cần đệ trình tự động tiếp đến cơng cụ thực đệ trình tập liệu đƣợc định nghĩa sẵn chờ phản hồi từ phía ứng dụng web để kiểm tra xem liệu ứng dụng có bị lỗi bảo mật hay không? Một số công cụ tiêu biểu: Wa3f: công cụ đánh giá lỗi bảo mật tự động miễn phí Thực kiểm tra tất lỗi bảo mật phổ biến danh sách 10 lỗi bảo mật OWASP giới thiệu 46 Wa3f Acunetix: công cụ thƣơng mại với khả kiểm tra lỗi bảo mật mạnh Acunetix hỗ trợ tất phƣơng thức kiểm tra nhƣ kiểm tra thủ công kiểm tra tự động Tuy nhiên Acunetix đƣa đến ngƣời sử dụng với phí đắt, 3000 USD cho quyền 1.3.2 Hộp trắng (Whitebox) Phƣơng pháp kiểm tra hộp trắng lỗi bảo mật ứng dụng web trình kiểm tra trực tiếp mã nguồn ứng dụng web để tìm lỗi bảo mật Quá trình quan sát kiểm tra mã nguồn thực thủ cơng thực cơng cụ Q trình thực cơng cụ tức q trình mà cơng cụ thực quét toàn mã nguồn ứng dụng dựa tập nhận biết hàm, dẫn có khả gây lỗi ngơn ngữ lập trình phát triển ứng dụng web Một cơng cụ kể đến việc qt mã nguồn AppCodeScan Blueinfy Solutions Pvt Ltd phát triển 47 AppCodeScan Quá trình tìm kiếm lỗi bảo mật mã nguồn ứng dụng phƣơng pháp thủ công phải địi hỏi ngƣời kiểm tra phải có phƣơng pháp kiểm tra soát hợp lý Bởi khối lƣợng tập tin nhƣ nội dung ứng dụng web lớn, nhƣ phƣơng pháp rà sốt đánh giá hợp lý tiêu tốn nhiều thời gian để phát lỗi 1.3.3 Phương pháp Fuzzing Phƣơng pháp kiểm tra fuzzing lỗi bảo mật thực chất phƣơng pháp kiểm tra hộp đen nhƣng đƣợc phân nhánh có đặc điểm riêng biệt Các công cụ sử dụng phƣơng pháp fuzzing để kiểm tra lỗi bảo mật không thực việc quét cấu trúc thƣ mục tập tin ứng dụng web, mà đơn giản tập hợp tất lỗi đƣợc công bố ứng dụng web cụ thể thực đệ trình đến ứng dụng web xem thử ứng dụng có bị mắc 48 lỗi bảo mật hay khơng? Ví dụ, fuzzer kiểm tra tất lỗi bảo mật liên quan đến ứng dụng cổng thơng tin điện tử Joomla tập hợp tất lỗi bảo mật liên quan đến ứng dụng Joomla thực đệ trình ngƣời kiểm tra cung cấp Cách thức thu thập lỗi bảo mật Một công cụ kiểm tra lỗi bảo mật sử dụng phƣơng pháp kiểm tra fuzzing đƣợc tổ chức thành phần: Phần 1: Tập hợp tất định dạng URL mà gây lỗi cho ứng dụng cụ thể Ví dụ: lỗi bảo mật cho ứng dụng Joomla đƣợc phát nằm URL: “index.php?option=com_content&view=article” URL đƣợc lƣu sở liệu chƣơng trình với tham số đệ trình gây lỗi Phần 2: Tập hợp tất đặc điểm nhận diện tƣơng ứng với URL gây lỗi trình fuzzing Các điểm điểm nhận diện lƣu với URL gây lỗi sở liệu Kiểm tra lỗi bảo mật web phƣơng pháp kiểm tra fuzzing có ƣu điểm kiểm tra nhanh với lƣợng lớn website mà biết tên ứng dụng chạy Ví dụ, tập hợp lƣợng lớn danh sách website biết chắn chạy ứng dụng Joomla sử dụng công cụ kiểm tra lỗi bảo mật liên quan đến ứng dụng Joomla cách nhanh chóng Nhƣợc điểm phƣơng pháp kiểm tra tính cố định đƣợc tổ chức cho lỗi bảo mật lỗi bảo mật muốn kiểm tra phải định dạng kiểm tra đƣợc dấu hiệu nhận biết phải đƣợc tập hợp cách đầy đủ, khơng bỏ xót Nếu khơng ứng dụng có lỗi nhƣng liệu nhận diện thiếu, phát lỗi bảo mật *** Một số cơng cụ quét lỗ hổng bảo mật tự động khác Nikto: công cụ thực fuzzer lỗi bảo mật tốt nhanh Với sở liệu cập nhật hàng trăm lỗi bảo mật đƣợc xuất ngày Đặc biệt Nikto đƣợc sử dụng hồn tồn miễn phí có khả tùy biến cao Nikto cơng cụ đƣợc insecure.org bình chọn công cụ quét lỗi bảo mật web tốt 10 cơng cụ Ngồi ra, Nikto cho phép ngƣời sử dụng tùy biến viết thành phần nhúng 49 kết với Nikto để thực thi Hơn nữa, Nikto hỗ trợ nhiều định dạng chƣơng trình quét lỗi bảo mật khác nhƣ: Nmap, Nessus Nikto AppScan: công cụ thƣơng mại tập hợp lớn lỗi bảo mật cho ứng dụng web riêng biệt 50 BÀI : TẤN CÔNG VÀ BẢO MẬT CSDL 2.1 CÁC PHƢƠNG PHÁP TẤN CÔNG, KHAI THÁC TRÁI PHÉP CSDL 2.1.1Tổng quan SQL Injection Khái niệm 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 đầu vào ứng dụng web thông báo lỗi hệ quản trị sở liệu trả để inject (tiêm vào) thi hành câu lệnh SQL bất hợp pháp SQL injection cho phép kẻ cơng thực thao tác sở liệu ứng dụng, chí server mà ứng dụng chạy Nguyên nhân Dữ liệu đầu vào từ ngƣời dùng từ nguồn khác không đƣợc kiểm tra kiểm tra không kỹ lƣỡng Ứng dụng sử dụng câu lệnh SQL động, liệu đƣợc kết nối với mã SQL gốc để tạo câu lệnh SQL hồn chỉnh 51 Tính nguy hiểm công SQL Injection Tùy vào mức độ tinh vi, SQL Injection cho phép kẻ cơng: Vƣợt qua khâu xác thực ngƣời dùng Chèn, xóa sửa đổi liệu Đánh cắp thông tin CSDL Chiếm quyền điều khiển hệ thống 2.1.2 Phân loại kiểu công SQL Injection SQL Injection chia nhỏ thành dạng sau In-band SQLi o Error-based SQLi o Union-based SQLi Inferential SQLi (Blind SQLi) Blind-boolean-based SQLi o Time-based-blind SQLi Out-of-band SQLi In-band SQLi Đây dạng công phổ biến dễ để khai thác lỗ hổng SQL Injection 52 Xảy hacker tổ chức cơng thu thập kết trực tiếp kênh liên lạc In-Band SQLi chia làm loại chính: o Error-based SQLi o Union-based SQLi Error-based SQLi Là kỹ thuật công SQL Injection dựa vào thông báo lỗi đƣợc trả từ Database Server có chứa thông tin cấu trúc sở liệu Trong vài trƣờng hợp, Error-based đủ cho hacker liệt kê đƣợc thuộc tính sở liệu Union-based SQLi Là kỹ thuật công SQL Injection dựa vào sức mạnh tốn tử UNION ngơn ngữ SQL cho phép tổng hợp kết hay nhiều câu truy vấn SELECTION kết đƣợc trả nhƣ phần HTTP response 53 Inferential SQLi (Blind SQLi) Không giống nhƣ In-band SQLi, Inferential SQL Injection tốn nhiều thời gian cho việc cơng khơng có liệu đƣợc thực trả thông qua web application hacker khơng thể theo dõi kết trực tiếp nhƣ kiểu cơng In-band Thay vào đó, kẻ công cố gắng xây dựng lại cấu trúc sở liệu việc gửi payloads, dựa vào kết phản hồi web application kết hành vi database server Có dạng cơng o Blind-boolean-based o Blind-time-based SQLi Blind-boolean-based Là kĩ thuật công SQL Injection dựa vào việc gửi truy vấn tới sở liệu bắt buộc ứng dụng trả kết khác phụ thuộc vào câu truy vấn True hay False Tuỳ thuộc kết trả câu truy vấn mà HTTP reponse thay đổi, giữ nguyên Kiểu công thƣờng chậm (đặc biệt với sở liệu có kích thƣớc lớn) ngƣời công cần phải liệt kê liệu, mị kí tự 54 Time-based Blind SQLi Time-base Blind SQLi kĩ thuật công dựa vào việc gửi câu truy vấn tới sở liệu buộc sở liệu phải chờ khoảng thời gian (thƣờng tính giây) trƣớc phản hồi Thời gian phản hồi (ngay hay trễ theo khoảng thời gian đƣợc set) cho phép kẻ cơng suy đốn kết truy vấn TRUE hay FALSE Kiểu công tốn nhiều thời gian tƣơng tự nhƣ Boolean-based SQLi Out-of-band SQLi Out-of-band SQLi dạng công phổ biến, chủ yếu phụ thuộc vào tính đƣợc bật Database Server đƣợc sở dụng Web Application Kiểu công xảy hacker trực tiếp công thu thập kết trực tiếp kênh (In-band SQLi), đặc biệt việc phản hồi từ server không ổn định Kiểu công phụ thuộc vào khả server thực request DNS HTTP để chuyển liệu cho kẻ cơng Ví dụ nhƣ câu lệnh xp_dirtree Microsoft SQL Server sử dụng để thực DNS request tới server khác kẻ cơng kiểm sốt, Oracle Database‟s UTL HTTP Package sử dụng để gửi HTTP request từ SQL PL/SQL tới server kẻ cơng làm chủ 2.2 BẢO MẬT, AN TỒN CSDL Theo thống kê, khoảng 90% liệu máy tính đƣợc lƣu trữ dƣới dạng CSDL Tất thông tin ngân hàng, kho tàng, quản lý sở vật chất, dân số, tài nguyên khoáng sản, sách thƣ viện, dạng CSDL Các dạng thông tin khác nhƣ thƣ tín (bao gồm tất hệ Internet Mail, IBM Lotus Notes, Microsoft Exchange Server, ), văn (đƣợc soạn thảo Microsoft Word, Word Perfect, ), thông tin đồ hoạ khác (đƣợc soạn Power Point, Corel Draw, AutoCad, ) dạng khác chiếm 10% 55 Thông tin đƣợc coi tài sản CSDL không lƣu trữ thông tin có liên quan tới bí mật nhà nƣớc hay thông tin lĩnh vực kinh tế (ngân hàng, tốc độ tăng trƣởng ngành sản xuất, ), mà chứa thông tin cá nhân (số điện thoại nhà riêng, sở thích, sở đoản, ) chúng cần đƣợc bảo vệ Trong [1] có phân tích đầy đủ nhu cầu bảo mật CSDL Với hệ quản trị CSDL nhỏ chạy máy tính đơn lẻ nhƣ Dbase hay Foxpro vấn đề bảo mật liệu chƣa đƣợc quan tâm Nhƣng đến hệ quản trị Microsoft Access bên cạnh tính cho phép phân quyền sử dụng cịn có tính mã hóa/giải mã Đối với hệ quản trị CSDL lớn nhƣ Oracle, SQL Server hay Informix tính bảo mật đƣợc thực nhờ chế sau [2]: - Khả bảo mật hệ điều hành mạng: Oracle, SQL Server, Informix, hệ quản trị CSDL có cấu trúc khách/chủ chạy hệ điều hành mạng nhƣ Novell Netware, Windows NT Server, Unix (Solaris, AIX, ) - Khả phân quyền hệ quản trị CSDL: Các hệ quản trị CSDL cho phép phân quyền thao tác để thiết kế (tạo CSDL, tạo bảng, ) hay thay đổi cấu trúc CSDL, thao tác khai thác sử dụng liệu (quyền đọc, quyền ghi, quyền xoá) Các quyền đƣợc phân nhỏ cho bảng, chí tới trƣờng - Khả bảo mật hệ quản trị CSDL: Microsoft SQL Server cho phép bảo mật liệu đƣờng truyền nhập liệu nhờ câu lệnh “Insert with encryption” Tuy nhiên, câu lệnh khơng có tham số để nạp khố Điều có nghĩa khả mã hóa hồn tồn hệ thống đảm nhận Microsoft Access có chức Encrypt/Decrypt nhƣng việc tìm hiểu chế hoạt động cần phải có thêm nghiên cứu sâu Để tăng cƣờng tính bảo mật cho Oracle Database Server, hãng Oracle xây dựng Oracle Proxy Server 56 Khả tạo View đƣợc đánh giá nhƣ tính bảo mật Có thể nói, xây dựng ứng dụng cho phép truyền tệp có bảo mật xác thực (bao gồm xác thực thông tin xác thực ngƣời gửi) môi trƣờng mạng tƣơng đối dễ Tuy hệ thƣ tín nhƣ Lotus Notes, Microsoft Outlook, có sẵn tính bảo mật, nhƣng việc đƣa thêm tính mã hố vào hệ thƣ tín khơng khó khăn (mặc dù khó so với việc bảo mật thơng tin tệp liệu) Tuy vậy, đặc thù ứng dụng CSDL, để bảo mật CSDL cần giải vấn đề sau đây: - Thông tin CSDL cần đƣợc sử dụng chung, nên việc dùng khố riêng cho ngƣời sử dụng khơng thích hợp Bởi tốn đặt là: Lƣợc đồ phân phối khố nhƣ để vừa đáp ứng đƣợc nhu cầu bí mật, vừa tạo điều kiện để liệu khai thác nhiều ngƣời lúc? Khoá thay đổi theo ghi (record) chung cho ghi? - Thông tin CSDL cần phải đƣợc cập nhật, sửa đổi thƣờng xuyên, nên giải theo hƣớng mã tệp (mặc dù Foxpro CSDL đƣợc lƣu dạng tệp DBF; Access đƣợc lƣu tệp MDB; SQL Server đƣợc lƣu tệp DAT, ) Nếu mã tệp liệu khơng thể đảm bảo đƣợc u cầu truy nhập ngẫu nhiên (random access) Khi CSDL có dung lƣợng lớn thời gian mã hóa/giải mã lớn không đáp ứng đƣợc yêu cầu thực tế Việc mã hoá phải đáp ứng đƣợc yêu cầu toán khai thác liệu, tức đảm bảo thực đƣợc câu lệnh lọc liệu (SELECT FROM WHERE ) Nhƣ tệp index, trƣờng khoá (key field) cần phải đƣợc xử lý đặc biệt Vì thơng tin CSDL đƣợc lƣu trữ lâu dài không tệp liệu đƣợc giải mã xố nhanh chóng nên thay khoá, tệp phải đƣợc giải mã khoá cũ mã lại khoá Để giải tốn bảo mật CSDL áp dụng phƣơng pháp đặc thù [3] Giải pháp giải toán bảo mật CSDL theo phần CSDL ngân hàng nhƣ sau: trƣờng “họ tên”, “số tài khoản”, đƣợc giữ nguyên Chỉ có trƣờng “số tiền” đƣợc mã hố Ánh xạ f(x) cần phải thoả mãn tính chất: f(x + y) = f(x) + f(y) f(x × y) = x × f(y) (hay f(x × y) = f(x) × f(y)) Ngồi ra, ánh xạ f cịn cần phải bảo tồn thứ tự: x > y f(x) > f(y) Hiện nay, phần lớn chế bảo mật đƣợc dành cho ngƣời thiết kế hệ quản trị CSDL (tức hãng phần mềm lớn nhƣ Oracle, Microsoft, ) 57 từ góc độ ngƣời khai thác Cũng hãng sản xuất hệ quản trị CSDL có để ngỏ khả cho ngƣời sử dụng tích hợp mật mã vào, nhƣng cách thức thực nhƣ khơng đƣợc cơng bố rộng rãi Tuy vậy, giải toán bảo mật CSDL số cách sau : Hình 1: Mơ hình xác thực Cisco Secure Hình: Mơ hình sử dụng tầng kiểm sốt Proxy - Tận dụng hết khả an tồn sẵn có hệ điều hành mạng hệ quản trị CSDL Sau thực cài đặt theo cách thơng thƣờng khả an ninh/an tồn hệ điều hành chƣa phát huy đƣợc tác dụng Cần thực thao tác quản trị cần thiết để phát huy tối đa khả sẵn có hệ thống - Bảo mật liệu CSDL đƣờng truyền giống nhƣ dịch vụ mạng khác (ftp http, e-mail, ) cách sử dụng phần mềm bảo mật liệu nhƣ IPSec SSL Đối với ngƣời sử dụng truy cập từ xa qua Remote Access Server kiểm sốt phần mềm (ví dụ nhƣ dùng Cisco Secure thiết bị hãng Cisco (Hình 1)) Việc kiểm tra xác thực thực theo thủ tục TACASC+ hay RADIUS 58 - Kiểm soát truy nhập: cần tăng thêm chế kiểm soát truy nhập/phân quyền sử dụng (bên cạnh chế có hệ điều hành mạng Database Server) Đối với SQL Server dùng Open Data Service để thực chức Đối với Oracle Database Server Oracle Proxy Server phần mềm tăng thêm lần kiểm soát Việc cập nhật khai thác liệu mạng LAN cần thiết, nhƣng thực đƣợc nhờ biện pháp nghiệp vụ Giải vấn đề bảo mật đƣờng truyền cần phải đặc biệt quan tâm việc lặp liệu (Replication) Server (mơ hình phân tán) Việc giải tốn phụ thuộc vào hệ quản trị CSDL đòi hỏi phải hiểu rõ chế lặp liệu hệ CSDL Bảo mật đƣờng truyền trình khai thác: Giữa máy trạm máy chủ ln diễn q trình cập nhật liệu (3 thao tác việc cập nhật insert, update, delete) nhƣ khai thác liệu Khi khai thác liệu máy trạm gửi máy chủ câu truy vấn, máy chủ gửi trả máy trạm kết thực truy vấn (Hình 3) 59 Hình 3: Mơ hình cập nhật khai thác liệu máy trạm máy chủ Hình 4: Mơ hình mã hóa liệu đường truyền - Mọi liệu đƣờng truyền máy chủ máy trạm cần đƣợc bảo mật Dữ liệu truy vấn đƣợc mã hóa máy trạm giải mã máy chủ Dữ liệu trả lời cho câu truy vấn đƣợc mã hố máy chủ giải mã máy trạm (Hình 4).Chính đặc trƣng phức tạp toán bảo mật CSDL trình bày trên, nên nhu cầu bảo mật CSDL lớn, song nói giới có sản phẩm bảo mật CSDL, tổ chức thuộc “thành phần thứ 3” (là ngƣời không tạo hệ quản trị CSDL) tạo 60 ... lỗi bảo mật ứng dụng web trình kiểm tra trực tiếp mã nguồn ứng dụng web để tìm lỗi bảo mật Quá trình quan sát kiểm tra mã nguồn thực thủ cơng thực cơng cụ Q trình thực cơng cụ tức q trình mà cơng... dụng web tự động xác định điểm mà cần đệ trình liệu Trên sở xác định điểm cần đệ trình tự động tiếp đến cơng cụ thực đệ trình tập liệu đƣợc định nghĩa sẵn chờ phản hồi từ phía ứng dụng web để... chọn Chỉ lƣu liệu máy bạn trình duyệt Chọn Chặn liệu trang Web cookied bên thứ ba 15 Quản lý cookies trình duyệt Mozilla Firefox Hãy nhấp vào biểu tƣợng menu góc bên phải cửa sổ trình duyệt chọn