Internet Application Testing
Bài trước chúng ta đã được biết tới chuẩn mở OSSTMM cung cấp các phương pháp kiểm tra an ninh toàn diện cho hệ thống mạng, hôm nay mình xin giới thiệu phần kiểm tra an ninh cho các ứng dụng trên internet (Internet Application Testing).
Internet Application Testing là việc thực hiện và sử dụng các kỹ thuật kiểm thử khác nhau để tìm ra các lỗ an ninh trong các ứng dụng chạy trên hệ thống server/client trong mạng internet như website, app chat, game online…. Đây là những hệ thống phục vụ hàng ngàn người sử dụng với mục đích khác nhau như kinh doanh, giáo dục, giải trí….
Ví dụ: module trong các website phục vụ thương mại điện tử chúng ta có thể sử dụng cả 2 (hoặc 1 trong 2) phương pháp kiểm thử như hộp đen (Black box) hoặc hộp trắng (White box).
Mục đích của của quá trình kiểm tra an ninh là đưa ra danh sách các lỗ hổng và thành phần tin cậy trên hệ thống, qua đó đưa ra những giải pháp khắc phục, củng cố an ninh cho hệ thống.
Các kỹ thuật kiểm tra an ninh mạng cho hệ thống ứng dụng.
Re-Engineering:
Là phương phápsử dụng kỹ thuật dịch ngược (Reverse Engineering) phân tích hoặc tái cấu trúc ứng dụng dưới dạng các mã nhị phân, hợp ngữ qua đó xác định các đặc điểm kỹ thuật của ứng dụng . Dựa trên mã nguồn được phân tích các chuyên gia an ninh mạng có thể tìm ra các thành phần bị lỗi có thể khai thác. Từ đó đưa ra các giải pháp khắc phục hay bản vá cho các thành phần bị lỗi đó.
Authentication:
Để truy cập vào các thành phần của ứng dụng , thông thường người sử dụng cần phải đi qua bước xác thực để sử dụng các chức năng của ứng dụng đó. Xác thực qua sử dụng password là phương pháp phổ biến nhất.
Người sử dụng thường có thói quen đặt mật khẩu theo tên tuổi, ngày sinh hoặc các mật khẩu phổ biến như abc123, P@ssw0rd.... Đây là những mật khẩu yếu dễ đoán, brute force. Cần kiểm soát chặt các giá trị truyền vào khi người dùng khởi tạo mật khẩu, bắt buộc phải đặt mật khẩu đủ độ phức tạp về độ dài, độ khó( chứa đủ các ký tự: chữ hoa, thường, số, ký tự đặc biệt).
Hệ thống xác thực có thể bị bypass bởi kẻ giả mạo thông qua khai thác lỗ hổng phần mềm, database. Nguyên nhân bị bypass là do các tham số truyền vào trong quá trình lập trình không được kiểm soát.
Xác định các thành phần logic của ứng dụng để cho phép duy trì số lượng các phiên đăng nhập thất bại khi có sự sai lệch về thông tin đăng nhập(user, password), đặt tham số thời gian chờ đăng nhập lại.
Giới hạn truy cập vào ứng dụng: cho phép truy cập vào thành phần nào của ứng dụng , thời gian của một phiên đăng nhập vào ứng dụng.
Sesion Management:
Quản lý các phiên làm việc đồng thời có chung ID từ nhiều IP khác nhau, có thể đây là trường hợp đã bị đánh cắp session và kẻ tấn công đang đăng nhập trái phép từ một nơi khác. Sử dụng cookie, session ID trong URL để xác định danh tính của đối tượng đang sử dụng phiên làm việc đó.
Hạn chế trong các phiên đăng nhập đồng thời từ nhiều IP khác nhau, phân chia băng thông, hạn chế tập tin download/ updaload.
Phân tích các nguy cơ bị thu thập thông tin nhạy cảm với các cuộc tấn công Man-in-the-Middle, kỹ thuật session-Hijacking, attack relay thu thập thông tin.
Input manipulation:
Các ứng dụng thường bị khai thác thông qua các lỗi lập trình như sử dụng các hàm lỗi, tham số truyền vào không đúng, lỗi tràn bộ đệm…. Mình xin giới thiệu một số phương pháp để kiểm tra lỗi lập trình trong dựng ứng dụng:
Thông thường khi người dùng truy cập một ứng dụng lịch sử truy cập sẽ được lưu lại trong cookie hay các tập tin tạm thời. Việc thu thập các thông tin có giá trị được lưu trữ trong cookie, bộ nhớ cache, tập tin tạm thời( .tmp) của ứng dụng client để phân tích sẽ giúp nhà phát triển ứng dụng nắm được các nguy cơ an ninh mà người dùng gặp phải khi truy cập ứng dụng. Qua đó đưa ra giải pháp xử lý tăng cường an ninh cho người sử dụng.
Information leakage:
Một số thông tin nhạy cảm có thể bị rò rỉ qua các thông điệp của hệ thống sinh ra khi người sử dụng tò mò, hay vô ý hoặc cố ý. Vì vậy cần kiểm tra các thông tin nhạy cảm chứa trong biểu ngữ của ứng dụng: hướng dẫn sử dụng, tin nhắn chào mừng, thông điệp báo lỗi, tìm thông tin trong các biến ẩn mã HTML.
Bài viết giới thiệu phương pháp kiểm tra an ninh của các ứng dụng ( web, mail, chat) chạy trên internet, qua đây các bạn có thể hình dung được cần phải làm những việc gì để đảm bảo an ninh tốt nhất cho hệ thống của mình.
Tài liệu tham khảo: OSSTMM 2.1. - The Open Source Security Testing Methodology Manual.
Ví dụ: module trong các website phục vụ thương mại điện tử chúng ta có thể sử dụng cả 2 (hoặc 1 trong 2) phương pháp kiểm thử như hộp đen (Black box) hoặc hộp trắng (White box).
Mục đích của của quá trình kiểm tra an ninh là đưa ra danh sách các lỗ hổng và thành phần tin cậy trên hệ thống, qua đó đưa ra những giải pháp khắc phục, củng cố an ninh cho hệ thống.
Các kỹ thuật kiểm tra an ninh mạng cho hệ thống ứng dụng.
Re-Engineering:
Là phương phápsử dụng kỹ thuật dịch ngược (Reverse Engineering) phân tích hoặc tái cấu trúc ứng dụng dưới dạng các mã nhị phân, hợp ngữ qua đó xác định các đặc điểm kỹ thuật của ứng dụng . Dựa trên mã nguồn được phân tích các chuyên gia an ninh mạng có thể tìm ra các thành phần bị lỗi có thể khai thác. Từ đó đưa ra các giải pháp khắc phục hay bản vá cho các thành phần bị lỗi đó.
Authentication:
Để truy cập vào các thành phần của ứng dụng , thông thường người sử dụng cần phải đi qua bước xác thực để sử dụng các chức năng của ứng dụng đó. Xác thực qua sử dụng password là phương pháp phổ biến nhất.
Người sử dụng thường có thói quen đặt mật khẩu theo tên tuổi, ngày sinh hoặc các mật khẩu phổ biến như abc123, P@ssw0rd.... Đây là những mật khẩu yếu dễ đoán, brute force. Cần kiểm soát chặt các giá trị truyền vào khi người dùng khởi tạo mật khẩu, bắt buộc phải đặt mật khẩu đủ độ phức tạp về độ dài, độ khó( chứa đủ các ký tự: chữ hoa, thường, số, ký tự đặc biệt).
Hệ thống xác thực có thể bị bypass bởi kẻ giả mạo thông qua khai thác lỗ hổng phần mềm, database. Nguyên nhân bị bypass là do các tham số truyền vào trong quá trình lập trình không được kiểm soát.
Xác định các thành phần logic của ứng dụng để cho phép duy trì số lượng các phiên đăng nhập thất bại khi có sự sai lệch về thông tin đăng nhập(user, password), đặt tham số thời gian chờ đăng nhập lại.
Giới hạn truy cập vào ứng dụng: cho phép truy cập vào thành phần nào của ứng dụng , thời gian của một phiên đăng nhập vào ứng dụng.
Sesion Management:
Quản lý các phiên làm việc đồng thời có chung ID từ nhiều IP khác nhau, có thể đây là trường hợp đã bị đánh cắp session và kẻ tấn công đang đăng nhập trái phép từ một nơi khác. Sử dụng cookie, session ID trong URL để xác định danh tính của đối tượng đang sử dụng phiên làm việc đó.
Hạn chế trong các phiên đăng nhập đồng thời từ nhiều IP khác nhau, phân chia băng thông, hạn chế tập tin download/ updaload.
Phân tích các nguy cơ bị thu thập thông tin nhạy cảm với các cuộc tấn công Man-in-the-Middle, kỹ thuật session-Hijacking, attack relay thu thập thông tin.
Input manipulation:
Các ứng dụng thường bị khai thác thông qua các lỗi lập trình như sử dụng các hàm lỗi, tham số truyền vào không đúng, lỗi tràn bộ đệm…. Mình xin giới thiệu một số phương pháp để kiểm tra lỗi lập trình trong dựng ứng dụng:
- Tìm hạn chế của các biến được định nghĩa và lưu chuyển dữ liệu, chiều dài dữ liệu, kiểu dữ liệu truyền vào.
- Ghép nối lệnh trong chuỗi đầu vào của ứng dụng, sử dụng các ký tự đặc biệt, các chuỗi dài để tìm lỗi tràn bộ đệm trong các ứng dụng.
- Thực hiện kiểm tra lỗi SQLi với các chuỗi đầu vào của ứng dụng.
- Kiểm tra lỗi “Cross-Site Scripting” trong các đối tượng truyền giá trị vào trong ứng dụng hệ thống.
- Kiểm tra quyền truy cập các thư mục tập tin bằng đường dẫn chuỗi đầu vào của ứng dụng.
- Sử dụng chuỗi URL được mã hóa để vượt qua xác thực đầu vào của ứng dụng.
- Thực thi các câu lệnh từ xa qua lỗi “ server side include” xác định file, thư mục bị lỗi anh ninh này.
- Thực hiện phương pháp ẩn biến trong mã html để đánh lừa tính logic của webserver.
Thông thường khi người dùng truy cập một ứng dụng lịch sử truy cập sẽ được lưu lại trong cookie hay các tập tin tạm thời. Việc thu thập các thông tin có giá trị được lưu trữ trong cookie, bộ nhớ cache, tập tin tạm thời( .tmp) của ứng dụng client để phân tích sẽ giúp nhà phát triển ứng dụng nắm được các nguy cơ an ninh mà người dùng gặp phải khi truy cập ứng dụng. Qua đó đưa ra giải pháp xử lý tăng cường an ninh cho người sử dụng.
Information leakage:
Một số thông tin nhạy cảm có thể bị rò rỉ qua các thông điệp của hệ thống sinh ra khi người sử dụng tò mò, hay vô ý hoặc cố ý. Vì vậy cần kiểm tra các thông tin nhạy cảm chứa trong biểu ngữ của ứng dụng: hướng dẫn sử dụng, tin nhắn chào mừng, thông điệp báo lỗi, tìm thông tin trong các biến ẩn mã HTML.
Bài viết giới thiệu phương pháp kiểm tra an ninh của các ứng dụng ( web, mail, chat) chạy trên internet, qua đây các bạn có thể hình dung được cần phải làm những việc gì để đảm bảo an ninh tốt nhất cho hệ thống của mình.
Tài liệu tham khảo: OSSTMM 2.1. - The Open Source Security Testing Methodology Manual.
Chỉnh sửa lần cuối bởi người điều hành: