Đồ án tốt nghiệp nghiên cứu một số vấn đề về bảo mật ứng dụng web

99 762 1
Đồ án tốt nghiệp nghiên cứu một số vấn đề về bảo mật ứng dụng web

Đ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

LỜI CẢM ƠN Sau tháng nỗ lực thực đồ án tốt nghiệp, cố gắng thân, tơi nhận giúp đỡ bảo tận tình thầy cơ, bạn bè Cá nhân xin bày tỏ lời chân thành cảm ơn đến thầy giáo hướng dẫn: ThS– môn An ninh mạng, khoa CNTT-, người trực tiếp tận tình giúp đỡ tơi suốt q trình thực đồ án Đồng thời cho phép cảm ơn giúp đỡ, tạo điều kiện khoa CNTT Mặc dù tơi cố gắng hồn thành đồ án khả cho phép không tránh khỏi thiếu sót Tơi mong nhận bảo đóng góp ý kiến tận tình thầy giáo bạn Người viết đồ án MỤC LỤC MỞ ĐẦU Trong thời đại bùng nổ Internet nay, việc khai thác, tìm kiếm quảng cáo thơng tin trang Web trở thành nhu cầu thiếu đóng vai trị quan trọng thành công công việc doanh nghiệp, tổ chức xã hội cá nhân Bởi lý quan trọng nên số lượng cá nhân tổ chức truy cập vào trang Web tăng lên cách đáng kể Trong số này, hàng ngày, hàng tuần có hàng trăm thăm viếng trang Web với mục đích xấu Số lượng công nhằm vào lỗ hổng ứng dụng Web gây nhiều tổn thất mặt kinh tế xã hội Vì việc nghiên cứu vấn đề bảo mật ứng dụng Web vấn đề quan trọng phát triển Internet Mục đích đồ án: Nghiên cứu phương pháp công ứng dụng web, từ đưa giải pháp bảo mật cho ứng dụng Nội dung đồ án chia thành chương chính: Chương I : Giới thiệu ứng dụng Web Chương II : Giới thiệu sơ lược kĩ thuật công ứng dụng web Chương III : Một số kĩ thuật công Chương IV : Tổng kết q trình cơng biện pháp phịng chống Chương V : Chương trình minh họa CHƯƠNG I GIỚI THIỆU ỨNG DỤNG WEB I Ứng dụng Web (Web Application) Web mơi trường có khả thực thi chương trình cao, cho phép tạo vơ số tùy biến nó, triển khai trực tiếp lượng lớn ứng dụng tới hàng triệu người dùng giới Hai thành phần quan trọng Website trình duyệt Web linh hoạt ứng dụng Web Web browser (trình duyệt Web) ứng dụng phần mềm cho phép người dùng truy vấn liệu tương tác với nội dung nằm trang Web bên Website Website ngày khác xa với kiểu đồ họa văn tĩnh thê kỷ 19 hay thời kỳ trước Các trang Web đại cho phép người dùng lấy xuống nội dung động cá nhân hóa theo thiết lập tham chiếu riêng Hơn chúng chạy Script máy khách, “thay đổi” trình duyệt Internet thành giao diện cho ứng dụng thư điện tử, phần mềm ánh xạ tương tác (Yahoo Mail, Goole Maps) Quan trọng Website đại cho phép đóng gói, xử lý, lưu trữ truyền tải liệu khách hàng nhạy cảm (như thông tin cá nhân, mã số thẻ tín dụng, thơng tin bảo mật xã hội ) dùng dùng định kỳ sau Và điều thực qua ứng dụng Web Đó thành phần Webmail (thư điện tử), trang đăng nhập, chương trình hỗ trợ mẫu yêu cầu sản phẩm hay hoạt động mua bán, hệ thống quản lý nội dung, phát triển Website đại, cung cấp phương tiện cần thiết để liên lạc với khách hàng tương lai khách hàng Tất ví dụ phổ biến, gần gũi sinh động Ứng dụng Web Dưới góc độ chức năng, ứng dụng Web chương trình máy tính cho phép người dùng Website đăng nhập, truy vấn vào/ra liệu qua mạng trình duyệt Web Dữ liệu gửi tới người dùng trình duyệt theo kiểu thơng tin động (trong định dạng cụ thể, với HTML dùng CSS) từ ứng dụng Web qua Web Server Dưới góc độ kỹ thuật, ứng dụng Web truy vấn máy chủ chứa nội dung (chủ yếu sở liệu lưu trữ nội dung) tạo tài liệu Web động để phục vụ yêu cầu máy khách (chính người dùng Website) Tài liệu tạo kiểu định dạng tiêu chuẩn hỗ trợ tất trình duyệt (như HTML, XHTML) Trình duyệt Web chìa khóa, dịch chạy tất Script, lệnh…khi hiển thị trang Web nội dung yêu cầu II Hoạt động Hình bên minh họa chi tiết mơ hình ứng dụng Web ba tầng Tầng thơng thương trình duyệt Web giao diện người dùng Tầng thứ hai công nghệ kỹ thuật tạo nội dung động Java servlets (JSP) hay Active Server Pages (ASP) Còn tầng thứ ba sở liệu chứa nội dung (như tin tức) liệu người dùng (như username, password, mã số bảo mật xã hội, chi tiết thẻ tín dụng) Hình Quá trình hoạt động bắt đầu với yêu cầu tạo từ người dùng trình duyệt, gửi qua Internet tới trình chủ Web ứng dụng (Web application Server) Web ứng dụng truy cập máy chủ chứa sở liệu để thực nhiệm vụ yêu cầu: cập nhật, truy vấn thông tin nằm sở liệu Sau ứng dụng Web gửi thơng tin lại cho người dùng qua trình duyệt Hình III Các vấn đề bảo mật Web Mặc dù phủ nhận cải tiến nâng cao đáng kể nay, vấn đề bảo mật ứng dụng Web không ngừng tăng lên Nguyên nhân xuất phát từ đoạn mã khơng phù hợp Nhiều điểm yếu nghiêm trọng hay lỗ hổng cho phép hacker xâm nhập thẳng truy cập vào sở liệu tách lấy liệu nhạy cảm Nhiều sở liệu chứa thông tin giá trị (như chi tiết cá nhân, thơng tin tài chính) khiến chúng trở thành đích nhắm thường xuyên hầu hết hacker Một nghiên cứu gần 75% công mạng thực mức ứng dụng Web • Website ứng dụng Web liên quan phải sẵn sàng 24/7 để cung cấp dịch vụ theo yêu cầu khách hàng, yêu cầu từ phí nhân viên, nhà cung cấp nhiều người liên quan khác • Tường lửa, SLL khơng thể bảo vệ ứng dụng Web trước hoạt động hacking, đơn giản truy cập vào Website phải để chế độ public để ghé thăm Website Tất hệ thống sở liệu đại (như Microsoft SQL Server, Oracle, MySQL) truy cập qua số cổng cụ thể (như cổng 80, 433) Nếu muốn, người kết nội trực tiếp tới sở liệu cách vượt qua chế bảo mật hệ điều hành Các cổng để mở nhằm cho phép liên lạc với hoạt động giao thơng mạng hợp pháp, hình thành nên lỗ hổng lớn nguy hiểm • Các ứng dụng Web thường truy cập liệu cuối sở liệu khách hàng, điểu khiển liệu có giá trị khó để tuyệt đối an tồn • Hầu hết ứng dụng Web tự tạo, có kiểm tra trình độ so với phần mềm loại Do ứng dụng tùy biến thường dễ bị cơng Có thể nói ứng dụng Web cổng vào (gateway) sở liệu, ứng dụng tùy biến Chúng không phát triển với mức bảo mật tốt khơng phải qua kiểm tra bảo mật thơng thường CHƯƠNG II GIỚI THIỆU SƠ LƯỢC VỀ CÁC KỸ THUẬT TẤN CÔNG ỨNG DỤNG WEB I CÁC KHÁI NIỆM THUẬT NGỮ LIÊN QUAN I.1 Hacker Hacker thuật ngữ dùng để chuyên kẻ phá hoại hệ thống mạng…Hacker thường chuyên gia máy tính Hacker khơng tạo kẽ hở cho hệ thống, hacker lại người am hiểu hệ điều hành, hệ quản trị sở liệu, ngơn ngữ lập trình… Họ sử dụng kiến thức việc tìm tịi khai thác lỗ hổng hệ thống mạng Một số hacker dừng lại việc phát thông báo lỗi tìm cho nhà bảo mật hay người phát triển chương trình, họ xem WhiteHat (Hacker nón trắng) Một số hacker dựa vào lỗ hổng thực việc khai thác trái phép nhằm mục đích phá hoại hay mưu lợi riêng, người bị xem BlackHat( Hacker nón đen) Vì tính chất phổ biến thuật ngữ hacker, nên phần trình bày, sử dụng “hacker” thay cho “kẻ công” I.2 HTTP Header HTTP Header phần đầu (header) thơng tin mà trình khách trình chủ gửi cho Những thơng tin trình khách gửi cho trình chủ gọi HTTP requests (u cầu) cịn trình chủ gửi cho trình khách HTTP responses (trả lời) Thơng thường, HTTP header gồm nhiều dịng, dòng chứa tên tham số giá trị Một số tham số dùng header yêu cầu header trả lời, số khác dùng riê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 dòng yêu cầu cho biết phương thức yêu cầu (GET POST), địa yêu cầu (/tintuc/homnay.asp) phiên HTTP (HTTP/1.1)… o Tiếp theo tham số Chẳng hạn như:  Accept-Language: Cho biết ngôn ngữ dùng trang web  Host: Cho biết địa máy chủ  Referer: Cho biết địa trang web tham chiếu tới o Header HTTP request kết thúc 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: ASPSESSIONIDQQGGGNCC=LKLDFFKCINFLDMFHCBCBMFLJ; Path=/ Cache-control: private ……… o Dòng đầu dòng trạng thái biết phiên HTTP dùng (HTTP/1.1), mã trạng thái (200) trạng thái (OK) 10 • Bước 7: Covering Tracks ( Xóa dấu vết): Sau có thơng tin cần thiết, hacker tìm cách xóa dấu vết, xóa file log hệ điều hành làm cho người quản lý không nhận hệ thống bị xâm nhập có biết khơng tìm kẻ xâm nhập Công cụ: Zap, Event log GUI, rootkits, file streaming • Bước 8: Creating Backdoors ( Tạo cửa sau chuẩn bị cho lần xâm nhập ) Hacker để lại “Back Doors”, tức chế cho phép hacker truy nhập trở lại đường bí mật khơng phải tốn nhiều cơng sức, việc cài đặt Trojan hay tạo user ( tổ chức có nhiều user) Cơng cụ loại Trojan, keylog, creat rogue user accounts, schedule batch jobs, infect startup files, plant remote contro services, install monitoring mechanisms, replace apps with Trojan… I.2 Khảo sát ứng dụng Web Phương pháp khảo sát phổ biến Xem mã nguồn lợi dụng lỗi cho phép xem mã nguồn Một số ngôn ngữ Web thơng dụng có nhiều lỗi Active Server Pages (ASP), Common Gateway Interface (CGI), ColdFusion Server (CFM), Hypertext Preprocessor (PHP) • Tấn cơng vượt qua chế kiểm sốt (authentication, authorization) • Tìm hiểu sâu chức ứng dụng web 85 Tìm hiểu cách thực phần ứng dụng, đặc biệt order input, confirmation, order tracking Ở ta áp dụng phương pháp SQL Injection, input validation… • Tìm hiểu luồng di chuyển thông tin Các thông tin tương tác client server, thông tin tương tác với database Hiện việc viết mã để thực việc giao tiếp thông tin thường phải đảm bảo tính hiệu (nhanh), bảo mật (có thể chậm hơn).Khi tính hiệu ưu tiên phát sinh lỗi q trình va giúp hacker lợi dụng lỗi để đoạt quyền điều khiển hệ thống I.3 Tấn công Sau thu nhập khảo sát kỹ đối tượng, hacker bắt đầu thực việc công nhằm xâm nhập vào hệ thống lấy thông tin, đưa thông tin xấu vào, dành quyền kiểm sốt…Cịn khơng thành cơng việc xâm nhập, DoS cách thức cuối mà hacker thường lựa chọn để làm cho hệ thống hoạt động II CÁC BIỆN PHÁP PHÒNG CHỐNG Phịng chống hacker khơng phải nhiệm cụ riêng người lập trình Web mà cần phải có kết hợp, hỗ trợ người quản trị thân người dùng Thiếu sót yếu tố dẫn đến thơng tin bị đánh cắp chí hacker điều khiển hệ thống mạng 86 II.1 Với nhà quản trị mạng • Người quản trị hệ thống cần xác định rõ đối tượng quan trọng hệ thống cần bảo vệ, xác định rõ mức độ ưu tiên đối tượng Ví dụ: đối tượng cần bảo vệ hệ thống là: Các máy chủ dịch vụ, router, điểm truy nhập hệ thống, chương trình ứng dụng, hệ quản trị CSDL, dịch vụ cung cấp… • Cấu hình cho ứng dung: Thận trọng việc cấu hình trình chủ số ứng dụng Trình chủ nên hay khơng cho phép thực thi câu lệnh SSI Ngoài phải thiết lập quyền cho ứng dụng chạy số quyền hạn định quản trị sở liệu ( không nên chạy quyền Admin) tránh trường hợp hacker lợi dụng chạy câu lệnh điều khiển hệ thống • Xác định nguy hệ thống xác định lỗ hổng bảo mật dịch vụ, ứng dụng hệ thống Việc xác định đắn nguy giúp người quản trị tránh cơng mạng, có biện pháp bảo vệ đắn cách thường xuyên cập nhật tin tức nhóm tin bảo mật từ nhà cung cấp phần mềm để phát lỗi phần mềm sử dụng Khi phát lỗi, cần cập nhật phần mềm để tránh trường hợp hacker lợi dụng lỗ hổng có ứng dụng chưa sửa chữa phiên cũ • Nắm hoạt động phần mềm sử dụng, ý nghĩa file cấu hình quan trọng ( etc/password), áp dụng biện pháp bảo vệ cấu hình sử dụng phương thức mã hóa hashing code (MD5) • Sử dụng vài cơng cụ phát hoạt động truy nhập không hợp lệ vào hệ thống logfile 87 • Kiểm sốt chặt chẽ quyền tài khoản hệ thống, không sử dụng quyền root trường hợp không cần thiết Đối với tài khoản không sử dụng hệ thống cần đổi mật hủy bỏ • Quản lý mật cách chặt chẽ o Buộc người sử dụng thay đổi mât thời gian định Hầu hết hệ thống hỗ trợ chế o Trong trường hợp người sử dụng bị mật khẩu, để cấp lại mật cần có thủ tục khác để xác thực người dùng… o Cần giám sát theo dõi chặt chẽ chương trình đổi mật khẩu, thường mục tiêu để công II.2 Với nhà thiết kế ứng dụng Web • Đảm bảo liệu cung cấp từ người dùng hợp lệ: Tất liệu đưa vào ứng dụng phải đảm bảo kiểm tra kĩ, loại bỏ từ chối kí tự đặc biệt ’/… Tuy nhiên, khơng nên dùng ngơn ngữ trình khách (như JavaScript, VBScript…) để kiểm tra liệu nhập hợp lệ hacker lợi dụng để cơng kĩ thuật mã hóa URL hay vượt đường dẫn… Cách tốt kiểm tra ứng dụng Nếu từ chối loại bỏ kí tự, ứng dụng cần kiểm tra liệu xuất để đảm bảo liệu xuất đến trình duyệt an tồn • Chứng thực người dùng: Nhiều ứng dụng quản lí phiên làm việc người dùng SessionID, yếu cách quản lí phiên làm việc khiến cho hacker dễ dàng kiểm sốt phiên làm việc người dùng Vì thế, phiên làm việc, ứng dụng cần hủy sau trình duyệt đóng kết nối 88 • Mã hóa liệu quan trọng: Những thông tin quan trọng tên/mật khẩu, credit card,…cần mã hóa Ngồi ra, q trình truyền, kết hợp phương pháp mã hóa SSL để tránh trường hợp mát thông tin đường truyền Ngày lĩnh vực mã hóa liệu, có nhiều phương pháp mã hóa mã hóa khóa bí mật, mã hóa khóa cơng khai,…nên tùy vào mức độ sử dụng tầm quan trọng mà ứng dụng chọn phương pháp mã hóa để đảm bảo liệu bảo mật • Thiết lập quyền: Với ứng dụng, hệ thống nên cung cấp quyền hạn định cho ứng dụng đủ thực chức Khơng nên đưa quyền cao nhất, root hacker lợi dụng quyền root để thực thi câu lệnh hệ thống, kĩ thuật công SQL Injection, Buffer Overflow… II.3 Với người sử dụng ứng dụng Web • Đặc biệt nên ý cho phép trình duyệt thực thi ngơn ngữ trình khách máy mình, khả lợi dụng ngôn ngữ lớn kĩ thuật XSS, SessionID • Sau sử dụng xong ứng dụng cần thoát khỏi hệ thống theo qui định để nội dung quan trọng lưu trữ cookie bị hủy bỏ, tránh khả hacker tiếp tục dùng session ID tồn để đăng nhập vào hệ thống hợp lệ • Quản lý tài khoản: 89 Người sử dụng cần nhận thức vai trò quan trọng việc bảo vệ tài khoản Các hoạt động quản lý tài khoản bao gồm việc bảo vệ mật khẩu, thay đổi mật định kỳ, đăng kí thời điểm,…Sử dụng phần mềm bảo vệ máy trạm người sử dụng, log out khỏi hệ thống sau thời gian time-out…Bên cạnh đó, người dùng cần huấn luyền cách phát tài khoản sử dụng trái phép Người sử dụng cần thường xuyên kiểm tra hoạt động để đảm bảo khơng có người khác lợi dụng tài khoản thực hành động khác 90 CHƯƠNG V CHƯƠNG TRÌNH MINH HỌA I Tổng quan Chương trình xây dựng ứng dụng dùng để minh họa cho kỹ thuật cơng SQL Injection Chương trình nhận trang web cần kiểm tra từ người sử dụng, tìm thơng tin trang web, tìm textbox cho phép đăng nhập liệu Người sử dụng tự thêm vào giá trị vào textbox sử dụng giá trị gán sẵn chương trình Chương trình tạo yêu cầu gửi đến trình chủ, nhận kết trả về, kiểm tra, đánh giá kết thông báo cho người sử dụng II Cài đặt Chương trình có sử dụng giao thức HTTP để trao đổi thông tin mạng, cần khả xử lí nhanh, giao diện thân thiện, dễ sử dụng nên ngôn ngữ chọn để cài đặt C# 91 Giao diện chương trình: Khi người sử dụng đánh địa trang Web cần kiểm tra vào URL, ấn nút Loadpage, chương trình load trang Web, thị phương thức truyền liệu, hiển thị textbox cho phép nhập liệu vào trang Web 92 Người sử dụng nhập tùy biến nhập giá trị lựa chọn giá trị có sẵn cách tick vào check box “insert string”, ấn nút Start, chương trình tạo yêu cầu gửi đến trình chủ sau nhận kết trả Từ kết trả về, chương trình đưa thơng báo xem trang Web có bị lỗi SQL Injection hay khơng 93 Một số lớp hàm cài đặt chương trình: private bool LoadInitialURLInfo(out string responseString, Uri requestURI) { HttpWebRequest Request; HttpWebResponse Response = null; WebProxy webProxy = null; Stream responseStream = null; MemoryStream memOfResponseStream = null; MemoryStream copyOfMemoryResponse = null; IHTMLDocument3 loadedHtmlDoc3 = null; string responseCharSet = ""; 94 string dummyValue = ""; bool resultGet = false; bool hasBeenRedirected = false; responseString = ""; requestURI = null; } Có nhiệm vụ load địa URL định private bool RequestURL(string dataToSend, string positiveString, out string currentMsg, out string sqlMessage) { Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(urlToReq uest); Request.Method = radGet.Checked ? "GET" : "POST"; Request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"; Request.Headers.Add("Accept-Language", "en-us"); // Pretend we are Internet Explorer 6, really widely spread Request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; NET CLR 1.1.4322)"; Request.Timeout = (int) new TimeSpan(0,0,120).TotalMilliseconds; Request.AllowAutoRedirect = true; Request.KeepAlive = false; } lấy liệu đóng gói thành request gửi lên trình chủ, lấy liệu trả 95 KẾT LUẬN I Các kết thu Qua thời gian nghiên cứu, làm đồ án, đồ án đạt nội dung yêu cầu đề ra, nghiên cứu số phương pháp công ứng dụng Web phổ biến Từ đưa giải pháp bảo mật cho ứng dụng Xây dựng chương trình minh họa cho kĩ thuật công II Hướng phát triển Các ngôn ngữ xây dựng ứng dụng, môi trường Web ngày phát triển, lỗi ứng dụng hacker tìm tịi phát triển nhiều hình thức cơng Vấn đề bảo mật ứng dụng Web rộng, đồ án nghiên cứu số phương pháp xây dựng chương trình minh họa đơn giản Vì hướng phát triển đồ án tiếp tục nghiên cứu tìm hiểu phương pháp cơng khác, từ đưa giải pháp, cài đặt để chống lại phương pháp công cho ứng dụng Đồng thời phát triển chương trình minh họa thành chương trình dị tìm lỗi ứng dụng web để cảnh báo cho người sử dụng SQL injection, XSS, URL manipulation v v 96 TÀI LIỆU THAM KHẢO • Hacking Exposed, Stuart McClure, Joel Scam bray, George Kurtz • Web Security Basis, Shweta Bhashin • Http://www.owasp.org • Http://sqlsecurity.com • Http://hvaonline.net • Http://microsoft.com/technet/security/ • Http://codeproject.com 97 ... nghiên cứu vấn đề bảo mật ứng dụng Web vấn đề quan trọng phát triển Internet Mục đích đồ án: Nghiên cứu phương pháp cơng ứng dụng web, từ đưa giải pháp bảo mật cho ứng dụng Nội dung đồ án chia thành... trọng Website trình duyệt Web linh hoạt ứng dụng Web Web browser (trình duyệt Web) ứng dụng phần mềm cho phép người dùng truy vấn liệu tương tác với nội dung nằm trang Web bên Website Website... CHƯƠNG I GIỚI THIỆU ỨNG DỤNG WEB I Ứng dụng Web (Web Application) Web mơi trường có khả thực thi chương trình cao, cho phép tạo vơ số tùy biến nó, triển khai trực tiếp lượng lớn ứng dụng tới hàng triệu

Ngày đăng: 17/06/2014, 15:46

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan