Phân tích và phòng chống các tấn công vào ứng dụng web

MỤC LỤC

GIỚI THIỆU ỨNG DỤNG WEB

GIỚI THIỆU ỨNG DỤNG WEB

    Bên cạnh đó, một giải pháp dùng để bảo vệ một hệ thống mạng thường được sử dụng là bức tường lửa, nó có vai trò như là lớp rào chắn bên ngoài một hệ thống mạng, vì chức năng chính của firewall là kiểm soát luồng thông tin giữa các máy tính. Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Web thông qua các lệnh cơ bản GET, POST… của giao thức HTTP, trình chủ lúc này có thể cho thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như Perl, C/C++… hoặc trình chủ yêu cầu bộ diễn dịch thực thi các trang ASP, JSP… theo yêu cầu của trình khách.

    Hình 1.I-1. Kiến trúc một ứng dụng Web
    Hình 1.I-1. Kiến trúc một ứng dụng Web

    CÁC KHÁI NIỆM, THUẬT NGỮ LIÊN QUAN

      Những thông tin này có thể bao gồm tên/định danh người dùng, mật khẩu, sở thích, thói quen..cookie được trình duyệt của người dùng chấp nhận lưu trên đĩa cứng của máy mình, tuy nhiên không phải lúc nào trình duyệt cũng hỗ trợ cookie, mà còn tùy thuộc vào người dùng có chấp nhận chuyện lưu trữ đó hay không. Persistent cookies được lưu trữ dưới dạng tập tin .txt (ví dụ trình duyệt Netscape Navigator sẽ lưu các cookie thành một tập tin cookie.txt còn Internet Explorer sẽ lưu thành nhiều tập tin *.txt trong đó mỗi tập tin là một cookie) trên máy khách trong một khoản thời gian xác định.

      GIỚI THIỆU SƠ LƯỢC VỀ CÁC KĨ THUẬT TẤN CÔNG ỨNG DỤNG WEB

      GIỚI THIỆU SƠ LƯỢC VỀ CÁC KĨ THUẬT TẤN CÔNG ỨNG DỤNG WEB

      • CHIẾM HỮU PHIÊN LÀM VIỆC(Session Mangement) 1. Ấn định phiên làm việc (Session Fixation)
        • LỢI DỤNG CÁC THIẾU SểT TRONG VIỆC KIỂM TRA DỮ LIỆU NHẬP HỢP LỆ (Input validation)

          Bằng cách thêm một đoạn mã bất kì ( thường được lập trình bằng ngôn ngữ kịch bản như JavaScript, VBScript…), hacker có thể thực hiện việc đánh cắp thông tin quan trọng như cookie để từ đó trở thành người dùng hợp lệ của ứng dụng…dựa trên những thông tin đánh cắp này. Khả năng thực thi được những câu lệnh hệ thống hay những đoạn mã được thêm vào trong những tham số mà không có sự kiểm tra chặt chẽ như tham số của form, cookies, yêu cầu HTTP Header, và những dữ liệu nguy hiểm trong những tập tin được đưa lên trình chủ.

          THAO TÁC TRÊN THAM SỐ TRUYỀN

          TÁC TRÊN THAM SỐ TRUYỀN

          • THAO TÁC TRÊN URL 1. Khái niệm
            • THAO TÁC TRÊN BIẾN ẨN FORM 1. Khái niệm
              • THAO TÁC TRÊN COOKIE 1. Khái niệm
                • THAO TÁC TRONG HTTP HEADER

                  Biến ẩn form không hiển thị trên màn hình trình duyệt nhưng người dùng có thể tìm thấy nội dung của nó trong “ view source ”, vì thế đây là một điểm yếu để hacker lợi dụng bằng cách lưu nội dung trang web xuống trình duyệt, thay đổi nội dung trang và gửi đến trình chủ. Mọi thông tin quan trọng trao đổi giữa trình duyệt và trình chủ không nên lưu trữ dưới dạng chuỗi thông thường mà cần được mã hóa, ngoài ra những thông tin này nênđược kiểm tra,đối chiếu với dữliệu trong cơ sởdữliệu hay trong cache của trình chủ, phòng tránh trường hợp nội dung thông tin bịsai lệch.

                  CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT NẠN NHÂN (CROSS SITE SCRIPTING)

                    Trong những ví dụ2.I-1 trên, hầu hết những tiền tố URL là địa chỉ của những ứng dụng Web có thật (VD: http://www.microsoft.com/education, http://www.oracle.co.jp/mts_sem_owa/MTS_SEM/..) lợi dụng cách truyền tham số trên URL mà hacker có thể dễ dàng thêm vào đoạn mãđánh cắp cookie. Vấn đề đặt ra là có thể người lập trình sẽ bảo vệ ứng dụng Web của mình bằng cách lọc những kí tự đặc biệt như ‘, hay + (có thể tránh trường hợp dùng dấu ‘ để thực hiện câu truy vấn SQL chẳng hạn)… Nhưng hacker có thể lợi dụng mã hex thay cho những kí tự đặc biệtđểtấn công.

                    Hình 5.II-1. Quá trình thực hiện XSS
                    Hình 5.II-1. Quá trình thực hiện XSS

                    CHÈN CÂU TRUY VẤN SQL (SQL INJECTION)

                    GIỚI THIỆU MÔ HÌNH CƠ SỞ DỮ LIỆU

                    Ngôn ngữ lập trình sử dụng để minh họa trong chương này là ASP với cơ sở dữ liệu là SQL Server.

                    CÁC CÁCH TẤN CÔNG

                    • Nâng cao

                      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ố). Nếu chế độ kiểm soát được bật thì tất cả các câu truy vấn SQL của hacker cũng bị ghi nhận và nhờ đó mà một người quản trị có thể kiểm soát những gìđang xảy ra và nhanh chóng tìm rađược giải pháp.

                      CÁCH PHềNG CHỐNG

                        • Kiểm tra những tài khoản nào có thể truy xuất đến những đối tượng nào o Đối với những tài khoản của một ứng dụng nào đó dùng để truy xuất cơ sở. - Ứng dụng ngoài việc kiểm tra tính đúng đắn của dữ liệu, cần mã hóa dữ liệu ngay bên trong cơ sở dữ liệu và không cho xuất trang Web lỗi, báo nội dung lỗi cú pháp SQLđểhacker không thểthu thập thông tin cơsởdữliệu.

                        CHIẾM HỮU PHIÊN LÀM VIỆC

                        CHIẾM HỮU PHIÊN LÀM VIỆC

                        • ẤN ĐỊNH PHIÊN LÀM VIỆC
                          • ĐÁNH CẮP PHIÊN LÀM VIỆC

                            Kĩthuật này cũng tương tựnhưkĩthuật biếnẩn form, nghĩa là sau khi hacker xem mã HTML của trang Web, nhận thấy session ID được đặt trong biến ẩn form, hacker sẽ gửi một sessionID cũng trên URL đến người dùng hoặc một trang Web giống trangđích nhưng với biếnẩn form mang giá trị ấnđịnh sẵn. Bằng cách chèn vào một đoạn mã thực thi trên chính trình duyệt của nạn nhân, hacker có thể lừa người dùng theo vết một liên kết để từ đó thực hiện đánh cắp cookie của người dùng và cách này được thực hiện thông qua lỗi Cross-Site Scripting.

                            Hình 7.II-1: Sơ lược quá trình tấn công người dùng bằng kĩ thuật  ấn định session
                            Hình 7.II-1: Sơ lược quá trình tấn công người dùng bằng kĩ thuật ấn định session

                            TRÀN BỘ ĐỆM

                            TRÀN BỘ ĐỆM (BUFFER OVERFLOW)

                            • SƠ ĐỒ TỔ CHỨC CỦA BỘ NHỚ

                              Với kĩ thuật Buffer Overflow, cho phép một số lượng lớn dữ liệu được cung cấp bởi người dùng mà vượt quá lượng bộ nhớ cấp phát ban đầu bởi ứng dụng do đó gây cho hệ thống lâm vào tình trạng tràn bộ nhớ, thậm chí có thể bị chèn thêm một đoạn mã bất kì. Thông qua những ô nhập dữ liệu hacker có thể sử dụng một chuỗi string nhị phân có khả năng thực thi đoạn lệnh trên máy đích hoặc phá vỡ hệ thống do phải xử lí dữ liệu quá dài, vượt khả năng cho phép của hệ thống ( có thể nói cách này cũng là cách tấn cụng DoS-được núi rừ hơn trong chương 6).

                              Hình 8.II.2-1: stack
                              Hình 8.II.2-1: stack

                              TỪ CHỐI DỊCH VỤ

                              TỪ CHỐI DỊCH VỤ (DoS)

                              • CÁC KĨ THUẬT TẤN CÔNG

                                Ví dụ với giao thức là ICMP, hacker có thể sử dụng bomb e-mail để gửi hàng ngàn thông điệp email với mục đích tiêu thụ băng thông để làm hao hụt tài nguyên hệ thống trên mail server. Phần băng thông dành cho mỗi hệ thống là giới hạn, vì thế nếu hacker cùng lúc gửi nhiều yêu cầu đến hệ thống thì phần băng thông không đủ đáp ứng cho một khối lượng dữ liệu lớn đó và dẫn đến hệ thống bị phá vỡ.

                                Máy con gửi gói tin SYN yêu cầu kết nối

                                  Như đãđề cập về vấn đề thiết lập kết nối trong phần 1, bất cứ 1 gói tin SYN, máy chủ cũng phải để 1 phần tài nguyên của hệ thống như bộ nhớ đệm để nhận và truyền dữ liệu cho đường truyền đó. Theo hình 9.III.2-1: Nếu máy chủ sau khi gửi trả một gói tin SYN/ACK để thông báo chấp nhận kết nối cho máy yêu cầu nhưng nếu địa chỉ IP của máy yêu cầu này là giả mạo thì gói tin không thể đến được đích, nên máy chủ vẫn phải dành tài nguyên cho yêu cầu đó.

                                  MỘT SỐ KĨ THUẬT TẤN CÔNG KHÁC

                                  MỘT SỐ KĨ THUẬT TẤN CÔNG KHÁC

                                  • MÃ HểA URL (URL Encoding) 1. Khái niệm
                                    • KIỂU TẤN CÔNG VƯỢT ĐƯỜNG DẪN 1. Khái niệm
                                      • TẤN CÔNG DỰA VÀO KÍ TỰ RỖNG 1. Khái niệm

                                        Còn những kí tự đặc biệt khác thì được mã hóa như khoảng trắng, < > ”…Sau khi trình chủ nhận được dữ liệu này, trình chủ sẽ tự động giải mãđể thao tác như bình thường. Trang Web có sử dụng SSI thường được lưu dưới dạng .shtml hoặc .stm (là phần mở rộng của .html hay .htm) để báo hiệu cho trình chủ biết trang này có sử dụng SSI để tiết kiệm thời gian xử lí cho trình chủ (không mất thời gian tìm kiếm).

                                        TỔNG KẾT QUÁ TRÌNH TẤN CÔNG CỦA HACKER

                                        THU THẬP THÔNG TIN Ở MỨC HẠ TẦNG CỦA MỤC TIÊU

                                        Sau khi đã có những thông tin cần thiết, hacker tìm cách xoá dấu vết, xoá các file log của hệ điều hành làm cho người quản lý không nhận ra hệ thống đã bị xâm nhập hoặc có biết cũng không tìm ra kẻ xâm nhập là ai. Hacker để lại "Back Doors", tức là một cơ chế cho phép hacker truy nhập trở lại bằng con đường bí mật không phải tốn nhiều công sức, bằng việc cài đặt Trojan hay tạo user mới (đối với tổ chức có nhiều user).

                                        KHẢO SÁT ỨNG DỤNG WEB

                                        Công cụ: members of wheel, administrators cron, At rc, Startup folder, registry keys, netcat, remote.exe, VNC, BO2K, keystroke loggers, add acct to secadmin mail aliases login, fpnwclnt.dll. Tìm hiểu cách thực hiện của các phần trong ứng dụng, đặc biệt như các order input, confirmation, order tracking.Ở đây ta có thể áp dụng các phương pháp như SQL Injection, input validation.

                                        TẤN CÔNG

                                        Có thểtrong những bướcđã nêu hacker không cần phảiđi qua theo thứtựhay qua hết, nhưng việc nắm rừ thụng tin của mỏyđớch luụn làđiều kiện tiờn quyếtđểdẫn đến thành công trong việc tấn công. Dođó, việc bảo mật cho một hệthống cầnđòi hỏi sựkết hợp không chỉcủa riêng nhà quản trịhệ thống mà còn của nhà thiết kế ứng dụng và sự hợp tỏc của cả những khỏch hàng sửdụngứng dụng.

                                        TỔNG KẾT CÁC BIỆN PHÁP PHềNG CHỐNG

                                        VỚI NHỮNG NHÀ QUẢN TRỊ MẠNG

                                        Ngoài ra phải thiết lập quyền cho ứng dụng chỉ chạy dưới một sốquyền hạn nhất định như trong quản trị cơ sở dữ liệu ( không nên chạy quyền Admin) tránh trường hợp hacker có thể lợi dụng chạy những câu lệnhđiều khiển hệthống. Việc xác định đúng đắn các nguy cơ này giúp người quản trị có thể tránh được những cuộc tấn công mạng, hoặc có biện pháp bảo vệ đúng đắn bằng cách thường xuyên cập nhật tin tức trên các nhóm tin về bảo mật và từ nhà cung cấp phần mềm để phát hiện những lỗi của phần mềm sử dụng.

                                        VỚI NHỮNG NHÀ THIẾT KẾ ỨNG DỤNG WEB

                                        Tuy nhiên, hiện nay nhiều nhàứng dụng lại mã hóa dữ liệu kết hợp với vài thông tin như ngày giờ, địa chỉ IP…khiến cho hacker có thể dễ dàng dự đoán, hoặc nội dung dữ liệu mã hóa quá ngắn khiến cho hacker có thể sử dụng nhưng công cụ sẵn có để vét cạn những khả năng có thể xảy ra như trong kĩ thuật tấn công sessionID. Hiện nay trên thị trường xuất hiện những phần mểm như Appshield hoạt động như một proxy, nghĩa là trung gian giữa máy khách và máy chủ, mọi yêu cầu từ máy khách đều đi qua phần mềm này, nếu phát hiện trong yêu cầu có ẩn chứa khả năng tấn công lên hệ thống, nó sẽ từ chối yêu cầu, không gửi lên máy chủ nữa mà sẽ tự động hủy yêu cầu.

                                        VỚI NGƯỜI SỬ DỤNG ỨNG DỤNG WEB

                                        Không nên đưa quyền cao nhất, như root vì hacker có thể lợi dụng quyền root này để có thể thực thi những câu lệnh của hệ thống, như trong kĩ thuật tấn công SQL Injection, Buffer Overflow…. Mặc dù việc bảo mật là khó khăn và hệ thống không bao giờ được xem làđạt 100% về an toàn nhưng nếu có sự kết hợpđầy đủ giữa ba nhân tố trên thì sẽ giảm thiểu tối đa những rủi ro có thểxảy ra.

                                        CHƯƠNG TRÌNH WEB CHECKER

                                        CHƯƠNG TRÌNH WEB CHECKER

                                        • ĐẶC TẢ CHƯƠNG TRÌNH WEB CHECKER 1. Tổng quan
                                          • KIẾN TRÚC CHƯƠNG TRÌNH WEB CHECKER 1. Kiến trúc chương trình Web Checker
                                            • CÀI ĐẶT
                                              • Đánh giá chương trình

                                                Chương trình “Web Checker” là một ứng dụng dùng để minh họa cho một số kĩ thuật tấn công đã được trình bày ở phần trên như SQL Injection, Form Field Manipulation và URL Manipulation, mà trọng tâm là SQL Injection. Nguyên nhân thất bại là do ứng dụng lưu trữ câu truy vấn trong các đối tượng của form nên khi chương trình kiểm tra form sẽ làm thay đổi câu truy vấn nên đã làm thayđổi hoạt động của ứng dụng Web.

                                                Hình 13.II.1-1: Kiến trúc phân tầng của ứng dụng Web Checker
                                                Hình 13.II.1-1: Kiến trúc phân tầng của ứng dụng Web Checker