Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 42 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
42
Dung lượng
9,88 MB
Nội dung
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP.HCM KHOA CÔNG NGHỆ THƠNG TIN Ngành An Tồn Thơng Tin & BẢN BÁO CÁO ĐỒ ÁN MƠN HỌC Tìm hiểu triển khai giải pháp phát phòng chống lỗ hổng SQL Injection GVHD: Nguyễn Thị Hồng Thảo SVTH: Họ Tên MSSV Đỗ Thị Như Ý 2033181084 Đặng Ngọc Gia Linh 2033183001 TP.Hồ Chí Minh, tháng năm 2021 NHẬN XÉT GIẢNG VIÊN HƯỚNG DẪN TP.HCM, ngày tháng năm 2021 (kí ghi gõ họ tên ) NHẬN XÉT GIẢNG VIÊN CHẤM PHẢN BIỆN TP.HCM, ngày tháng năm 2021 (kí ghi gõ họ tên ) TP.HCM, ngày tháng năm 2021 (kí ghi gõ họ tên ) Mục lục Danh mục hình ảnh Danh mục từ viết tắt SQL SQLi CSDL WAF DVWA Structured Query Language Structured Query Language Injection Cơ sở liệu Web Application Firewall Damn Vulnerable Web Application Chương 1: Cơ sở lí thuyết Giới thiệu sở liệu 1.1 Cơ sở liệu (Database): Là thông tin tổ chức hay cá nhân (một trường học, cơng ty, nhà máy ) chúng có mối quan hệ với Được lưu trữ máy tính thiết bị ( USB, thẻ nhớ, đĩa từ ) để phục vụ cho nhu cầu khai thác thông tin với nhiều mục đích khác 1.2 Hệ quản trị CSDL Là phần mềm hệ thống nhằm tương tác với người dùng cho phép người dùng thực điều sau: • Trình bày chi tiết cấu trúc liệu • Lưu trữ liệu thiết bị • Tìm kiếm, lưu, xóa chỉnh sửa thông tin database 1.3 Ngôn ngữ giao tiếp người sử dụng CSDL - Ngôn ngữ truy vấn liệu (Structured Query Language - SQL): dùng để truy vấn thơng tin cần thiết CSDL • Ngôn ngữ mô tả liệu (Data Definition Language - DDL): cho phép tạo cấu trúc bảng CSDL, mối liên hệ liệu (như ràng buộc tồn vẹn hay khóa) • Ngơn ngữ thao tác liệu (Data Manipulation Language - DML): cho phép người dùng chọn, thêm, xóa sửa liệu CSDL - Ngôn ngữ quản lý liệu (Data Control Language - DCL): cho phép người quản trị thay đổi cấu trúc bảng, kiểm sốt bảo mật thơng tin,cấp quyền truy cập khai thác vào CSDL cho người dùng 1.4 Các loại mơ hình liệu • Mơ hình liệu phân cấp (Hierarchical Model): Dữ liệu mơ hình chia thành nút nhỏ dùng để thể cho thực thể định để tạo nên cấu trúc dạng cây Giữa nút nút cha liên hệ với theo mối quan hệ xác định Nó phù hợp việc phân cấp nhân viên công ty, quan hay tổ chức • Mơ hình mạng (Network Model): Mơ hình biểu diễn đồ thị có hướng Các thức thực nằm đỉnh đường từ đỉnh sang đỉnh khác gọi quan hệ hai đỉnh • Mơ hình liệu quan hệ (Relation Data Model): Trong mơ hình quan hệ, liệu tổ chức thành bảng, bảng tương ứng với thực thể hệ thống Những khái niệm sử dụng mơ hình bao gồm: thuộc tính, quan hệ, lược đồ quan hệ, bộ, khóa • Mơ hình liệu hướng đối tượng (Object Oriented Model): Dựa tiếp cận hướng đối tượng bao gồm khái niệm: lớp, kế thừa Đặc trưng tính chất mơ hình tính đóng gói, đa hình, tính tái sử dụng kế thừa Đây loại mơ hình tiên tiến • Mơ hình liệu thực thể kết hợp (Entity – Relationship Model): Các khái niệm sử dụng mơ hình là: thực thể, thuộc tính loại thực thể, khóa loại thực thể, mối kết hợp Giới thiệu an ninh sở liệu 2.1 An ninh sở liệu gì? Là việc sử dụng thủ thuật cho việc kiểm soát bảo mật thông tin nhằm bảo vệ sở liệu, chống lại xâm phạm để đảm bảo tính bảo mật, toàn vẹn khả dụng liệu 2.2 Thành phần an ninh sở liệu • Database Activity Monitoring: Giám sát máy chủ sở liệu, cảnh báo, ngăn chặn hành vi xấu đến sở liệu thời gian thực, kể chạy tảng ảo hoá mơi trường đám mây • Virtual Patching: Khơng cần làm gián đoạn hoạt động hệ thống virtual patching phát vá thiếu nhờ việc quét lỗ hổng ta sửa lỗ hổng bảo mật nhằm nâng cao khả khả bảo mật sở liệu hệ thống • Vulnerability Manager for Database: Tự động quét sở liệu có hệ thống mạng, định việc thực thi vá cuối chưa áp dụng, kiểm tra lỗ hổng mật yếu hay kiểm ta xem lỗ hổng thơng thường có gây hại cho hệ thống hay không 2.3 Ưu điểm - Vulnerablility Manager: • Hầu hết lỗ hổng cập nhật vịng 72 • Tự động ngăn chặn công dựa vào hành vi người dùng thực thi sở liệu đồng thời tự động cập nhật lại sách - Database Activity Monitor: • Theo dõi mối đe doạ bên sở liệu • Ngăn chặn trước cơng • Tiết kiệm thời gian tiền bạc • Xây dựng đơn giản, nhanh chóng • Không cần ngắt hoạt động hệ thống cài đặt hay cập nhật - Virtual Patching • Tích hợp với giám sát hành vi người dùng sở liệu Để phát ngăn chặn kịp thời hành vi gây hại đến sở liệu • Khơng cần thay đổi cấu hình thể thể bảo sở liệu khỏi lỗ hổng điểm yếu bảo mật • Việc bảo vệ lỗ hổng thực thi với 48-72 sau lỗ hổng vá công bố nhà cung cấp Tìm hiểu SQL Injection Hình 1.3 1: Cơ chế cơng SQL Injection 3.1 SQL gì? - SQL (Structured Query Language) ngơn ngữ truy vấn có cấu trúc cho phép người sử dụng khai thác sở liệu, truy vấn thông tin cần thiết sở liệu - Ưu điểm SQL: • Dùng SQL truy cập liệu hệ thống sở liệu • Cho phép mơ tả liệu • Thao tác với liệu sở liệu xác định liệu • Cho phép nhúng ngôn ngữ khác sử dụng mô-đun SQL, thư viện trình biên dịch trước • Cho phép tạo sở liệu bảng • Cho phép tạo chế độ view, thủ tục lưu trữ, chức cở liệu • Cho phép thiết lập quyền bảng thủ tục view - Hạn chế SQL: • Giao diện SQL tương đối phức tạp khiến số người dùng khó truy cập • Khơng tồn quyền kiểm sốt • Phần mở rộng chương trình sở dữa liệu SQL độc quyền nhà cung cấp • Khó tiếp cận đến SQL người lập trình chi phí vận hành cho phiên SQL tương đối cao 3.2 SQL Injection gì? - Là kỹ thuật dùng đoạn SQL làm sai câu truy vấn ban đầu sở liệu, từ kẻ cơng khai thác liệu thao tác người quản trị Nhờ vào lỗ hổng câu truy vấn ứng dụng - Các thành phần dễ bị cơng • Form đăng nhập • Form tìm kiếm • Form nhận xét • Liên kết website - Một số thao tác phổ biến để cơng: • Kiểm tra đăng nhập ứng dụng • Thao tác lưu comment user xuống database Chương 3: Phòng chống công SQL Injection sử dụng Firewall Mod Security Lý thuyết Cách phịng chống cơng SQL Injection • Không tin tưởng người dùng nhập đăng vào liệu Dữ liệu xác thực trước sử dụng câu lệnh SQL • Lọc liệu từ người dùng: Cách phòng chống tương tự XSS Ta sử dụng filter để lọc kí tự đặc biệt (; ” ‘) từ khoá (SELECT, UNION) người dùng nhập vào Nên sử dụng thư viện/function cung cấp framework Viết lại từ đầu vừa tốn thời gian vừa dễ sơ sót • Khơng cộng chuỗi để tạo SQL: Sử dụng parameter thay cộng chuỗi Nếu liệu truyền vào không hợp pháp, SQL Engine tự động báo lỗi, ta khơng cần dùng code để check • Khơng hiển thị exception, message lỗi Hacker dựa vào message lỗi để tìm cấu trúc database Khi có lỗi, ta thông báo lỗi đừng hiển thị đầy đủ thơng tin lỗi, tránh hacker lợi dụng • Tạo tài khoản sở liệu, gán quyền truy cập cho tài khoản hạn chế dùng tài khoản root Dù kẻ cơng có vào sở liệu đọc liệu từ bảng chính, sửa hay xố liệu • Sao lưu liệu thường xuyên để có kẻ cơng xóa liệu ta khơi phục Giới thiệu sơ lược Mod Security • ModSecurity máy phát phòng chống xâm nhập dành cho ứng dụng Web gọi Web application firewall Hoạt động module máy chủ web Apache, 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ự hệ thống web intrusion detection chủ động theo dõi request để phát điểm khơng bình 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, Trojan Protection, Error Hiding Thực hành Tích hợp Mod Sercurity với DVWA (Damn Vulnerable Web Application) • Bước 1: Cài đặt Xampp - Tải Xampp https://www.apachefriends.org/download.html - Hình 3.2 1: Trang download Xampp Cho chạy file vừa tải chọn next để tiếp tục thực cài đặt - Hình 3.2 2: Cài đặt Xampp Chọn next lựa chọn thành phần cần cài đặt đẻ có xampp Hình 3.2 3: Lựa chọn thành phần càn cài đặt Xampp - Chọn vị trí lưu Hình 3.2 4: Chọn nơi cài đặt Xampp - Ngôn ngữ - Hình 3.2 5: Chọn ngơn ngữ Chọn next để bắt đầu cài đặt xampp - Hình 3.2 6: Bắt đầu cài đặt Mở xampp khởi động Apache MySql - Hình 3.2 7: Khởi động Apache MySql Trang Web sau cài Hình 3.2 8: Trang sau cài Xampp • Bước 2: Cài đặt DVWA - Tải DVWA https://dvwa.co.uk/ - Hình 3.2 9: Nơi tải DVWA Xóa tồn file /xampp/htdocs tạo thư mục có tên dvwa Giả nén file vừa tải copy toàn vào /xampp/htdocs/dvwa Truy cập vào http://localhost/ - Hình 3.2 10: Hình ảnh truy cập localhost Đổi tên file \xampp\htdocs\dvwa\config từ config.inc.php.dist thành config.inc.php Sửa dòng sau file php.in đẻ sữa lỗi sau Hình 3.2 11: Sau vào dvwa + Sữa dòng allow_url_include=Off thành allow_url_include=On + Sửa dòng ;extension=gd thành extension=gd - Sửa dịng sau config.inc.php Hình 3.2 12: Chỉnh sửa file config.inc.php Lưu ý: Hai key recaptcha lấy trang https://www.google.com/recaptcha/about/ - Lưu lại file sửa khởi động lại apache truy cập vào http://localhost/dvwa/setup.php -> Create database -> nhập uer admin pass: pasword Hình 3.2 13: Đăng nhập vào DVWA • Bước 3: Cài đặt Mod Security - Truy cập vào trang https://www.apachelounge.com/download/ để tải Mod Security - Hình 3.2 14: Gói tải Mod Security Giải nén file vừa tải Copy file mod_security2.so vào \apache\modules - Hình 3.2 15: Copy mod_security2.so vào \modules Copy file yajl.dll vào \apache\bin Hình 3.2 16: Copy yajl.dll vào \bin - - - Cấu hình file http.conf \apache\conf + Cho phép module unique_id cách bỏ dấu # LoadModule unique_id_module modules/mod_unique_id.so + Thêm dòng sau vào LoadModule security2_module modules/mod_security2.so Kích hoạt chế độ hoạt động cho rule nội dung SecRuleEngine On Tạo action mặc định SecDefaultAction "deny,phase:2,status:403" Chỉ thị file rule để chăn SQL Injection Include conf\sqlinjection.conf Hình 3.2 17: Chỉnh sửa file http.conf Tạo file sqlinjection.conf copy rule attack sql injection github https://github.com/SEC642/modsec/tree/master/rules/base_rules chọn modsecurity_crs_41_sql_injection_attacks.conf Hình 3.2 18: Rule github copy nội dung vào file sqlinjection.conf vừa tạo Hình 3.2 19: Nội dung file sqlinjection.conf • Bước 4: Kiểm tra hoạt động Firewall Mode Security - Khởi động lại Apache truy cập vào DVWA thực cơng SQL Injection - Hình 3.2 20: Thực công SQL Injection Thông báo chặn xuất - Hình 3.2 21: Thơng báo chặn cơng Kiểm tra error.log apache Hình 3.2 22: Kết thông báo error.log Hướng phát triển: Với xu hướng phát triển ngày công ty, doanh nghiệp cần phải lưu trữ hàng ngàn thông tin nhân viên, khách hàng nước Việc sử dụng phần mềm, ứng dụng để sử dụng cho việc lưu trữ truy cập thông tin điều thiết Để hạn chế việc bị công SQL Injection người lập trình viên cần phải sáng suốt việc lập trình Web để tránh bị rủi ro như: - Lọc liệu đầu vào để loại bỏ kí tự đặc biệt liên quan đến công - Giới hạn quyền cho user - Xác minh người dùng Ngồi doanh nghiệp xây dựng thêm firewall mơ hình để ngăn chặn công Kết luận: Cơ Sở liệu nơi lưu trữ thông tin cá nhân khách hàng việc bị lộ thông tin cá nhân gây ảnh hưởng lớn đến công ty, doanh nghiệp Nên việc bảo sở liệu việc quan trọng cần phải có biện pháp thích hợp để bảo vệ sở liệu Tài liệu tham khảo • https://resources.cystack.net/tan-cong-sql-injection/ • https://viblo.asia/p/huong-dan-test-sql-injection-vi-du-va-cach-phongngua-cac-cuoc-tan-cong-sql-injection-3P0lPYap5ox • https://xemtailieu.net/tai-lieu/sql-injection-va-cac-cach-tan-cong-phobien-107813.html • https://viblo.asia/p/sql-injection-va-cach-phong-chongOeVKB410lkW • https://quantrimang.com/tan-cong-kieu-sql-injection-va-cac-phongchong-trong-asp-net-34905 • https://securityforall.wordpress.com/2012/05/30/sql-injectiontutorials-huong-dan-day-du-ve-sql-injection/ • https://topdev.vn/blog/sql-la-gi/ • Ưu điểm nhược điểm SQL (bizflycloud.vn) • Database Security - Bảo mật sở liệu cho doanh nghiệp (vietnetco.vn) • Database security - Wikipedia • Giới Thiệu Tổng Quan Về Mod Security | KNOWLEDGE IS POWER (idz.vn) • Tích hợp "Mod Security" cho Web Application Server để chống lại SQL Injection công XSS (viblo.asia) ... - Phân loại kiểu công SQL Injection Hình 1.3 2: Các dạng SQL Injection SQL Injection chia kiểu sau: In-band SQLi: • Đây dạng công phổ biến dễ để khai thác lỗ hổng SQL Injection • Xảy hacker... bố nhà cung cấp Tìm hiểu SQL Injection Hình 1.3 1: Cơ chế công SQL Injection 3.1 SQL gì? - SQL (Structured Query Language) ngơn ngữ truy vấn có cấu trúc cho phép người sử dụng khai thác sở liệu,... hợp pháp, SQL Engine tự động báo lỗi, ta khơng cần dùng code để check • Không hiển thị exception, message lỗi Hacker dựa vào message lỗi để tìm cấu trúc database Khi có lỗi, ta thông báo lỗi