Đồ án Nghiên cứu bảo đảm an toàn thông tin bằng kiểm soát lỗ hổng trong dịch vụ Web

Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đều có nhu cầu giới thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện các phiên giao dịch trực tuyến. Vấn đề nảy sinh là khi phạm vi ứng dụng của các ứng dụng Web ngày càng mở rộng thì khả năng xuất hiện lỗi (lỗ hổng) và bị tấn công càng cao, trở thành đối tượng cho nhiều người tấn công với các mục đích khác nhau. Đôi khi, cũng chỉ đơn giản là để thử tài hoặc đùa bỡn với người khác. Cùng với sự phát triển không ngừng của Internet và các dịch vụ trên đó, số lượng các vụ tấn công trên Internet cũng tăng theo cấp số nhân. Trong khi các phương tiện thông tin đại chúng ngày càng nhắc nhiều đến những khả năng truy nhập thông tin của Internet, thì các tài liệu chuyên môn bắt đầu đề cập nhiều đến vấn đề bảo đảm an toàn dữ liệu cho các máy tính được kết nối vào mạng Internet. Theo số liệu của CERT (Computer Emegency Response Team - "Đội cấp cứu máy tính"): “số lượng các vụ tấn công trên Internet được thông báo cho tổ chức này là ít hơn 200 vào năm 1989, khoảng 400 vào năm 1991, 1400 vào năm 1993, và 2241 vào năm 1994, và năm 2001 là 5315 vụ.” Nguyên nhân chủ yếu làm cho các vụ tấn công tăng nhanh là do có rất nhiều “lỗ hổng” được tìm thấy trên các ứng dụng web. Theo thống kê của Symantec “năm 2004 có 49% số lượng lỗ hổng được tìm thấy trong các ứng dụng web. Từ tháng 7 đến tháng 11 năm 2006, xác định lỗ hổng bảo mật nằm trong ứng dụng web chiếm tới 75%, tăng 15% so với đầu năm” Những vụ tấn công này nhằm vào tất cả các máy tính có mặt trên Internet, máy tính của các công ty lớn như AT&T, IBM, các trường đại học, các cơ quan nhà nước, các tổ chức quân sự, nhà băng. Một số vụ tấn công có quy mô khổng lồ (có tới 100.000 máy tính bị tấn công). Hơn nữa, những con số này chỉ là phần nổi của tảng băng. Một phần rất lớn các vụ tấn công không được thông báo, vì nhiều lý do như: nỗi lo bị mất uy tín, hoặc đơn giản những người quản trị hệ thống không hay biết những cuộc tấn công đang nhằm vào hệ thống của họ. (Một ví dụ điển hình là cuộc tấn công vào phần mềm thương mại của IBM tháng 3/2001, hai hacker đã tìm thấy lỗ hổng trên ứng dụng mà bất cứ ai với một trình duyệt Web cũng có thể lấy tài khoản của người dùng, thậm chí cả người quản trị). Không chỉ số lượng các cuộc tấn công tăng lên nhanh chóng, mà các phương pháp tấn công ngày càng tinh vi và có tổ chức. Mặt khác, việc quản trị các hệ thống mạng đòi hỏi nhà quản trị hệ thống có kiến thức và kinh nghiệm về hệ thống mạng chắc chắn, do đó sự yếu kém trong quản lý sẽ tạo nhiều điều kiện cho các hacker khai thác. Cũng theo CERT, những cuộc tấn công thời kỳ 1988-1989 chủ yếu là đoán “tên người sử dụng/mật khẩu” (UserID/password) hoặc sử dụng lỗi của các chương trình và hệ điều hành (security hole) làm vô hiệu hệ thống bảo vệ, tuy nhiên các cuộc tấn công vào thời gian gần đây còn bao gồm cả các thao tác như giả mạo địa chỉ IP, theo dõi thông tin truyền qua mạng, chiếm các phiên làm việc từ xa (telnet hoặc rlogin), cài trojan hay worm để kiểm soát hay điều khiển máy tính vì thế, nhu cầu bảo vệ thông tin trên Internet là cần thiết nhằm mục đích bảo vệ dữ liệu, bảo vệ thông tin người dùng và bảo vệ hệ thống. Khi nói đến vấn đề bảo mật, hầu hết các chuyên gia bảo mật đều chú trọng đến sự an toàn của hệ thống mạng và hệ điều hành. Để bảo vệ hệ thống, phương pháp thường được chọn là sử dụng firewall. Tuy nhiên, theo tuyên bố của CSI/FBI : 78% nơi bị hại có sử dụng firewall và 59% thì bị tấn công thông qua Internet, cụ thể hơn là theo báo cáo của CSI/FBI Computer Crime và Security Survey thì tổng số thiệt hại do những ứng dụng Web bị tấn công từ năm 1997 đến năm 2006 là hơn 800 triệu đôla Mỹ. Với những công cụ tự động tìm lỗ hổng tuy giúp rất nhiều cho những nhà lập trình Web nhưng vẫn không thể ngăn chặn toàn bộ vì công nghệ Web đang phát triển nhanh chóng (chủ yếu chú trọng đến yếu tố thẩm mĩ, yếu tố tốc độ ) nên dẫn đến nhiều khuyết điểm mới phát sinh. Sự tấn công không nằm trong khuôn khổ vài kĩ thuật đã phát hiện, mà linh động và tăng lên tùy vào những sai sót của nhà quản trị hệ thống cũng như của những người lập trình ứng dụng.

