Một số vấn đề về bảo mật ứng dụng web và demo lỗi SQL injections

76 522 2
Một số vấn đề về bảo mật ứng dụng web và demo lỗi SQL injections

Đ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

TRƯỜNG ĐẠI HỌC VINH KHOA CÔNG NGHỆ THÔNG TIN  ĐỒ ÁN TỐT NGHIỆP Một số vấn đề bảo mật ứng dụng Web &Demo lỗi SQL Injection GVHD Th.s: Lê Văn Minh SVTH: Nguyễn Mạnh Cường Vinh, 05/2009 LỜI CẢM ƠN Sau tháng nỗ lực thực đồ án tốt nghiệp, ngồi cố gắng thân, 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: Th.S Lê Văn Minh – môn Mạng truyền thông , khoa CNTT-Trường ĐH Vinh, người trực tiếp tận tình giúp đỡ tơi suốt trình thực đồ án Đồng thời cho phép cảm ơn giúp đỡ, tạo điều kiện khoa CNTT-Trường Đại học Vinh 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 Nguyễn Mạnh Cường 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 khơng thể 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 V : Chương trình minh họa chống 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 ứ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 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 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ướ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 Q 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 Ngun 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 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ía nhân viên, nhà cung cấp nhiều người liên quan khác • Tường lửa, SLL 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 hiệu 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 mũ 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 mũ đen) 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 u cầu: (Header Request ) 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, 16 Mar 2009 05:46:53 GMT Content-Length: 2291 Content-Type: text/html Set-cookie: ASPSESSIONIDQQGGGNCC=LKLDFFKCINFLDMFHCBCBMFLJ; Path=/ Cache-control: private 10 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 • 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 62 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 • 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: 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 63 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 trang web xây dựng ngơn ngữ asp có kết nối sql server 2000, nhằm thực ngiệm lỗi SQL injection hay gặp phải II Cài đặt Trang web demo xây dựng làm mục địch đích cho công vào sở liệu trang web Vì mơ lỗi SQL injection, chủ yếu ta tác động lên sở liệu Hệ sở liệu sử dụng SQL 2000 Trong sơ liệu ta tạo table có tên users chứa trường sau 64 *Đăng nhập hợp pháp: - Xác nhận mà không cần điều kiện nào: User: ‘or’’=’ Pass: ‘or’’=’ -Xác nhận với tên đăng nhập là: User: admin’— - Xác nhận người bảng sở liệu: User:’or1=1 Bỏ bảng liệu: User:’;drop table users-Trên trang web mơ phỏng_là đích có ô tên đăng nhập mật sau: 65 Trang có chức cho phép đăng nhập vào sở liệu Khi ta đăng nhập vào với quyền admin pass admin, trang web có hiển thị sau: 66 Khi ta đăng nhập vào với quyền user pass user, trang web có hiển thị sau: 67 Trang xuly_dangnhap.asp Xuly_dangnhap.asp có chức xử lý câu lệnh truy vấn để truy nhập vào sở liệu Khắc phục lỗi trang xuly_dangnhap.asp Quá trình khắc phục lỗi xử lý file xuly1.asp có nội dung sau:

Ngày đăng: 15/12/2015, 11:32

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