Tài liệu Nghiên cứu một số hình thức tấn công website phổ biến và các giải pháp phòng chống

  • Số trang: 59 |
  • Loại file: DOC |
  • Lượt xem: 113 |
  • Lượt tải: 1
nhattuvisu

Đã đăng 27125 tài liệu

Mô tả:

LỜI CÁM ƠN Để hoàn thành đồ án chuyên đề này, lời đầu tiên em xin chân thành cảm ơn các thầy giáo, cô giáo Khoa Khoa học máy tính, Trường cao đẳng công nghệ thông tin hữu nghị Việt Hàn, những người đã dạy dỗ, trang bị cho em những kiến thức bổ ích trong những năm học vừa qua. Em xin bày tỏ lòng biết ơn sâu sắc nhất tới thầy giáo Nguyễn Vũ, người đã tận tình hướng dẫn, chỉ bảo em trong suốt thời gian làm đồ án này. Nhân dịp này em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè, những người thân đã cổ vũ, động viên tiếp thêm cho em nghị lực để em hoàn thành đồ án chuyên đề này. Em xin chân thành cảm ơn ! Đà Nẵng, ngày 13 tháng 03 năm 2012 Sinh viên Nguyễn Mậu San Trang i LỜI MỞ ĐẦU Thế giới ngày nay đã có nhiều tiến bộ mạnh mẽ về công nghệ thông tin (CNTT) từ một tiềm năng thông tin đã trở thành một tài nguyên thực sự, trở thành sản phẩm hàng hoá trong xã hội tạo ra một sự thay đổi to lớn trong lực lượng sản xuất, cơ sở hạ tầng, cấu trúc kinh tế, tính chất lao động và cả cách thức quản lý trong các lĩnh vực của xã hội. Trong những năm gần đây, Việt Nam ngày càng phát triển và nhất là về mặt công nghệ thông tin. Đặc biệt là về ứng dụng Website, hầu như mọi người ai cũng từng nghe và làm việc trên ứng dụng Website. Website trở nên phổ biến và trở thành một phần quan trọng của mọi người và nhất là các doanh nghiệp, công ty. Bên cạnh đó lý do an toàn bảo mật cho ứng dụng Website luôn là vấn đề nan giải của mọi người. Với các lý do trên, em mạnh dạn đề xuất đề tài “Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống” để làm đồ án chuyên đề cho mình. Em thấy đây là đề tài mang tính thực tế cao, giúp cho các nhà quản trị Website có thể làm tốt hơn công việc của mình, cũng như đảm bảo an toàn thông tin cho doanh nghiệp, công ty. Đồng thời cũng giúp ích rất nhiều cho em trong các công việc sau này. Nội dung đồ án gồm ba phần chính: Chương 1: Tổng quan về bảo mật và ứng dụng Website. Chương 2: Nghiên cứu các hình thức tấn công và giải pháp bảo mật Website. Chương 3: Triển khai demo các hình thức tấn công và các giải pháp bảo mật. Cuối cùng, em xin chân thành cảm ơn thầy Nguyễn Vũ đã tạo mọi điều kiện, giúp đỡ em có đủ khả năng để hoàn thành đồ án này. Trang ii MỤC LỤC LỜI CÁM ƠN...............................................................................................................i LỜI MỞ ĐẦU..............................................................................................................ii DANH MỤC HÌNH ẢNH............................................................................................v DANH MỤC TỪ VIẾT TẮT.....................................................................................vi CHƯƠNG I: TỔNG QUAN VỀ BẢO MẬT ỨNG DỤNG WEBSITE....................1 1.1. Tổng quan về ứng dụng Website.........................................................................1 1.1.1. Khái niệm ứng dụng Website.......................................................................1 1.1.2. Cách thức hoạt động.....................................................................................2 1.1.3. Các dịch vụ và ứng dụng trên nền Website...................................................3 1.2. Tổng quan về an ninh mạng................................................................................4 1.2.1 Khái niệm về an toàn và an ninh mạng..........................................................4 1.2.2 Sự cần thiết phải bảo vệ thông tin..................................................................5 1.3. Các thuật ngữ liên quan.......................................................................................5 1.3.1. Hacker..........................................................................................................5 1.3.2. Http Header..................................................................................................5 1.3.3. Session..........................................................................................................7 1.3.4. Cookie..........................................................................................................7 1.3.5. Proxy............................................................................................................9 CHƯƠNG II: NGHIÊN CỨU CÁC HÌNH THỨC TẤN CÔNG VÀ GIẢI PHÁP BẢO MẬT WEBSITE...............................................................................................10 2.1 SQL Injection.....................................................................................................10 2.1.1. Tìm hiểu về SQL Injection.........................................................................10 2.1.2 Cách Phòng Tránh SQL Injection................................................................20 2.2 Local Attack.......................................................................................................24 2.2.1. Tìm hiểu về Local Attack...........................................................................24 2.2.2. Tấn công bằng Local Attack.......................................................................24 2.2.3. Phương pháp phòng chống Local Attack....................................................28 2.3. Cross Site Scripting (XSS)................................................................................34 2.3.1. Tìm hiểu về XSS.........................................................................................34 2.3.2. Tấn công bằng XSS....................................................................................34 2.3.3 Phương pháp phòng chống XSS..................................................................39 2.4. Tấn công từ chối dịch vụ...................................................................................40 2.4.1. Tìm hiểu về DOS........................................................................................40 2.4.2. Các kĩ thuật tấn công bằng DOS.................................................................41 2.4.3. Phương pháp phòng chống DOS, DDOS....................................................45 CHƯƠNG III: TRIỂN KHAI CÁC PHƯƠNG PHÁP TẤN CÔNG VÀ GIẢI PHÁP BẢO MẬT WEBSITE...................................................................................47 3.1. SQL Injection....................................................................................................47 3.2. Local attack.......................................................................................................52 KẾT LUẬN................................................................................................................54 TÀI LIỆU THAM KHẢO.........................................................................................57 Trang iii DANH MỤC HÌNH ẢNH Hình 1.1 Kiến trúc một ứng dụng Website..................................................................4 Hình 1.2 Mô hình hoạt động của ứng dụng Website....................................................5 Hình 2.1 Một công cụ tìm Lổi SQL Injection............................................................15 Hình 2.2 Một site bị lổi SQL Injection.......................................................................16 Hình 2.3 Quyền Chmod.............................................................................................33 Hình 2.4 Cách viết Action Script trong Flash............................................................43 Hình 2.5 Cơ chế thiết lập kết nối trước khi truyền số liệu..........................................46 Hình 2.6 Tấn công DoS truyền thống........................................................................47 Hình 2.7 Kiểu tấn công DoS vào băng thông.............................................................48 Hình 2.9 Tấn công kiểu DRDoS................................................................................50 Hình 3.1 Công cụ Sql Poizon v1.1.............................................................................52 Hình 3.2 Công cụ XCodeXploitScanner....................................................................52 Hình 3.3 Kiểm tra lỗi Sql Injection............................................................................53 Hình 3.4 Đếm số cột trong database..........................................................................53 Hình 3.5 Tìm cột bị lỗi...............................................................................................54 Hình 3.6 Thông tin version php.................................................................................54 Hình 3.7 Tên database...............................................................................................55 Hình 3.8 Hiển thị tất cả các table trong database.......................................................55 Hình 3.9 Hiển thị các column trong table users.........................................................57 Hình 3.10 Lấy thông tin của trường Username và Password.....................................57 Hình 3.11 Thông tin Server.......................................................................................58 Hình 3.12 Thực thi lệnh trên Server...........................................................................58 Hình 3.12 Thao tác với database................................................................................58 Hình 3.13 Lấy database.............................................................................................59 Hình 3.14 Xem tất cả user trên server (với server windown).....................................59 Hình 3.15 Sửa tập tin cấu hình của một trang web trên server...................................59 Trang iv DANH MỤC TỪ VIẾT TẮT IIS Internet Information Services PHP Hypertext Preprocessor HTTP HyperText Transfer Protocol ASP Active Server Pages XSS Cross Site Scripting DOS Denial Of Service SQL Structured Query Language CGI Common Gateway Interface Trang v Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống CHƯƠNG I: TỔNG QUAN VỀ BẢO MẬT ỨNG DỤNG WEBSITE 1.1. Tổng quan về ứng dụng Website. 1.1.1. Khái niệm ứng dụng Website Ứng dụng Website 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. Website là một “trang web” trên mạng Internet, đây là nơi giới thiệu những thông tin, hình ảnh về doanh nghiệp và sản phẩm, dịch vụ của doanh nghiệp (hay giới thiệu bất cứ thông tin gì) để khách hàng có thể truy cập ở bất kỳ nơi đâu, bất cứ lúc nào. Website là tập hợp nhiều trang. Khi doanh nghiệp xây dựng website nghĩa là đang xây dựng nhiều trang thông tin, catalog sản phẩm, dịch vụ....Để tạo nên một website cần phải có 3 yếu tố cơ bản: - Cần phải có tên miền (domain). - Nơi lưu trữ Website (hosting). - Nội dung các trang thông tin. Một ứng dụng web thường có kiến trúc gồm: Hình 1.1: Kiến trúc một ứng dụng Website SVTH: Nguyễn Mậu San Trang 1 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống 1.1.2. Cách thức hoạt động Mô hình hoạt động của ứng dụng Website: Hình 1.2: Mô hình hoạt động của ứng dụng Website. Trong đó: - Trình khách ( hay còn gọi là trình duyệt): Internet Explorer, FireFox, Chrome - Trình chủ: Apache, IIS, …. - Hệ quản trị cơ sở dữ liệu: SQL Server, MySQL, DB2, Access….1.2. 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. 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. SVTH: Nguyễn Mậu San Trang 2 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Website 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 1.1, 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 Website 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 Website 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. 1.1.3. Các dịch vụ và ứng dụng trên nền Website Với công nghệ hiện nay, Website không chỉ đơn giản là một trang tin cung cấp các tin bài đơn giản. Những ứng dụng viết trên nền Website không chỉ được gọi là một phần của Website nữa, giờ đây chúng được gọi là phần mềm viết trên nền Website. Có rất nhiều phần mềm chạy trên nền Website như Google word (xử lý văn bản), Google spreadsheets (xử lý bảng tính), Email ,… Một số ưu điểm của phần mềm hay ứng dụng chạy trên nền web:  Mọi người đều có trình duyệt và bạn chỉ cần trình duyệt để chạy phần mềm.  Phần mềm luôn luôn được cập nhật vì chúng chạy trên server.  Luôn sẵn sàng 24/7. SVTH: Nguyễn Mậu San Trang 3 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống  Dễ dàng backup dữ liệu thường xuyên.  Có thể truy cập mọi lúc, mọi nơi, chỉ cần có Internet  Chi phí triển khai rẻ hơn nhiều so với phần mềm chạy trên desktop. 1.2. Tổng quan về an ninh mạng. 1.2.1 Khái niệm về an toàn và an ninh mạng Trong quá khứ, an ninh thông tin là một thuật ngữ được sử dụng để mô tả các biện pháp bảo mật vật lý được sử dụng để giữ cho chính phủ hay doanh nghiệp những thông tin quan trọng khỏi bị truy cập bởi công chúng và để bảo vệ nó chống lại thay đổi hoặc tiêu hủy. Những biện pháp này bao gồm lưu trữ tài liệu có giá trị trong tủ hồ sơ đã bị khóa hoặc két và hạn chế truy cập vật lý đến các khu vực nơi mà các tài liệu đã được lưu giữ. Với sự phổ biến của máy tính và các phương tiện truyền thông điện tử, cách truy cập dữ liệu cũ thay đổi. Khi công nghệ tiếp tục phát triển, hệ thống máy tính được kết nối với nhau để tạo thành mạng máy tính, cho phép các hệ thống chia sẻ tài nguyên, bao gồm cả dữ liệu. Các mạng máy tính cuối cùng, mà hầu hết các liên kết nối mạng máy tính truy cập công cộng, là Internet. Mặc dù các phương pháp bảo vệ dữ liệu đã thay đổi đáng kể, khái niệm về an ninh mạng vẫn giống như là các thông tin bảo mật. Bởi vì máy tính có thể thu hồi, và số tiền quá lớn của dữ liệu, chúng được sử dụng trong gần như mọi khía cạnh của cuộc sống. Máy vi tính, mạng, và Internet là một phần không thể thiếu của nhiều doanh nghiệp. Sự phụ thuộc của chúng trên các máy tính tiếp tục tăng khi các doanh nghiệp và cá nhân trở nên thoải mái hơn với công nghệ và tiến bộ công nghệ như là làm cho hệ thống thân thiện với người dùng hơn và dễ dàng hơn để kết nối. Một hệ thống máy tính duy nhất yêu cầu các công cụ tự động để bảo vệ dữ liệu trên hệ thống từ những người dùng có quyền truy cập hệ thống. Một hệ thống máy tính trên mạng (một hệ thống phân phối) đòi hỏi rằng dữ liệu vào hệ thống đó được bảo vệ không chỉ từ truy cập địa phương mà còn từ các truy cập từ xa trái phép và từ chặn hoặc thay đổi dữ liệu trong quá trình truyền giữa các hệ thống. An ninh mạng không phải là một sản phẩm, quy trình, hay chính sách mà là sự kết hợp của các sản phẩm và quy trình có hỗ trợ một chính sách quy định. Mạng lưới an ninh được thực hiện của SVTH: Nguyễn Mậu San Trang 4 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống các thiết bị an ninh, chính sách và quy trình để ngăn chặn truy cập trái phép vào tài nguyên mạng, thay đổi hoặc hủy hoại tài nguyên hoặc dữ liệu. 1.2.2 Sự cần thiết phải bảo vệ thông tin Trong một doanh nghiệp hay một tổ chức nào đó, thì phải có các yếu tố cần được bảo vệ như: - Dữ liệu. - Tài nguyên: con người, hệ thống và đường truyền. - Danh tiếng của công ty. Nếu không đặt vấn đề an toàn thông tin lên hàng đầu thì khi gặp phải sự cố thì tác hại đến doanh nghiệp không nhỏ: - Tốn kém chi phí. - Tốn kém thời gian. - Ảnh hưởng đến tài nguyên hệ thống. - Ảnh hưởng đến danh dự, uy tín của doanh nghiệp. - Mất cơ hội kinh doanh. 1.3. Các thuật ngữ liên quan. 1.3.1. Hacker Hacker là một thuật ngữ dùng để chuyên chỉ những kẻ phá hoại các hệ thống mạng. Hacker thường là những chuyên gia về máy tính. Hacker không tạo ra các kẽ hở cho hệ thống, nhưng Hacker lại là những người am hiểu về hệ điều hành, hệ quản trị dữ liệu, các ngôn ngữ lập trình…Họ sử dụng kiến thức của mình trong việc tìm tòi và khai thác các lỗ hổng của hệ thống mạng. Một số Hacker chỉ dừng lại việc phát hiện và thông báo lỗi tìm được cho những nhà bảo mật hay người phát triển chương trình, họ được xem như là WhiteHat (Hacker nón trắng). Một số hacker dựa vào những lỗ hổng thực hiện việc khai thác trái phép nhằm mục đích phá hoại hay mưu lợi riêng, những người này bị xem như là BlackHat (Hacker mũ đen). Vì tính chất phổ biến của thuật ngữ hacker, nên trong phần trình bày, luận văn sẽ sử dụng “hacker” thay cho “kẻ tấn công”. 1.3.2. 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 SVTH: Nguyễn Mậu San Trang 5 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống (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ỉ được dùng riêng trong từng loại. Ví dụ : • Header yêu cầu: GET /tintuc/homnay.asp HTTP/1.1 Accept: */* Accept-Language: en-us Connection: Keep-Alive Host: localhost Referer: http://localhost/lienket.asp User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) Accept-Encoding: gzip, deflate o Dòng đầu là dòng yêu cầu cho biết phương thức yêu cầu (GET hoặc POST), địa chỉ yêu cầu (/tintuc/homnay.asp) và phiên bản HTTP (HTTP/1.1).. o Tiếp theo là các tham số.Chẳng hạn như: ƒ + Accept-Language: Cho biết ngôn ngữ dùng trong trang web. ƒ + Host: Cho biết địa chỉ của máy chủ. ƒ + Referer: Cho biết địa chỉ của trang web tham chiếu tới. o Header của HTTP request sẽ kết thúc bằng một dòng trống. • Header trả lời: HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Thu, 13 Jul 2000 05:46:53 GMT Content-Length: 2291 Content-Type: text/html Set-Cookie: ASPSESSIONIDQQGGGNCG=LKLDFFKCINFLDMFHCBCBMFLJ; path=/ Cache-control: private o Dòng đầu là dòng trạng thái, để cho biết phiên bản HTTP được dung (HTTP/1.1), mã trạng thái (200) và trạng thái (OK). o Tiếp theo là các tham số. SVTH: Nguyễn Mậu San Trang 6 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống o Tiếp theo là một dòng trống để báo hiệu kết thúc header, tiếp theo là phần thân của HTTP response. 1.3.3. 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 Website, 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 Website đư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 dung khi họ xem trang Website 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. 1.3.4. 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 ứ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...cookie được trình duyệt của người dùng chấp nhận lưu trên đĩa cứng của máy mình, tuy nhiên không phải lúc nào trình duyệt cũng hỗ trợ cookie, mà còn tùy thuộc vào người dùng có chấp nhận chuyện lưu trữ đó hay không. Ở những lần truy cập sau đến trang Website đó, ứng dụng có thể dùng lại những thong tin trong cookie (như thông tin liên quan đến việc đăng nhập vào Yahoo SVTH: Nguyễn Mậu San Trang 7 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống Messenger!...) mà người dùng không phải làm lại thao tác đăng nhập hay phải cũng cấp lại các thông tin khác. Cookie được phân làm 2 loại secure/non-secure và persistent/non-persistent do đó ta sẽ có 4 kiểu cookie là: - Persistent và Secure - Persistent và Non-Secure - Non-Persistent và Secure - Non-Persistent và Non-Secure Persistent cookies được lưu trữ dưới dạng tập tin .txt (ví dụ trình duyệt Netscape Navigator sẽ lưu các cookie thành một tập tin cookie.txt còn Internet Explorer sẽ lưu thành nhiều tập tin *.txt trong đó mỗi tập tin là một cookie) trên máy khách trong một khoảng thời gian xác định. - Non-persistent cookie thì được lưu trữ trên bộ nhớ RAM của máy khách và sẽ bị hủy khi đóng trang web hay nhận được lệnh hủy từ trang web. - Secure cookies chỉ có thể được gửi thông qua HTTPS (SSL). - Non-Secure cookie có thể được gửi bằng cả hai giao thức HTTPS hay HTTP. Thực chất là đối với secure cookie thì trình chủ sẽ cung cấp chế độ truyền bảo mật. Domain Flag www.redhat.co Path FALSE Secur Expirat e / ion FALSE m Name Value 115402949 Apache 64.3.40.151.1 0 6 01899634924 7 480 o Domain: Tên miền của trang web đã tạo cookie ( trong ví dụ trên là www.redhat.com) o Flag: mang giá trị TRUE/FALSE -Xác định các máy khác với cùng tên miền có được truy xuất đến cookie hay không. o Path: Phạm vi các địa chỉ có thể truy xuất cookie.Ví dụ: SVTH: Nguyễn Mậu San Trang 8 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống Nếu path là “/tracuu” thì các địa chỉ trong thư mục /tracuu cũng như tất cả các thư mục con của nó như /tracuu/baomat có thể truy xuất đến cookie này. Còn nếu giá trị là “/” thì cookie sẽ được truy xuất bởi tất cả địa chỉ thuộc miền trang web tạo cookie. o Sercure: mang giá trị TRUE/FALSE - Xác định đây là một secure cookie hay không nghĩa là kết nối có sử dụng SSL hay không. o Expiration: thời gian hết hạn của cookie, được tính bằng giây kể từ 00:00:00 giờ GMT ngày 01/01/1970. Nếu giá trị này không được thiết lập thì trình duyệt sẽ hiểu đây là non-persistent cookie và chỉ lưu trong bộ nhớ RAM và sẽ xoá nó khi trình duyệt bị đóng. o Name: Tên biến (trong trường hợp này là Apache) o Value: Với cookie được tạo ở trên thì giá trị của Apache là 64.3.40.151.16018996349247480 và ngày hết hạn là 27/07/2006, của tên miền http://www.redhat.com. Ví dụ chuỗi lệnh trong HTTP header dưới đây sẽ tạo một cookie: Set-Cookie:Apache="64.3.40.151.16018996349247480"; path="/"; domain="www.redhat.com"; path_spec; expires="2006-07-27 19:39:15Z"; version=0 ™ Các cookie của Netscape (NS) đặt trong một tập tin Cookies.txt, với đường dẫn là: C:\Program Files\Netscape\Users\UserName\Cookies.txt ™ Các cookies của IE được lưu thành nhiều tập tin, mỗi tập tin là một cookie và được đặt trong [C:]\Documents and Setting\[username]\Cookies (Win2000), đối với win9x, thư mục cookies nằm trong thư mục [C:]\Windows\cookies. Kích thước tối đa của cookie là 4kb. Số cookie tối đa cho một tên miền là 20 cookie. Cookie bị hủy ngay khi đóng trình duyệt gọi là “session cookie”. 1.3.5. Proxy Proxy cung cấp cho người sử dụng truy xuất Internet những nghi thức đặc biệt hoặc một tập những nghi thức 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. SVTH: Nguyễn Mậu San Trang 9 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật thay cho client và tiếp tục chuyển tiếp những yêu cầu từ client đến server, cũng như trả lời của server đến client. Vì vậy proxy server giống cầu nối trung gian giữa server và client. CHƯƠNG II: NGHIÊN CỨU CÁC HÌNH THỨC TẤN CÔNG VÀ GIẢI PHÁP BẢO MẬT WEBSITE. 2.1 SQL Injection 2.1.1. Tìm hiểu về SQL Injection. 2.1.1.1. SQL Injection là gì? Khi triển khai các ứng dụng Website trên Internet, nhiều người vẫn nghĩ rằng việc đảm bảo an toàn, bảo mật nhằm giảm thiểu tối đa khả năng bị tấn công từ các tin tặc chỉ đơn thuần tập trung vào các vấn đề như chọn hệ điều hành, hệ quản trị cơ sở dữ liệu, webserver sẽ chạy ứng dụng, ... mà quên mất rằng ngay cả bản thân ứng dụng chạy trên đó cũng tiềm ẩn một lỗ hổng bảo mật rất lớn. Một trong số các lỗ hổng này đó là SQL injection. Tại Việt Nam, đã qua thời kì các quản trị website lơ là việc quét virus, cập nhật các bản vá lỗi từ các phần mềm hệ thống, nhưng việc chăm sóc các lỗi của các ứng dụng lại rất ít được quan tâm. Đó là lí do tại sao trong thời gian vừa qua, không ít website tại Việt Nam bị tấn công và đa số đều là lỗi SQL injection. Vậy SQL injection là gì ? SQL injection là một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm vào" (inject) và thi hành các câu lệnh SQL bất hợp pháp (không được người phát triển ứng dụng lường trước). Hậu quả của nó rất tai hại vì nó cho phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase. 2.1.1.2. Các Dạng Tấn Công SQL Injection SVTH: Nguyễn Mậu San Trang 10 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống Có bốn dạng thông thường bao gồm: vượt qua kiểm tra lúc đăng nhập (authorization bypass), sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng các stored-procedures. SVTH: Nguyễn Mậu San Trang 11 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống Để biết các website sử dụng CSDL SQL ta sử dụng các phần mềm hoặc các công cụ tìm lỗi. Hoặc các công cụ tìm kiếm như Google. Và dùng các từ khóa tìm kiếm như : inurl : product.php?id= Hình 2.1. Một công cụ tìm Lổi SQL Injection. Để biết website nào dính lỗi SQL Injection ta thêm dấu “ ’ ” vào sau thanh địa chỉ. Ví dụ : http://www.doanchuyenganh.com/product.php?id=123’ SVTH: Nguyễn Mậu San Trang 12 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống Hình 2.2. Một site bị lổi SQL Injection. 2.1.2. Tấn công SQL Injection. 2.1.2.1. Dạng tấn công vượt qua kiểm tra đăng nhập Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng Web. Xét một ví dụ điển hình, thông thường để cho phép người dùng truy cập vào các trang Web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu. Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp. Trong trường hợp này, người ta có thể dùng hai trang, một trang HTML để hiển thị form nhập liệu và một trang ASP dùng để xử lí thông tin nhập từ phía người dùng. Ví dụ: Trang nhập liệu: login.htm
Username:
Password:
SVTH: Nguyễn Mậu San Trang 13 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống Trang xử lý nhập liệu: execlogin.asp <% Dim vUsrName, vPassword, objRS, strSQL vUsrName = Request.Form("fUSRNAME") vPassword = Request.Form("fPASSWORD") strSQL = "SELECT * FROM T_USERS " & _ "WHERE USR_NAME=' " & vUsrName & _ " ' and USR_PASSWORD=' " & vPassword & " ' " Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." If (objRS.EOF) Then Response.Write "Invalid login." Else Response.Write "You are logged in as " & objRS("USR_NAME") End If Set objRS = Nothing %> Thoạt nhìn, đoạn mã trong trang execlogin.asp dường như không chứa bất cứ một lỗ hổng về an toàn nào. Người dùng không thể đăng nhập mà không có tên đăng nhập và mật khẩu hợp lệ. Tuy nhiên, đoạn mã này thực sự không an toàn và là tiền đề cho một lỗi SQL injection. Đặc biệt, chỗ sơ hở nằm ở chỗ dữ liệu nhập vào từ người dùng được dùng để xây dựng trực tiếp câu lệnh SQL. Chính điều này cho phép những kẻ tấn công có thể điều khiển câu truy vấn sẽ được thực hiện. Ví dụ, nếu người dùng nhập chuỗi sau vào trong cả 2 ô nhập liệu username/password của trang login.htm là: ' OR ' ' = ' '. Lúc này, câu truy vấn sẽ được gọi thực hiện là: SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and USR_PASSWORD= ORhợp ''=''lệ và sẽ trả về tất cả các bản ghi của T_USERS và đoạn Câu truy vấn này'' là mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như là người dùng đăng nhập hợp lệ. 2.1.2.2. Dạng tấn công sử dụng câu lệnh SELECT Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công. Xét một ví dụ rất thường gặp trong các website về tin tức. Thông thường, sẽ có một trang nhận ID của tin cần hiển thị rồi sau đó truy vấn nội dung của tin có ID này. SVTH: Nguyễn Mậu San Trang 14 Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống Ví dụ: http://www.doanchuyennganh.com/product.asp?ID=123 . Mã nguồn cho chức năng này thường được viết khá đơn giản theo dạng: <% Dim vNewsID, objRS, strSQL vNewsID = Request("ID") strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." Set objRS = Nothing Trong các tình huống thông thường, đoạn mã này hiển thị nội dung của tin có %> ID trùng với ID đã chỉ định và hầu như không thấy có lỗi. Tuy nhiên, giống như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một lỗi SQL injection khác. Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách gán ID cho một giá trị khác, và từ đó, khởi đầu cho một cuộc tấn công bất hợp pháp, ví dụ như: 0 OR 1=1 (nghĩa là, http://www.doanchuyennganh.com/product.asp?ID=0 or 1=1). Câu truy vấn SQL lúc này sẽ trả về tất cả các bài viết từ bảng dữ liệu vì nó sẽ thực hiện câu lệnh: SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1 Một trường hợp khác, ví dụ như trang tìm kiếm. Trang này cho phép người dùng nhập vào các thông tin tìm kiếm như Họ, Tên, … Đoạn mã thường gặp là: SVTH: Nguyễn Mậu San Trang 15
- Xem thêm -