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
3,36 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 ) Mục lục Chương 1: Cơ sở lí thuyết Giới thiệu sở liệu 1.1 Cơ sở liệu (Database): .8 1.2 Hệ quản trị CSDL 1.3 Ngôn ngữ giao tiếp người sử dụng CSDL 1.4 Các loại mơ hình liệu .8 Giới thiệu an ninh sở liệu 2.1 An ninh sở liệu gì? 2.2 Thành phần an ninh sở liệu 2.3 Ưu điểm Tìm hiểu SQL Injection 10 3.1 SQL gì? .11 3.2 SQL Injection gì? 11 Chương 2: Kỹ thuật công 15 Lý thuyết .15 Thực hành .16 Chương 3: Phịng chống cơng SQL Injection sử dụng Firewall Mod Security 29 Lý thuyết .29 Thực hành .30 Hướng phát triển: 41 Kết luận: 41 Tài liệu tham khảo 42 Danh mục hình ảnh Hình 1.3 1: Cơ chế công SQL Injection 10 Hình 1.3 2: Các dạng SQL Injection .12 Hình 2.2 1: Câu lệnh tìm kiếm website bị lỗi 16 Hình 2.2 2: Trang thinhnguyenplactic.com 17 Hình 2.2 3: Sử dụng cơng cụ Vega 17 Hình 2.2 4: Các phần liên quan đến SQL .18 Hình 2.2 5: Các phần liên quan đến SQL .18 Hình 2.2 6: Kết dùng Vega 19 Hình 2.2 7: thinhnguyenplastic.com trước dùng SQL Injection 19 Hình 2.2 8: Kết sau thêm ‘ 20 Hình 2.2 9: Hình ảnh chưa hết cột 20 Hình 2.2 10: Kết tìm hết cột 21 Hình 2.2 11: Thực lệnh Union Select .21 Hình 2.2 12: Kết sau thực lệnh 22 Hình 2.2 13: Hình ảnh cột 37 làm trang bị lỗi 22 Hình 2.2 14: Lưu ý 23 Hình 2.2 15: Thơng tin version 23 Hình 2.2 16: Thông tin database 24 Hình 2.2 17: Thơng tin user .24 Hình 2.2 18: Liệt kê bảng 25 Hình 2.2 19: Liệt kê bảng 25 Hình 2.2 20: Câu lệnh liệt kê cột bảng 26 Hình 2.2 21: Câu lệnh liệt kê cột bảng 26 Hình 2.2 22: Kết sau đổi tbl_member 27 Hình 2.2 23: Thơng tin cột 27 Hình 2.2 24: Hình ảnh đăng nhập 28 Hình 2.2 25: Kết đăng nhập thành công 28 Hình 3.2 1: Trang download Xampp 30 Hình 3.2 2: Cài đặt Xampp .31 Hình 3.2 3: Lựa chọn thành phần càn cài đặt Xampp .31 Hình 3.2 4: Chọn nơi cài đặt Xampp 32 Hình 3.2 5: Chọn ngơn ngữ 32 Hình 3.2 6: Bắt đầu cài đặt 33 Hình 3.2 7: Khởi động Apache MySql 33 Hình 3.2 8: Trang sau cài Xampp .34 Hình 3.2 9: Nơi tải DVWA .34 Hình 3.2 10: Hình ảnh truy cập localhost .35 Hình 3.2 11: Sau vào dvwa .35 Hình 3.2 12: Chỉnh sửa file config.inc.php 36 Hình 3.2 13: Đăng nhập vào DVWA 36 Hình 3.2 14: Gói tải Mod Security 37 Hình 3.2 15: Copy mod_security2.so vào \modules 37 Hình 3.2 16: Copy yajl.dll vào \bin .37 Hình 3.2 17: Chỉnh sửa file http.conf 38 Hình 3.2 18: Rule github 38 Hình 3.2 19: Nội dung file sqlinjection.conf 39 Hình 3.2 20: Thực công SQL Injection 39 Hình 3.2 21: Thơng báo chặn cơng 40 Hình 3.2 22: Kết thông báo error.log 40 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 soá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 số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, tồ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 hố 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 • Bước 10: Đăng nhập thơng tin vừa tìm bước Hình 2.2 24: Hình ảnh đăng nhập - Đăng nhập thành cơng Hình 2.2 25: Kết đăng nhập thành cơng 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 toà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