Đặt vấn đề: Hiện nay cùng với sự phát triển nhanh chóng của công nghệ và ứng dụng web, vấn đề an ninh web đang trở nên cấp thiết nhằm đảm bảo an toàn thông tin cho tất cả ngƣời dùng. Ứng dụng web đã trở thành mục tiêu tấn công phổ biến của tin tặc với các hình thức tấn công ngày càng tinh vi và phức tạp. Theo thống kê trên Zone-h.org, trung bình mỗi ngày có hơn một triệu website bị tấn công, trong đó có hàng trăm website của Việt Nam. Thời gian gần đây liên tục xảy ra nhiều vụ tấn công mạng vào cơ quan chính phủ, cơ sở hạ tầng trọng yếu, tổ chức tài chính gây tổn thất về tài chính, bất ổn chính trị và làm ảnh hƣởng cuộc sống của ngƣời dân.
Trong các cuộc tấn công đó, lỗ hổng bị khai thác nhiều nhất là tiêm nhiễm SQL (SQLi, chiếm 15% các cuộc tấn công lỗ hổng an ninh web) và Cross-site scripting (XSS, chiếm 18%) [19]. Với các lỗ hổng này, tin tặc có thể dễ dàng tấn công, chiếm quyền điều khiển, truy cập vào các nguồn thông tin nhạy cảm, gồm cả thông tin cá nhân ngƣời dùng. Trên thế giới, nhiều tổ chức, cá nhân đã phát triển các phần mềm để phát hiện và khai thác lỗ hổng an ninh web nhƣ: Acunetix, SQLMap, Havij, BurpSuite, ZAP, XSSer, Nmap… Tuy nhiên, đa số các phần mềm này là sản phẩm thƣơng mại, nếu là phiên bản miễn phí sẽ bị giới hạn nhiều tính năng, khó nâng cấp, bảo trì. Ngoài ra, các phần mềm chỉ thực hiện khai thác một lỗ hổng an ninh chuyên biệt hoặc chỉ chú trọng phát hiện lỗ hổng an ninh, chƣa tập trung phần khai thác.
Ví dụ, Acunetix là phần mềm thƣơng mại dùng để dò quét lỗ hổng tầng ứng dụng web nhƣ SQLi và XSS, nhƣng việc thực hiện phân tích XSS không hiệu quả nhƣ các công cụ khác; SQL Map và Havij có khả năng phát hiện và khai thác SQLi tốt nhƣng không dò quét lỗ hổng XSS, không thu thập (crawl) dữ liệu; BurpSuit và ZAP tích hợp nhiều tính năng nhƣng chủ yếu tập trung phần LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 12 phát hiện lỗ hổng an ninh là chính, chƣa tập trung khai thác lỗ hổng; NMap và Xprobe dùng để xác định host sẵn có hoặc các dịch vụ có thể truy cập nhƣng chƣa có khả năng phân tích lỗ hổng an ninh tầng ứng dụng; XSSer, Scott và Sharp chỉ tập trung vào lỗ hổng XSS nhƣng chủ yếu để đề xuất triển khai tƣờng lửa mức ứng dụng, xây dựng chính sách để bảo vệ ứng dụng web. Mục tiêu nghiên cứu: Với sự phổ biến và mức độ nguy hiểm của hai lỗ hổng an ninh website là SQLi và XSS, luận văn lựa chọn đề tài nghiên cứu “Phân tích tự động các Website để phát hiện lỗ hổng tiêm nhiễm SQL và XSS” với mong muốn nghiên cứu cách thức khai thác lỗ hổng an ninh web, đồng thời xây dựng một phần mềm hỗ trợ đắc lực trong quá trình kiểm tra lỗ hổng an ninh, đặc biệt có khả năng phát hiện và khai thác tốt lỗ hổng SQLi và XSS. Ngoài ra, phần mềm này bổ sung thêm một số tính năng nhƣ kiểm tra host tầng mạng, quét cổng, brute force tài khoản đăng nhập FTP và RDP, dò quét các file nhạy cảm, đƣờng dẫn trang đăng nhập của website. Phần mềm đƣợc xây dựng mới từ đầu nhằm mục đích có thể dễ dàng tùy biến chức năng, giao diện theo nhu cầu ngƣời sử dụng, có thể nâng cấp khi cần thiết, đồng thời khắc phục một số nhƣợc điểm của các phần mềm quét hiện có.
Phần mềm kiểm tra lỗ hổng an ninh theo hình thức hộp đen (kiểm tra ứng dụng từ bên ngoài, các dữ liệu đầu vào và các dữ liệu xuất ra mà không cần quan tâm đến hoạt động bên trong cũng nhƣ mã nguồn của ứng dụng), do đó có thể dễ dàng sử dụng với cả những ngƣời không có kiến thức về an ninh mạng. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 13 Nội dung nghiên cứu: - Nghiên cứu tổng quan lỗ hổng an ninh ứng dụng web. - Nghiên cứu nguyên lý, cách thức hoạt động một số công cụ dò quét lỗ hổng an ninh web phổ biến hiện nay (SQL Map, Havij, Acunetix, Burp Suite. - Nghiên cứu phƣơng pháp thu thập, trích xuất cấu trúc một website.
- Nghiên cứu phƣơng pháp phát hiện lỗ hổng an ninh SQLi, XSS. - Nghiên cứu phƣơng pháp khai thác lỗ hổng an ninh SQLi, XSS. - Nghiên cứu xử lý song song quá trình phát hiện và khai thác lỗ hổng SQLi và XSS đồng thời nhiều mục tiêu. - Nghiên cứu phƣơng pháp brute force tài khoản FTP, RDP.
Kết quả nghiên cứu: Luận văn đã xây dựng thành công phần mềm phân tích tự động website, có thể phát hiện và khai thác tốt các lỗ hổng SQLi với Cơ sở dữ liệu (CSDL) MySQL, SQL Server, kỹ thuật Error based, Blind và lỗ hổng XSS; có khả năng phát hiện và khai thác lỗ hổng SQLi và XSS với một số website mà một số phần mềm quét hiện tại không làm đƣợc. Thử nghiệm với 3289 URL có khả năng có lỗi SQLi và XSS, công cụ này có thể phát hiện 767 URL có lỗi SQLi và 100 URL có lỗi XSS, thực hiện trong thời gian nhanh hơn một số phần mềm quét hiện tại. Ngoài ra, phần mềm bổ sung thêm nhiều tính năng hỗ trợ tối đa quá trình dò quét lỗ hổng an ninh web nhƣ: kiểm tra lỗ hổng bảo mật cùng lúc nhiều website; khai thác đồng thời cả lỗi SQLi và XSS; lập lịch kiểm tra lỗ hổng website; Brute Force tài khoản FTP, RDP; tìm đƣờng dẫn thƣ mục nhạy cảm. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 14 Bố cục luận văn: Chƣơng I: Tổng quan về lỗ hổng an ninh ứng dụng web, giới thiệu lỗ hổng SQLi và XSS Giới thiệu tổng quan về các lỗ hổng an ninh ứng dựng web, các hình thức tấn công lỗ hổng SQLi, XSS và các phƣơng pháp khai thác của từng loại tấn công, cách thức ngƣời quản trị, lập trình viên thực hiện để tránh bị tin tặc khai thác các lỗ hổng an ninh trên.
Chƣơng II: Các giải pháp quét lỗ hổng ứng dụng web Giới thiệu về giải pháp quét lỗ hổng và một số công cụ dò quét lỗ hổng an ninh ứng dụng web phổ biến hiện nay, ƣu nhƣợc điểm từng công cụ. Chƣơng III: Xây dựng phần mềm phân tích tự động website phát hiện và khai thác lỗ hổng an ninh SQLi và XSS Trình bày cách thức xây dựng phần mềm phát hiện và khai thác lỗ hổng SQLi và XSS. Xây dựng sơ đồ phân rã chức năng, thuật toán, mô-đun chức năng, thực hiện khai thác các trƣờng hợp cụ thể để khai thác những website có lỗ hổng SQLi và XSS mà những công cụ hiện tại không làm đƣợc, đồng thời tích hợp nhiều tính năng mới. Chƣơng IV: Trình bày kết quả thực nghiệm Thử nghiệm các chức năng của phần mềm và đánh giá hiệu quả hoạt động, so sánh kết quả với một số phần mềm khác.
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 15 CHƢƠNG I: TỔNG QUAN VỀ LỖ HỔNG BẢO MẬT ỨNG DỤNG WEB, GIỚI THIỆU LỖ HỔNG SQLI, XSS 1. Lỗ hổng an ninh ứng dụng web Ngày nay, với sự phát triển không ngừng của các ứng dụng web thì các cuộc tấn công ứng dụng web cũng phát triển hết sức phức tạp. Điều này đã đặt ra vấn đề cấp thiết là cần làm thế nào để đảm bảo an toàn thông tin cho ứng dụng web, thông tin của ngƣời sử dụng. Hiện tại có khá nhiều phần mềm hỗ trợ lập trình viên, chuyên viên quản trị mạng tìm kiếm lỗ hổng của ứng dụng web.
Tuy nhiên, các phần mềm này không theo kịp sự phát triển nhanh chóng của các ứng dụng web, không thể ngăn chặn hoàn toàn các cuộc tấn công với phƣơng thức đa dạng, nguy hiểm trong bối cảnh lỗ hổng ứng dụng web bị phát hiện ngày càng nhiều. Thống kê cho thấy, hơn 90% các ứng dụng web tồn tại các lỗ hổng an ninh và 75% cuộc tấn công mạng tập trung vào các ứng dụng web [18]. Dự án mở về an ninh ứng dụng web OWASP đã phân loại 10 lỗ hổng ứng dụng web phổ biến và nguy hiểm nhất hiện nay gồm [17]: A1- Nhúng mã (Injection); A2- Xác thực hay quản lý phiên thiếu chính xác; A3- Thực thi mã Script xấu (XSS); A4- Đối tƣợng tham chiếu không an toàn; A5- Sai sót trong cấu hình an ninh; A6- Lộ dữ liệu nhạy cảm; A7- Điều khiển truy cập mức chức năng không an toàn; A8- Tấn công giả mạo (CSRF); A9- Sử dụng thành phần chứa lỗ hổng đã công khai; A10- Chuyển hƣớng và chuyển tiếp không an toàn. Lỗ hổng an ninh SQLi 1.
Giới thiệu lỗ hổng SQLi SQLi là lỗ hổng trong việc kiểm tra dữ liệu đầu vào của các ứng dụng web và các thông báo lỗi của hệ quản trị CSDL trả về, đƣợc tin tặc khai thác bằng cách tiêm các mã SQL để thực thi câu lệnh bất hợp pháp, đăng nhập mà không cần tên tài khoản và mật khẩu, thực hiện truy cập từ xa, xóa dữ liệu, lấy quyền quản trị của máy chủ…. Khai thác lỗ hổng SQLi là một trong những hình thức LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 16 tấn công website phổ biến hiện nay. Đa số ứng dụng web sử dụng hệ quản trị CSDL MySQL, SQL Máy chủ, Oracle, DB2, Sysbase đều có khả năng dính lỗ hổng SQLi. Sơ đồ minh họa việc tấn công SQLi đƣợc mô tả trên Hình 1.
Mỗi khi ngƣời dùng tiến hành đăng nhập vào tài khoản trực tuyến, họ sẽ phải cung cấp thông tin về Username và Password. Trong quy trình kiểm tra và xác nhận tính hợp pháp của tài khoản đó, hệ thống hoặc ứng dụng web tƣơng ứng sẽ chạy 1 câu lệnh truy vấn có dạng nhƣ sau: SELECT * FROM Users WHERE User_id='srinivas' AND Password='mypassword'; Nếu kẻ tấn công chèn đoạn mã ' OR 1=1;/* vào giá trị User-Id và */-- vào giá trị Password, câu lệnh truy vấn sẽ có dạng: SELECT * FROM Users WHERE User_id='' OR 1=1;/*' and password='*/--' Đây là câu lệnh có điều kiện luôn đúng, do đó kẻ tấn công có thể lấy toàn bộ dữ liệu của bảng Users. Hình 1: Sơ đồ minh họa tấn công SQLi 1. Phƣơng pháp phát hiện lỗ hổng SQLi Các toán tử để tự động phát hiện lỗ hổng SQLi chia làm 03 dạng [3, 4, 5]: LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 17 - Toán tử thay đổi hành vi: or '1'='1, and '1'='1, ;DROP ALL TABLES;-- - Toán tử thay đổi cú pháp câu lệnh SQL: ', ", ) , -- , *, -, #.