CHƯƠNG 1. TỔNG QUAN VỀ KIỂM THỬ WEBSITE 1. Các khái niệm cơ bản về hoạt động của website (ngân hàng), lỗ hổng bảo mật trên website 1. Các khái niệm cơ bản về hoạt động của website (ngân hàng) Website là một tập hợp các trang web, thường chỉ nằm trong một tên miền hoặc tên miền phụ trên World Wide Web của Internet.Một trang web là tập tin HTML hoặc XHTML có thể truy nhập dùng giao thức HTTP.Website có thể được xây dựng từ các tệp tin HTML (website tĩnh) hoặc vận hành bằng các CMS chạy trên máy chủ (website động).
Website có thể được xây dựng bằng nhiều ngôn ngữ lập trình khác nhau (PHP, .NET, Java, Ruby on Rails…)[6, 12, 20]. Một Website thường được bao gồm bởi 04 phần chính: - Source code: Mã nguồn website, chứa tệp lệnh trích xuất HTML. - Hosting: Bộ nhớ lưu trữ website. - Database: Dữ liệu nội dung website.
- Domain: Tên miền của website, thực chất một website không cần đến tên miền nó vẫn có thể hoạt động bình thường vì nó có địa chỉ IP. Bản chất của tên miền là nó được ánh xạ sang địa chỉ IP thông qua máy chủ DNS, tạo ra sự đơn giản cho người dùng dễ dàng truy cập vào web thông qua tên miền, thay vì phải nhớ địa chỉ IP của website. Ban đầu, các website chỉ bao gồm các nội dung văn bản, hình ảnh và video, chúng được liên kết với nhau thông qua các link. Tác dụng của website đơn giản chỉ là lưu trữ và hiển thị thông tin.
Người dùng chỉ có thể đọc, xem, di chuyển đến các được dẫn giữa các page.Với công nghệ hiện nay, website không chỉ đơn giản là một trang tin cung cấp các thông tin. Trước sự ra đời của các ngôn ngữ server như: CGI, ASP, PHP,… các website đã trở nên linh hoạt, có thể tương tác với người dùng. Từ đây, người dùng có thể dùng web để thực hiện một công việc nào đó bằng máy tính, do đó ứng dụng web được ra đời. Luan van 5 Ứng dụng web là một ứng dụng chủ/khách sử dụng giao thức HTTP để tương tác với người dùng hay hệ thống khác [8, 13].
Trình khách là một trình duyệt web như: Internet Explorer, Chrome, FireFox hay có thể là một chương trình có chức năng như một trình duyệt web. Người dùng có thể gửi, nhận các dữ liệu từ máy chủ thông qua việc trao đổi luồng thông tin với web server và hiển thị nội dung trang web nhận được trên trình duyệt. Các ứng dụng web này có thể là các trang cổng thông tin điện tử, trao đổi thông tin, mua bán, các diễn đàn, các trang gửi nhận thư,. Tốc độ phát triển các kỹ thuật xây dựng ứng dụng web cũng phát triển rất nhanh.
Trước đây những ứng dụng web thường được xây dựng bằng CGI (Common Getaway Interface) được chạy trên các máy chủ web và kết nối với với các cơ sở dữ liệu đơn giản trên cùng một máy chủ. Ngày nay, ứng dụng web thường được viết bằng PHP, ASP.Net, JSP (hay các ngôn ngữ tương tự) và chạy trên máy chủ phân tán, kết nối đến nhiều nguồn dữ liệu. Một ứng dụng web thường có kiến trúc gồm: Java Server Page SOAP Servlet Internet JDBC SQL Tomcat Explorer Server HTTP HTML CGI Google COM XML Apache Chrome MySQL HTTPS Java Script PHP XML SQL Mozilla IIS Active Firefox EJB XML File Server Page Presentation Application Database Hình 1. Kiến trúc một ứng dụng web Trên hình 1.1 mô tả kiến trúc thông thường của một ứng dụng web bao gồm các lớp: - Lớp trình diễn: Lớp này có chức năng hiển thị dữ liệu mà nó nhận được từ web server cho người dùng, ngoài ra còn có thể có chức năng tạo bố cục và giao diện cho trang web.
Luan van 6 - Lớp ứng dụng: Đây là nơi xử lý của ứng dụng web. Nó sẽ xử lý thông tin yêu cầu từ người dùng, đưa ra quyết định, gửi kết quả đến lớp trình diễn. Lớp này thường được cài đặt bằng các kỹ thuật lập trình dựa trên các ngôn ngữ như CGI, Java,. và được triển khai trên host hoặc trên các dịch vụ của máy chủ như Apache của Linux, IIS của Windows Server,… - Lớp dữ liệu: Lớp này là các hệ quản trị dữ liệu SQL như MySQL, SQL Server, Oracle,.
chịu tránh nhiệm quản lý các file dữ liệu và quyền sử dụng dữ liệu của toàn bộ website. Thường được triển khai trực tiếp trên cùng hoặc tách biệt riêng với web server. Việc phân lớp trong kiến trúc web tạo ra các hoạt động đơn giản nhưng có liên kết chặt chẽ giữa các lớp. Nó giúp cho người quản trị dễ dàng triển khai, vận hành và chủ động trong phòng, chống các cuộc tấn công.Ví dụ như lớp ứng dụng có lỗi nhưng hệ thống, cơ sở dữ liệu được cấu hình đảm bảo thì hacker khó có thể khai thác và làm ảnh hưởng tới hệ thống.
Hoạt động của một ứng dụng web là sự tương tác giữa trình khách với web server. Dưới đây là mô hình hoạt động của một ứng dụng web: Hình 1. Mô hình hoạt động của một ứng dụng web Tương ứng các lớp của một ứng dụng web, hoạt động của một website cũng có 3 phần: - Trình khách (trình duyệt người dùng): Chrome, FireFox,… - Trình chủ: Apache, IIS,… - Hệ quản trị CSDL: Oracle, SQL Server, MySQL,… Luan van 7 Bên cạnh đó, một giải pháp dùng để bảo vệ hệ thống mạng thường được sử dụng là bức tường lửa (firewall), nó có vai trò như 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. Có thể xem firewall như một bộ lọc thông tin, nó xác định và cho phép một máy tính này có được truy xuất đến một máy tính khác hay không, hay một mạng này có được truy xuất đến mạng kia hay không [8].
Người ta thường dùng firewall vào mục đích: - Cho phép hoặc cấm các dịch vụ truy xuất ra ngoài. - Cho phép quy định cấm các hay cho phép dịch vụ từ bên ngoài truy xuất vào trong. - Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập. Firewall hoạt động dựa trên góp IP do đó kiểm soát được việc truy cập máy tính của người sử dụng.
Mô tả hoạt động của website Trình duyệt tạo một HTTP Request gửi máy chủ web thông qua các phương thức GET, POST,… của giao thức HTTP, yêu cầu cung cấp hoặc xử lý tài nguyên thông tin. Địa chỉ của tài nguyên yêu cầu được xác định trong định dạng URL. Sau khi nhận được truy vấn từ trình khách, máy chủ web xác định sự tồn tại của tài nguyên được yêu cầu. Nếu yêu cầu can thiệp các quyền truy cập của tài nguyên thì máy chủ web từ chối truy vấn và trả về cảnh báo thích hợp.
Nếu yêu cầu là hợp lệ, lúc này máy chủ có thể cho thực thi một chương trình được xây dựng từ ngôn ngữ như Perl, C/C++,… hoặc máy chủ yêu cầu bộ biên dịch thực thi các trang PHP, ASP, JSP,… theo yêu cầu của máy khách. 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 máy khách gửi đến. Khi máy chủ web định danh được tài nguyên, nó thực hiện hành động chỉ ra trong request method và tạo ra response trả về cho máy khách 1 luồng dữ liệu có định dạng theo giao thức HTTP, nó gồm 2 phần: Luan van 8 - 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ì.
Khi giao dịch hoàn tất, máy chủ web thực hiện ghi vào tệp tin nhật ký mô tả giao dịch vừa thực hiện. Với firewall, luồng thông tin giữa máy chủ và máy khách 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 liên quan khác [8, 18]. Lỗ hổng bảo mật website Định nghĩa lỗ hổng bảo mật Lỗ hổng bảo mật trên một hệ thống là các điểm yếu có thể tạo ra sự ngưng trệ của dịch vụ, thêm quyền đối với người sử dụng hoặc cho phép các truy nhập không hợp pháp vào hệ thống. Các lỗ hổng cũng có thể nằm ngay các dịch vụ cung cấp như sendmail, web, ftp … Ngoài ra các lỗ hổng còn tồn tại ngay chính tại hệ điều hành như trong Windows XP, Windows NT, UNIX; hoặc trong các ứng dụng mà người sử dụng thường xuyên sử dụng như Word processing, các hệ databases… [7, 11, 12] Có thể nói lỗ hổng bảo mật là những điểm yếu trên hệ thống hoặc ẩn chứa trong một dịch vụ mà dựa vào đó kẻ tấn công có thể xâm nhập trái phép để thực hiện các hành động phá hoại hay chiếm đoạt các tài nguyên hợp pháp. Nguyên nhân gây ra lỗ hổng bảo mật là khác nhau: - Do lỗi của bản thân hệ thống - Do phần mềm cung cấp hoặc do người lập trình Luan van 9 - Do người quản trị yếu kém không hiểu sâu sắc các dịch vụ cung cấp.
Lỗ hổng website Lỗ hổng website là những điểm yếu của hệ thống website mà tin tặc có thể lợi dụng để khai thác nhằm thu thập thông tin về hệ thống, tấn công lấy cắp thông tin, tấn công vào người dùng hệ thống hay tấn công chiếm quyền điều khiển hệ thống website [1, 19]. Lỗ hổng website có thể xuất phát từ nhiều nguyên nhân, tuy nhiên chủ yếu là do 3 nguyên nhân sau: - Lỗi do người lập trình, phát triển ứng dụng tập trung vào chức năng và tốc độ mà không quan tâm đến an toàn. Ứng dụng không có thành phần kiểm tra hay kiểm tra yếu các dữ liệu đầu vào từ người dùng, từ đó, kẻ tấn công có thể lợi dụng lỗ hổng từ mã nguồn để khai thác và tấn công hệ thống. - Lỗi do người quản trị cấu hình hệ thống yếu, cấu hình hệ thống mặc định, tài khoản mặc định, không thường xuyên cập nhật phiên bản mới cho các dịch vụ triển khai trên hệ thống.
- Lỗi nằm trong các giao thức, các nền tảng hay chuẩn xây dựng hệ thống đã được công khai.