1. Trang chủ
  2. » Công Nghệ Thông Tin

ĐỀ TÀI : NGHIÊN CỨU CÁC KỸ THUẬT TẤN CÔNG WEBSITE VÀ CÁC GIẢI PHÁP PHÒNG CHỐNG

73 230 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

Thông tin cơ bản

Định dạng
Số trang 73
Dung lượng 2,88 MB

Nội dung

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN Tel (84-511) 736 949, Fax (84-511) 842 771 Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn LUẬN VĂN TỐT NGHIỆP KỸ SƯ NGÀNH CÔNG NGHỆ THÔNG TIN MÃ NGÀNH : 05115 ĐỀ TÀI : NGHIÊN CỨU CÁC KỸ THUẬT TẤN CƠNG WEBSITE VÀ CÁC GIẢI PHÁP PHỊNG CHỐNG Mã số : 06T4-019 Ngày bảo vệ : 15-16/06/2011 SINH VIÊN : VÕ ĐỨC KHÁNH LỚP : 06T4 CBHD : TS Huỳnh Công Pháp ĐÀ NẴNG, 06/2011 LỜI CẢM ƠN Tôi chân thành cảm ơn giảng viên TS Huỳnh Công Pháp, người trực tiếp hướng dẫn tơi hồn thành đề tài này, người tận tình hướng dẫn, bảo tơi suốt thời gian thực đề tài Trong thời gian làm việc với Thầy, học hỏi nhiều kiến thức bổ ích mà học tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc Thầy Tôi xin chân thành cảm ơn Khoa Công nghệ Thông tin, trường Đại học Bách Khoa - Đại học Đà Nẵng tạo điều kiện cho thực đề tài Xin gửi lời cảm ơn chân thành đến gia đình, ba mẹ bè bạn ln nguồn động viên to lớn, giúp đỡ tơi vượt qua khó khăn suốt q trình làm việc Mặc dù cố gắng hồn thiện đề tài với tất nỗ lực thân, chắn tránh khỏi thiếu sót Kính mong q Thầy Cơ tận tình bảo Một lần nữa, xin chân thành cảm ơn ln mong nhận đóng góp q báu tất người Đà Nẵng, tháng năm 2011 Võ Đức Khánh LỜI CAM ĐOAN Tôi xin cam đoan : Những nội dung luận văn thực hướng dẫn trực tiếp thầy TS Huỳnh Công Pháp Mọi tham khảo dùng luận văn trích dẫn rõ ràng tên tác giả, tên cơng trình, thời gian, địa điểm công bố Mọi chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, xin chịu hoàn toàn trách nhiệm Sinh viên, Võ Đức Khánh NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… MỤC LỤC CƠ SỞ LÝ THUYẾT .9 I Khái niệm thuật ngữ liên quan I.1 Hacker .9 I.2 HTTP Message I.2.1 HTTP Request I.2.2 HTTP Response 10 I.3 Cookie .10 I.4 Session .11 I.5 Proxy .11 II Quá trình công hacker 11 CÁC KỸ THUẬT TẤN CÔNG WEBSITE VÀ CÁC GIẢI PHÁP PHÒNG CHỐNG 14 I Denial of service(DoS) .14 I.1 Khái niệm 14 I.2 Mục đích mục tiêu công DoS 14 I.2.1 Các mục đích .14 I.2.2 Mục tiêu .15 I.3 Các dạng công 15 I.3.1 Các dạng công DoS .15 I.4 Mạng BOT NET 19 I.4.1 Ý nghĩa mạng BOT .19 I.4.2 Mạng BOT 19 I.4.3 Mạng Botnet 19 I.4.4 Mục đích sử dụng mạng Botnet 20 I.4.5 Các dạng mạng BOT 20 I.4.6 Các bước xây dựng mạng BotNet 21 I.5 Tấn công DDoS .22 I.5.1 Các đặc tính công DDoS 23 I.5.2 Tấn công DDoS ngăn chặn hoàn toàn .23 I.5.3 Kẻ công khôn ngoan 23 I.6 Phân loại công DdoS 24 I.7 Tấn công Reflective DNS (reflective - phản chiếu) .25 I.8 DRDoS (Distributed Reflection Denial of Service) .25 I.9 Biện pháp phòng chống 26 II Cross-Site Scripting 27 II.1 Khái niệm XSS 27 II.2 Hoạt động .27 II.3 Cảnh giác với XSS 28 II.4 Cách phát XSS .30 II.5 Tấn công 31 II.6 Tấn công XSS flash 31 II.7 Cách phòng chống XSS 32 III Lỗi tràn nhớ đệm 34 III.1 Khái niệm .34 i .III.2 Mô tả kĩ thuật .34 III.2.1 Ví dụ 34 III.2.2 Tràn nhớ đệm stack 35 III.2.3 Chương trình mẫu .35 III.3 Cách khai thác 36 III.3.1 Khai thác lỗi tràn đệm stack 36 III.3.2 Khai thác lỗi tràn đệm heap 37 III.3.3 Cản trở thủ thuật khai thác 37 III.4 Cách phòng chống tràn đệm 37 III.4.1 Lựa chọn ngôn ngữ lập trình 37 III.4.2 Sử dụng thư viện an toàn 38 III.4.3 Chống tràn nhớ đệm stack 38 III.4.4 Bảo vệ không gian thực thi .38 III.4.5 Ngẫu nhiên hóa sơ đồ khơng gian địa 39 III.4.6 Kiểm tra sâu gói tin 39 IV SQL Injection 39 IV.1 Khái niệm 39 IV.2 Phát lỗi 39 IV.3 Các loại công 40 IV.3.1 Truy xuất liệu trái phép 40 IV.3.2 Vượt qua việc chứng thực 41 IV.3.3 Chỉnh sửa database 41 IV.3.4 Tấn công sang mục tiêu khác 42 IV.4 Blind SQL Injection 42 IV.5 Cách phòng chống 45 IV.5.1 Hạn chế bị phát lỗi 45 IV.5.2 Phòng chống từ bên ngồi 45 IV.5.3 Cải thiện liệu nhập vào 45 IV.5.4 Kết luận .46 THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH THỬ NGHIỆM 47 I Giới thiệu 47 I.1 Thiết kế hệ thống 47 I.2 Thiết kế chức 47 I.3 Thiết kế sở liệu .48 I.4 Cài đặt .48 II Kết 49 III Mô kỹ thuật công SQL Injection 52 III.1 Dò lỗi 52 III.2 Tấn công .53 IV Phòng chống SQL Injection 57 TỔNG KẾT 61 I Tổng kết giải pháp phòng chống .61 I.1 Đối với người thiết kế .61 I.2 Đối với người quản trị mạng 61 I.3 Đối với người sử dụng 61 II Kết luận 62 II.1 Thành công 62 II.2 Hạn chế 62 ii Mục lục iii II.3 Hướng phát triển 62 [1] CEH Ethical Hacking and Countermeasures version module XIX [2] Stuart McClure, Joel Scambray, George Kurtz Hacking Exposed fifth edition: Network Security Secrets and Solutions The McGraw-Hill Companies [3] Eric Steven Raymond How To Become A Hacker [4] Trang web: http://www.google.com http://msdn.microsoft.com .1 http://www.hvaonline.net/ http:// nhatnghe.vn http://ceh.vn/cehs/ http://www.sqlsecurity.com/ http://www.securityfocus.com/ http://en.wikipedia.org Mục lục iv DANH MỤC HÌNH ẢNH HÌNH 1: DẠNG TẤN CƠNG SMURF SỬ DỤNG GĨI ICMP .16 HÌNH 2: TẤN CÔNG SYN 17 HÌNH 3: CƠ CHẾ THIẾT LẬP KẾT NỐI TRƯỚC KHI TRUYỀN SỐ LIỆU .18 HÌNH 4: SƠ ĐỒ CÁCH HỆ THỐNG BỊ LÂY NHIỄM VÀ SỬ DỤNG AGOBOT 22 HÌNH 5: TẤN CƠNG DDOS 22 HÌNH 6: AGENT HANDLER MODEL 24 HÌNH 7: TẤN CƠNG DDOS DỰA TRÊN NỀN TẢNG IRC 24 HÌNH 8: TẤN CƠNG KIỂU DRDOS 25 HÌNH 9: BIỂU ĐỒ CA SỬ DỤNG CHO NGƯỜI DÙNG .48 HÌNH 10: BIỂU ĐỒ CA SỬ DỤNG CHO NGƯỜI QUẢN LÝ 48 HÌNH 11: GIAO DIỆN WEBSITE 49 HÌNH 12: FORM ĐĂNG KÝ THÀNH VIÊN 50 HÌNH 13: FORM ĐĂNG NHẬP 50 HÌNH 14: FORM LIÊN HỆ, ĐĨNG GĨP Ý KIẾN 51 HÌNH 15: THÔNG TIN WEBSITE HIỂN THỊ VỚI URL TRÊN 52 HÌNH 16: THỬ VỚI LỆNH ORDER BY .53 HÌNH 17: THỬ VỚI LỆNH ORDER BY 10 .53 HÌNH 18: THỬ VỚI LỆNH ORDER BY .54 HÌNH 19: KẾT QUẢ CỦA LỆNH UNION SELECT 1,2,3,4,5,6 .54 HÌNH 20: XEM PHIÊN BẢN CỦA MYSQL 55 HÌNH 21: XEM TÊN CƠ SỞ DỮ LIỆU 55 HÌNH 22: XEM CÁC BẢNG CĨ TRONG MYSQL .55 HÌNH 23: CÁC CỘT TRONG BẢNG USERS 56 HÌNH 24: TÀI KHOẢN VÀ MẬT KHẨU TRONG BẢNG USERS 56 HÌNH 25: GIẢI MÃ MẬT KHẨU MD5 56 HÌNH 26: DỊ LỖI FORM ĐĂNG NHẬP 57 HÌNH 27: KẾT QUẢ ĐĂNG NHẬP ĐƯỢC VỚI TÀI KHOẢN CÓ TÊN USER .57 Mục lục HÌNH 28: THƠNG BÁO PHÁT HIỆN TẤN CƠNG .59 HÌNH 29: PHÂN LOẠI DỮ LIỆU NHẬP VÀO KIỂU SỐ .59 HÌNH 30: THỬ LỖI SAU KHI LỌC DỮ LIỆU .60 v Các kỹ thuật công website giải pháp phòng chống Hình 18: Thử với lệnh ORDER BY Từ ta tính số bảng ghi sở liệu Mục đích tìm nơi hiển thị lỗi để từ truy xuất thơng tin muốn lấy Ta dùng lệnh UNION SELECT để lựa chọn tất bảng ghi http://localhost/giftshop/list_products.php?id=9 union select 1,2,3,4,5,6 Hình 19: Kết lệnh Union select 1,2,3,4,5,6 Quan sát kết quả, ta thấy xuất kết khác với câu lệnh ORDER BY Xuất số 3, 6; ta lưu ý điểm để khai thác thông tin Số số ta kết hợp lựa chọn nhiều bảng ghi, kết xuất hiên ghi số số Từ đây, dựa vào vị trí số 6, ta thêm vào câu lệnh để truy xuất thông tin cần thiết Đầu tiên ta xem phiên hệ quản trị sở liệu với lệnh version() Võ Đức Khánh – Lớp 06T4 54 Các kỹ thuật công website giải pháp phòng chống Hình 20: Xem phiên MySQL Ở MySQL 5.0.51b-community-nt, việc xác định phiên MySQL quan trọng Mỗi phiên có điểm khác nên dựa vào việc xác định phiên mà đưa kỹ thuật công SQL Injection phù hợp Bây ta xác định tên sở liệu với lệnh database() Hình 21: Xem tên sở liệu Đối với MySQL phiên 4.x ta lấy tên bảng sở liệu cách đốn tên, MySQL phiên 5.0 trở lên ta dùng sở liệu INFORMATION_SCHEMA Với bảng INFORMATION_SCHEMA.TABLES chứa tên tất bảng có MySQL Hình 22: Xem bảng có MySQL Ta cần ý tới bảng catalogs, products, users bảng khác bảng mặc định MySQL Mục đích ta làm tìm tài khoản người dùng có sở liệu nên ta xem xét bảng users Dùng bảng INFORMATION_SCHEMA.COLUMNS chứa tên cột bảng Võ Đức Khánh – Lớp 06T4 55 Các kỹ thuật cơng website giải pháp phòng chống Hình 23: Các cột bảng users Để xem nội dung cột tài khoản mật khẩu, dùng lệnh group_concat() kết hợp với lệnh where để hiển thị tất bảng ghi Hình 24: Tài khoản mật bảng users Trong câu lệnh group_concat(username,0x3a,password) 0x3a dấu hai chấm (:) bảng mã ASCII Mục đích để ta phân biệt tên tài khoản mật Trong kết trên, ta thấy mật dãy gồm 32 ký tự, mật bị mã hóa md5 Chúng ta dùng vài cơng cụ để giải mã, tìm kiếm search engine Google Đối với chuỗi md5 tài khoản khanhvo, ta tìm kiếm mật dạng clear-text 123456 Hình 25: Giải mã mật md5 Đối với tài khoản khác ta làm tương tự Từ với tài khoản mật tay, ta đăng nhập vào website Tiếp tục tìm tài khoản quản trị, ta đăng nhập vào phần quản trị hệ thống trang web Sau đó, tùy động cơ, mục đích người mà làm việc khác Võ Đức Khánh – Lớp 06T4 56 Các kỹ thuật công website giải pháp phòng chống Ta thử dò lỗi form đăng nhập với cú pháp: a’ or 1=1 Sau dò lỗi ta phát với cú pháp sau đăng nhập được, mật Hình 26: Dò lỗi form đăng nhập Hình 27: Kết đăng nhập với tài khoản có tên User Vì hệ quản trị sở liệu MySQL nên thực lúc nhiều câu lệnh truy vấn, nên việc drop table form đăng nhập khơng .IV Phòng chống SQL Injection Che dấu lỗi cách thêm @ trước câu lệnh truy vấn, giúp ngăn chặn thông báo lỗi từ máy chủ Tạo lọc để lọc ký từ khóa khơng mong muốn câu lệnh SQL, liệu người dùng phải có ràng buộc định Ví dụ, đoạn mã sau đây, giúp lọc liệu nhập vào người dùng: Võ Đức Khánh – Lớp 06T4 57 Các kỹ thuật cơng website giải pháp phòng chống Lúc hacker thực câu truy vấn SQL Injection khơng thực câu truy vấn SQL mà thông báo phát công Võ Đức Khánh – Lớp 06T4 58 Các kỹ thuật công website giải pháp phòng chống Hình 28: Thơng báo phát công Nhưng cách tốt phân loại liệu nhập vào Vì câu lệnh SQL này, ứng dụng nhận liệu kiểu số (số id), nên ta bắt buộc liệu phải kiểu số (interger) không chấp nhận kiểu liệu khác Trong PHP dùng hàm intval() is_numeric() để kiểm tra Kết việc kiểm tra liệu trên: Hình 29: Phân loại liệu nhập vào kiểu số Đối với dạng form đăng nhập hay đăng ký, áp dụng lọc sử dụng hàm có sẵn php để lọc liệu người dùng nhập vào Ở áp dụng hàm addslashes() mysqli_real_escape_string() để lọc liệu người dùng nhập vào

Ngày đăng: 04/07/2019, 22:34

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

TÀI LIỆU LIÊN QUAN

w