doc73 trang | Chia sẻ: tuandn | Lượt xem: 3582 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Đồ án Nghiên cứu bảo đảm an toàn thông tin bằng kiểm soát lỗ hổng trong dịch vụ Web, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG -----oo0oo----- NGHIÊN CỨU BẢO ĐẢM AN TOÀN THÔNG TIN BẰNG KIẾM SOÁT “LỖ HỔNG” TRONG DỊCH VỤ WEB ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Nghành: Công Nghệ Thông Tin Giáo viên hướng dẫn: PGS.TS Trịnh Nhật Tiến. Sinh viên thực hiện: Hoàng Thị Thu Trang. Mã số sinh viên: 10312 HẢI PHÒNG-2007 MỤC LỤC Bảng chú giải từ viết tắt………………………………………………………..3 Lời mở đầu……………………………………………………………………..4 Chương 1: KHÁI NIỆM CƠ SỞ……………………………………………....7 1.1. KHÁI NIỆM VỀ BẢO VỆ WEB...……………………………………..7 1.2. ỨNG DỤNG WEB…………………………………………………….12 1.2.1. Khái niệm ứng dụng web…………………………………………...…12 1.2.2. Hoạt động của ứng dụng web………………………………………….13 1.3. MỘT SỐ CÔNG CỤ BẢO VỆ WEB.………………………………...15 Tường lửa……………………………………………………………...15 Mạng riêng ảo...……………………………………………………….17 Chương 2: CÁC KỸ THUẬT TẤN CÔNG LỢI DỤNG LỖ HỔNG………..18 2.1. CHÈN THAM SỐ……………………………………………………..18 2.1.1. Chỉnh sửa HTTP Header………………………………………………18 2.1.2. Chỉnh sửa địa chỉ URL………………………………………………...21 2.1.3. Chỉnh sửa trường ẩn Form……………………………………………..22 2.1.4. Thao tác trên cookie………………………………………………...…24 2.2. CHÈN MÃ LỆNH TRÊN TRÌNH DUYỆT …………….…………….27 2.2.1. Phương pháp tấn công XSS……………………………………………27 2.2.2. Biện pháp phòng tránh……………………………………………...…31 2.3. CHÈN CÂU LỆNH TRUY VẤN ………………………………….....32 2.3.1. Tấn công vượt qua kiểm tra đăng nhập……………………………......32 2.3.2. Tấn công dựa vào câu lệnh SELECT………………………………....34 2.3.3. Tấn công dựa vào câu lệnh INSERT…………………………………..36 2.3.4. Tấn công dựa vào Store-Procedure…………………………………....37 2.3.5. Biện pháp phòng tránh…………………………………………...……38 2.4. TẤN CÔNG DỰA VÀO “KIỂU QUẢN LÝ PHIÊN LÀM VIỆC…..40 2.4.1. Tấn công kiểu “ấn định phiên làm việc”……………………………...41 2.4.2. Tấn công kiểu “đánh cắp phiên làm việc”…………………………….45 2.4.3. Biện pháp phòng tránh………………………………………………...46 2.5. TẤN CÔNG “TỪ CHỐI DỊCH VỤ”………………………………….47 2.5.1. Khái niệm DoS………………………………………………………...47 a/ Lợi dụng TCP thưc hiện Synflood………………………………….49 b/ Tấn công vào băng thông…………………………………………...50 c/ DdoS………………………………………………………………...52 2.5.2. Biện pháp phòng tránh…………………………………………………53 2.6. NGÔN NGỮ PHÍA TRÌNH CHỦ……………………………………..54 2.7. TẤN CÔNG “TRÀN BỘ ĐỆM”………………………………………56 Chương 3: TỔNG KẾT KỸ THUẬT TẤN CÔNG CỦA HACKER………...58 3.1. THU THẬP THÔNG TIN Ở MỨC HẠ TẦNG CỦA MỤC TIÊU…...58 3.2. KHẢO SÁT ỨNG DỤNG WEB………………………………………61 Ví dụ thử nghiệm……………………………………………………………..63 Bảng chú giải từ viết tắt DNS Domain Name System Hệ thống tên miền ACK Acknowlegment Xác nhận CSDL Cơ sở dữ liệu SYN Synchronize Đồng bộ TTL Time TO Live Thời gian tồn tại FIN Fully Intergrated Netword Mạng tích hợp đầy đủ HTTP Hyper Text Transfer protocol Giao thức truyền siêu văn bản SSL Secure Socket Layer Khe cắm an toàn HTTPS HTTP + SSL Hacker Tin tặc CGI Common Gateway Interface Giao diện cổng thông thường IP Internet Protocol Giao thức mạng TCP Transfer Control Protocol Giao thức điều khiển truyền thông SSI Server Side Include Ngôn ngữ phía trình chủ URI Uniform Resour Identifies Con trỏ đến tài nguyên web URL Uniform Resour Locator Định vị tài nguyên web CSV Client Side Validator Kiểm tra ngôn ngữ phía trình duyệt dbo Data base owner Người sở hữu cơ sở dữ liệu Sa System Administrator Người quản trị hệ thống IIS Internet Information Server Dịch vụ thông tin mạng OWASP The open web Appllication standard project Dự án ứng dụng web HTML Hyper Text Markup Language Ngôn ngữ đánh dấu siêu văn bản IIS Internet Infomation Server LỜI MỞ ĐẦU Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đều có nhu cầu giới thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện các phiên giao dịch trực tuyến. Vấn đề nảy sinh là khi phạm vi ứng dụng của các ứng dụng Web ngày càng mở rộng thì khả năng xuất hiện lỗi (lỗ hổng) và bị tấn công càng cao, trở thành đối tượng cho nhiều người tấn công với các mục đích khác nhau. Đôi khi, cũng chỉ đơn giản là để thử tài hoặc đùa bỡn với người khác. Cùng với sự phát triển không ngừng của Internet và các dịch vụ trên đó, số lượng các vụ tấn công trên Internet cũng tăng theo cấp số nhân. Trong khi các phương tiện thông tin đại chúng ngày càng nhắc nhiều đến những khả năng truy nhập thông tin của Internet, thì các tài liệu chuyên môn bắt đầu đề cập nhiều đến vấn đề bảo đảm an toàn dữ liệu cho các máy tính được kết nối vào mạng Internet. Theo số liệu của CERT (Computer Emegency Response Team - "Đội cấp cứu máy tính"): “số lượng các vụ tấn công trên Internet được thông báo cho tổ chức này là ít hơn 200 vào năm 1989, khoảng 400 vào năm 1991, 1400 vào năm 1993, và 2241 vào năm 1994, và năm 2001 là 5315 vụ.” Nguyên nhân chủ yếu làm cho các vụ tấn công tăng nhanh là do có rất nhiều “lỗ hổng” được tìm thấy trên các ứng dụng web. Theo thống kê của Symantec “năm 2004 có 49% số lượng lỗ hổng được tìm thấy trong các ứng dụng web. Từ tháng 7 đến tháng 11 năm 2006, xác định lỗ hổng bảo mật nằm trong ứng dụng web chiếm tới 75%, tăng 15% so với đầu năm” Những vụ tấn công này nhằm vào tất cả các máy tính có mặt trên Internet, máy tính của các công ty lớn như AT&T, IBM, các trường đại học, các cơ quan nhà nước, các tổ chức quân sự, nhà băng... Một số vụ tấn công có quy mô khổng lồ (có tới 100.000 máy tính bị tấn công). Hơn nữa, những con số này chỉ là phần nổi của tảng băng. Một phần rất lớn các vụ tấn công không được thông báo, vì nhiều lý do như: nỗi lo bị mất uy tín, hoặc đơn giản những người quản trị hệ thống không hay biết những cuộc tấn công đang nhằm vào hệ thống của họ. (Một ví dụ điển hình là cuộc tấn công vào phần mềm thương mại của IBM tháng 3/2001, hai hacker đã tìm thấy lỗ hổng trên ứng dụng mà bất cứ ai với một trình duyệt Web cũng có thể lấy tài khoản của người dùng, thậm chí cả người quản trị). Không chỉ số lượng các cuộc tấn công tăng lên nhanh chóng, mà các phương pháp tấn công ngày càng tinh vi và có tổ chức. Mặt khác, việc quản trị các hệ thống mạng đòi hỏi nhà quản trị hệ thống có kiến thức và kinh nghiệm về hệ thống mạng chắc chắn, do đó sự yếu kém trong quản lý sẽ tạo nhiều điều kiện cho các hacker khai thác. Cũng theo CERT, những cuộc tấn công thời kỳ 1988-1989 chủ yếu là đoán “tên người sử dụng/mật khẩu” (UserID/password) hoặc sử dụng lỗi của các chương trình và hệ điều hành (security hole) làm vô hiệu hệ thống bảo vệ, tuy nhiên các cuộc tấn công vào thời gian gần đây còn bao gồm cả các thao tác như giả mạo địa chỉ IP, theo dõi thông tin truyền qua mạng, chiếm các phiên làm việc từ xa (telnet hoặc rlogin), cài trojan hay worm để kiểm soát hay điều khiển máy tính…vì thế, nhu cầu bảo vệ thông tin trên Internet là cần thiết nhằm mục đích bảo vệ dữ liệu, bảo vệ thông tin người dùng và bảo vệ hệ thống. Khi nói đến vấn đề bảo mật, hầu hết các chuyên gia bảo mật đều chú trọng đến sự an toàn của hệ thống mạng và hệ điều hành. Để bảo vệ hệ thống, phương pháp thường được chọn là sử dụng firewall. Tuy nhiên, theo tuyên bố của CSI/FBI : 78% nơi bị hại có sử dụng firewall và 59% thì bị tấn công thông qua Internet, cụ thể hơn là theo báo cáo của CSI/FBI Computer Crime và Security Survey thì tổng số thiệt hại do những ứng dụng Web bị tấn công từ năm 1997 đến năm 2006 là hơn 800 triệu đôla Mỹ. Với những công cụ tự động tìm lỗ hổng tuy giúp rất nhiều cho những nhà lập trình Web nhưng vẫn không thể ngăn chặn toàn bộ vì công nghệ Web đang phát triển nhanh chóng (chủ yếu chú trọng đến yếu tố thẩm mĩ, yếu tố tốc độ…) nên dẫn đến nhiều khuyết điểm mới phát sinh. Sự tấn công không nằm trong khuôn khổ vài kĩ thuật đã phát hiện, mà linh động và tăng lên tùy vào những sai sót của nhà quản trị hệ thống cũng như của những người lập trình ứng dụng. Chương 1: KHÁI NIỆM CƠ SỞ 1.1. KHÁI NIỆM VỀ BẢO VỆ WEB Bảo vệ web không còn là khái niệm xa lạ đối với những người lập trình web, những nhà quản trị mạng,… Mục tiêu bảo vệ web gồm có: Bảo mật: Thông tin không được đọc trái phép. Bảo toàn: Thông tin không bị sửa đổi một cách trái phép. Bảo đảm tính sẵn sàng: Người dùng hợp pháp có quyền truy cập hay sử dụng thông tin. Hai đối tượng chính trong sử dụng dịch vụ web là người dùng và người quản trị hệ thống. Phía người dùng dịch vụ web, an toàn trên mạng trước hết là yêu cầu đặt ra với server. Thứ nhất, những yêu cầu gửi đến server phải được thưc thi và phản hồi trong thời gian nhất định (tính sẵn sàng). Thứ hai, thông tin gửi tới phải được đảm bảo không bị virut hay bị sửa đổi bởi tác nhân khác (tính toàn vẹn). Thứ ba, server không phổ biến thông tin cá nhân trên mạng (tính bí mật). Phía nhà quản trị hệ thống, họ có những yêu cầu cũng khá giống với người dùng nhưng nhìn dưới một góc độ khác. Thứ nhất, họ phải đảm bảo rằng người dùng không thể xâm nhập vào server để thay đổi nội dung của website (tính toàn vẹn). Thứ hai, người dùng không thể truy cập vào các thông tin không thuộc quyền của họ (tính bí mật và bắt buộc). Thứ ba, người dùng không thể tấn công server làm nó không thể phục vụ người dùng khác (tính sẵn sàng). Thứ tư, người dùng đã được nhận dạng phải chịu trách nhiệm và không thể chối bỏ hành động của mình (tính xác thực). Đối tượng tấn công mạng (Intruder): là cá nhân hoặc tổ chức sử dụng các công cụ phá hoại như phần mềm hoặc phần cứng để dò tìm các điểm yếu, lỗ hổng bảo mật trên hệ thống, thực hiện các hoạt động xâm nhập và chiếm đoạt tài nguyên mạng trái phép. Một số đối tượng tấn công mạng: Tin tặc (Hacker): là kẻ xâm nhập mạng trái phép bằng cách sử dụng các công cụ phá mật khẩu hoặc khai thác điểm yếu của các thành phần truy nhập trên hệ thống. Kẻ giả mạo (Masquerader): là kẻ giả mạo thông tin trên mạng. Một số hình thức giả mạo như giả mạo địa chỉ IP, tên miền, định danh người dùng… Kẻ nghe trộm (Evesdropping): là đối tượng nghe trộm thông tin trên mạng sử dụng các công cụ sniffer, sau đó dùng các công cụ phân tích và debug để lấy được các thông tin có giá trị. Mục đích: ăn cắp thông tin có giá trị về kinh tế, phá hoại hệ thống mạng có chủ định hoặc cũng vó thể chỉ là những hành động vô ý thức nhằm thử nghiệm các chương trình không kiểm tra cẩn thận,… Lỗ hổng bảo mật: là những yếu kém trên hệ thống hoặc ẩn chứa trong một dịch vụ nào đó, mà dựa vào đó kẻ tấn công có thể xâm nhập trái phép để thực hiện các hành động phá hoại hoặc chiếm đoạt tài nguyên bất hợp pháp. Nguyên nhân gây ra các lỗ hổng bảo mật là khác nhau: do lỗi bản thân hệ thống, do phần mềm cung cấp, hoặc do người quản trị yếu kém không hiểu sâu sắc các dịch vụ cung cấp,… Mức độ ảnh hưởng của các lỗ hổng là khác nhau: có lỗ hổng chỉ ảnh hưởng tới chất lượng dịch vụ, có lỗ hổng ảnh hưởng sâu sắc tới toàn bộ hệ thống,…. Một số hình thức tấn công mạng Dựa vào lỗ hổng bảo mật trên mạng: lỗ hổng này thường là những điểm yếu của dịch vụ mà hệ thống cung cấp. Sử dụng các công cụ để phá hoại: ví dụ các chương trình phá khóa mật khẩu để truy cập bất hợp pháp vào chương trình. Kẻ tấn công có thể kết hợp cả hai hình thức trên để đạt được mục đích. Tùy thuộc vào cách tấn công mà mức nguy hại tới hệ thống là khác nhau. Các mức tấn công hệ thống: Mức 1: Tấn công vào một số dịch vụ mạng: web, email,… dẫn đến Nguy cơ lộ thông tin về cấu hình mạng. Mức 2: Kẻ phá hoại dùng tài khoản của người dùng hợp pháp để chiếm đoạt tài nguyên hệ thống. Kẻ phá hoại có thể thay đổi quyền truy nhập qua các lỗ hổng bảo mật hoặc đọc các thông tin trong tập tin liên quan đến truy nhập hệ thống như: /etc/passwd (Linux) và SAM file (windows). Mức 3,4,5: Kẻ phá hoại không sử dụng quyền của người dung thông thường, mà có thêm một quyền cao hơn với hệ thống như quyền kích hoạt một số dịch vụ, xem các thông tin khác trên hệ thống. Mức 6: Kẻ tấn công chiếm được quyền root hoặc admin trên hệ thống. Các mức bảo vệ an toàn mạng Vì không có biện pháp an toàn tuyệt đối, nên phải dùng nhiều mức bảo vệ khác nhau, tạo thành rào chắn đối với các hoạt động xâm phạm. Việc bảo vệ thông tin trên mạng chủ yếu là bảo vệ thông tin cất giữ trong các máy tính, đặc biệt là trong các server mạng. Các lớp rào chắn bảo vệ thông tin các trạm của mạng: Lớp thứ nhất: qui định quyền truy nhập các thông tin của mạng và quyền hạn trên tài nguyên đó, cụ thể là các tệp tin. Lớp thứ hai: hạn chế theo tài khoản truy nhập gồm đăng ký tên và mật khẩu tương ứng. Đây là phương pháp bảo vệ phổ biến nhất vì nó đơn giản, ít tốn kém và cũng có hiệu quả. Mỗi người sử dụng muốn truy cập vào mạng phải có đăng ký tên và mật khẩu. Người quản trị hệ thống có trách nhiệm quản lý, kiểm soát mọi hoạt động mạng và xác định quyền truy cập của người dùng khác tùy theo thời gian và không gian. Lớp thứ ba: sử dụng các phương pháp mã hóa. Dữ liệu được biến đổi từ dạng đọc được sang dạng “khó” đọc, theo một thuật toán nào đó. Lớp thứ tư: lớp bảo vệ vật lý nhằm ngăn cản các truy nhập vật lý bất hợp pháp vào hệ thống. Thường dùng các biện pháp truyền thống như ngăn chặn người không có nhiệm vụ vào phòng máy, dùng các hệ thống khóa trên máy tính, cài các hệ thống báo động khi có truy nhập trái phép. Lớp thứ năm: cài đặt các hệ thống tường lửa, nhằm ngăn chặn các truy nhập trái phép và cho phép lọc các gói tin không muốn gửi đi, hoặc nhận vào vì lý do nào đó. Nguyên nhân của các vụ tấn công: Có rất nhiều nguyên nhân dẫn đến tình trạng bảo mật kém của ứng dụng web. Tuy nhiên ta có thể tổng kết một số nguyên nhân chính: + Các ứng dụng web được viết dựa trên cơ chế bảo mật client_server chuẩn đơn giản. Khi xây dựng giao thức HTTP, người ta chưa tính đến vấn đề bảo mật cho giao thức này. Do vậy việc xuất hiện nhiều lỗ hổng bảo mật là điều dễ hiểu. + Sự phức tạp của các ứng dụng web làm cho việc viết các đoạn mã bảo mật rất khó khăn. Các ngôn ngữ lập trình mới ra đời, các chuẩn về định dạng dữ liệu,… làm cho các ứng dụng web thêm phức tạp. + Những người phát triển web tập trung nhiều vào chức năng và tốc độ chứ không phải bảo mật. Các bước xây dựng một ứng dụng web là phân tích- thiết kế- lập trình- kiểm thử. Ở các bước này, vấn đề bảo mật thông thường chỉ được quan tâm ở giai đoạn cuối. Ở giai đoạn này nếu phát hiện ra các lỗ hổng về bảo mật thì cũng chỉ vá lỗi chứ không giải quyết triệt để các lỗi đó. + Lỗi nằm trong các dịch vụ nền tảng web như: hệ điều hành, trình duyệt web, các công cụ lập trình web. Theo thống kê của IBM’s waston Research Lab, cứ 1500 dòng mã lệnh có một lỗ hổng được tìm thấy. Hệ điều hành winXP có tới 45 000 000 dòng lệnh (có 30 000 lỗ hổng), còn win2000 có 35 000 000 dòng mã (khoảng 23 000 lỗ hổng) + Nội dung trang web thường xuyên thay đổi. + Nhà quản trị mạng còn yếu kém về năng lực và sử dụng dịch vụ. 1.2. KHÁI NIỆM ỨNG DỤNG WEB 1.2.1.Khái niệm Khi trang web tồn tại trên Internet, nó được lưu trữ tại nơi nào đó để người dùng truy xuất tới, đó chính là webserver. Webserver có nhiệm vụ lưu trữ các trang web để webclient truy xuất tới. Ứng dụng Web là một ứng dụng chủ/khách (client/server) sử dụng giao thức HTTP (1.2.2) để 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 dùng thường là một trình duyệt Web như Internet Explorer hay Netscape Navigator. 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 CSDL đơ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: Hình 1: Kiến trúc của ứng dụng Web 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. 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, 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ị CSDL (DBMS-database management system) chịu trách nhiệm quản lý các file dữ liệu và quyền sử dụng. 1.2.2. Hoạt động Hình 2: Mô hình hoạt động của một ứng dụng Web Mô hình hoạt động của một ứng dụng web thường có: Trình khách (trình duyệt (client)): Internet Explorer, Netscap Navigator. Trình chủ (Server): Apache, IIS, …. Hệ quản trị CSDL : SQL Server, MySQL, Access…. Mô tả hoạt động: Đầ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 CSDL, lưu các thông tin do trình khách gửi đến…và từ đó trả về cho trình khách một luồng dữ liệu có định dạng theo “giao thức HTTP” ( là cách thức trình khách/ trình chủ giao tiếp với nhau, và qui định cấu trúc dữ liệu trao đổi trên đường truyề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 hình 2, 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 tin tặc tìm thấy vài lỗ hổng trong ứng dụng Web thì tường lửa không còn hữu dụng trong việc ngăn chặn kẻ tấn công đó. 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, tin tặc 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ác. 1.3. MỘT SỐ CÔNG CỤ BẢO VỆ WEB Tường lửa (firewall) Tường lửa là một công cụ được tích hợp vào hệ thống mạng để chống lại sự truy cập trái phép nhằm bảo vệ các nguồn thông tin nội bộ cũng như hạn chế sự xâm nhập vào hệ thống của một số thông tin khác không mong muốn. Internet FireWall là một tập hợp thiết bị (bao gồm phần cứng và phần mềm) giữa mạng của một tổ chức, một công ty, hay một quốc gia (Intranet) và Internet. Hình 3: Truy cập thông qua tường lửa Chức năng: Tường lửa quyết định những dịch vụ nào từ bên trong được phép truy cập từ bên ngoài, những người nào từ bên ngoài được phép truy cập đến các dịch vụ bên trong, và cả những dịch vụ nào bên ngoài được phép truy cập bởi những người bên trong. FireWall bao gồm : Một hoặc nhiều hệ thống máy chủ kết nối với các bộ định tuyến (router) hoặc có chức năng router. Các phần mềm quản lí an ninh chạy trên hệ thống máy chủ. Thông thường là các hệ quản trị xác thực (Authentication), cấp quyền (Authorization) và kế toán (Accounting). Nhiệm vụ cơ bản của FireWall là bảo vệ: + Dữ liệu: Những thông tin cần được bảo vệ do những yêu cầu: Bảo mât, tính toàn vẹn, tính kịp thời. + Tài nguyên hệ thống. + Danh tiếng của công ty sở hữu các thông tin cần bảo vệ. + Chống lại những tấn công từ bên ngoài. - Cách thứ nhất là dùng phương pháp dò mật khẩu trực tiếp: đoán mật khẩu thủ công hoặc dùng các công cụ phá mật khẩu. - Cách thứ hai là dùng lỗi của các chương trình ứng dụng và bản thân hệ điều hành đã được sử dụng từ những vụ tấn công đầu tiên và vẫn chiếm quyền truy cập (có được quyền của người quản trị hệ thống). + Nghe lén thông tin. + Giả mạo địa chỉ IP. Hạn chế: Không đủ thông minh để có thể đọc hiểu từng loại thông tin và phân tích nội dung tốt hay xấu của nó. Tường lửa chỉ có thể ngăn chặn sự xâm nhập của t