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

74 448 2
  • Loading ...
    Loading ...
    Loading ...

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Tài liệu liên quan

Thông tin tài liệu

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

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, 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 đỡ 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ù cố gắng hoà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 cô 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 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 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 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 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 toà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 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 (yêu cầu) 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: (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 • 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 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 soá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 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 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 60 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 • Kiểm soá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ế 61 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 toà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 soá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 Ngoài ra, 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 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: [...]... một trang Web mới Có thể nói, nhờ vào sự cảnh giác của người dùng thì 90% đã đạt được sự bảo mật trong kĩ thuật này III CHÈN CÂU TRUY VẤN SQL (SQL INJECTION) IV.1 Khái niệm SQL Injection 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... URL, ứng dụng có thể áp dụng biện pháp sau: • Ứng dụng sử dụng cơ chế bảng băm (hash table) Sau khi người dùng chứng thực thành công với một username, ứng dụng sẽ sinh ra một khóa tương ứng Khóa này sẽ lưu trên server cùng với biến username trong đối tượng bảng băm Mỗi khi nguời dùng kết nối đến ứng dụng, khóa và username này sẽ được gửi đi và được so sánh với khóa username trong bảng băm Nếu tương ứng. .. tham số truyền của một ứng dụng nhưng mọi thông tin đều được lưu trữ vào nó trước khi chuyển đi nên trong phần này sẽ đề cập đến việc thay đổi một HTTP Header I.4.1 Khái niệm Thông thường chỉ có trình duyệt và trình chủ là trao đổi HTTP Header, còn hầu hết các ứng dụng web thì không Tuy nhiên, hacker có thể tự viết một chương trình để điều khiển HTTP header (như xem nội dung, tạo mới) hay sử dụng các... một trong những kĩ thuật tấn công phổ biến nhất hiên nay, đồng thời nó cũng là một trong những vấn đề bảo mật quan trọng đối với các nhà phát triển web và cả những người sử dụng web Bất kì một website nào cho phép người sử dụng đăng thông tin mà không có sự kiểm tra chặt chẽ các đoạn mã nguy hiểm thì đều có thể tiềm ẩn các lỗi XSS 1 XSS là gì ? Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì... việc tấn công “BUFFER OVERFLOW”,… I.2.2 Một số biện pháp khắc phục • Chỉ nên sử dụng biến ẩn của form để hiện thị dữ liệu trên trình duyệt, không được sử dụng giá trị của biến để thao tác trong xử lí ứng dụng • Ghép tên và giá trị của biến ẩn thành một chuỗi đơn Sử dụng thuật toán mã hóa MD5 hoặc một kiểu hash một chiều khác để tổng hợp chuỗi đó và lưu nó vào một hidden field gọi là “Chuỗi mẫu” 18 Khi... 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 trị bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL,... 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  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... đó XSS không làm ảnh hưởng đến hệ thống website nằm trên server 23 II.2 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... minh họa là ASP với cơ sở dữ liệu là SQL IV.2.1 Kĩ thuật tấn công vượt qua kiểm tra đăng nhập (authorization bypass) 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... set Rs = nothing set SQL = nothing %> Đoạn mã trên kiểm tra chuỗi nhập Username và Password, nếu tồn tại trong bảng User thì cho phép đăng nhập và ngược lại Thoạt nhìn, đoạn mã 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, ... ứ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, ... 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... 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
- Xem thêm -

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