Phương pháp kiểm thử bảo mật cho ứng dụng Web
Giới thiệu Khi dữ liệu được lưu trữ trong các ứng dụng web và số lượng giao dịch trên web ngày càng tăng thì kiểm thử an bảo mật của các ứng dụng web đang trở nên rất quan trọng. Kiểm thử bảo mật là quá trình chứng minh rằng dữ liệu bí mật vẫn bí mật và người sử dụng chỉ có thể thực hiện những ...
Giới thiệu Khi dữ liệu được lưu trữ trong các ứng dụng web và số lượng giao dịch trên web ngày càng tăng thì kiểm thử an bảo mật của các ứng dụng web đang trở nên rất quan trọng. Kiểm thử bảo mật là quá trình chứng minh rằng dữ liệu bí mật vẫn bí mật và người sử dụng chỉ có thể thực hiện những công việc mà họ được phép để thực hiện. Một số thuật ngữ chính được sử dụng trong kiểm thử bảo mật "Lỗ hổng" là gì? Đây là một điểm yếu trong ứng dụng web. Nguyên nhân của một "điểm yếu" như vậy có thể lỗi trong ứng dụng, một mã SQL / script hoặc sự hiện diện của virus. "Thao tác URL" là gì? Một số ứng dụng web truyền đạt thêm thông tin giữa client (trình duyệt) và máy chủ trong URL. Thay đổi một số thông tin trong URL đôi khi có thể dẫn đến hành vi ngoài ý muốn bởi máy chủ. "SQL injection" là gì? Đây là quá trình chèn câu lệnh SQL thông qua giao diện người dùng ứng dụng web vào một số truy vấn sau đó được thực hiện bởi các máy chủ. "XSS (Cross Site Scripting)" là gì? Khi người dùng chèn HTML / script phía client trong giao diện người dùng của một ứng dụng web và sự chèn này được hiển thị cho người dùng khác, nó được gọi là XSS. "Giả mạo" là gì? Việc tạo ra trò lừa bịp khá giống trang web hoặc email được gọi là giả mạo. Phương pháp kiểm tra an ninh: Để thực hiện một kiểm thử bảo mật hữu ích của một ứng dụng web, người kiểm thử bảo mật nên có kiến thức tốt về các giao thức HTTP. Điều quan trọng là phải có một sự hiểu biết về cách thức client (trình duyệt) và máy chủ giao tiếp sử dụng HTTP. Thêm vào đó, người kiểm thử ít nhất nên biết những điều cơ bản của SQL injection và XSS. 1. Password cracking: Kiểm thử bảo mật trên một ứng dụng web có thể được kick-off bởi "crack mật khẩu". Để đăng nhập vào khu vực private của ứng dụng, người ta có thể đoán tên người dùng / mật khẩu hoặc sử dụng một số công cụ cracker mật khẩu. Danh sách tên người dùng thông thường và mật khẩu thì sẵn có với mật khẩu mã nguồn mở. Nếu ứng dụng web không thực thi một mật khẩu phức tạp (ví dụ với bảng chữ cái, số và ký tự đặc biệt, với ít nhất một số yêu cầu về ký tự), nó có thể không mất nhiều thời gian để crack các username và password. Nếu username hoặc password được lưu trữ trong các tập tin cookie mà không cần mã hóa, kẻ tấn công có thể sử dụng phương pháp khác nhau để ăn cắp các tập tin cookie và sau đó thông tin được lưu trữ trong cookie như username và password. 2. Thao tác URL thông qua các phương thức HTTP GET: Người kiểm thử nên kiểm tra xem ứng dụng có vượt qua các thông tin quan trọng trong chuỗi truy vấn. Điều này xảy ra khi ứng dụng sử dụng phương thức HTTP GET để truyền thông tin giữa client và server. Thông tin được truyền vào các tham số trong chuỗi truy vấn. Người kiểm thử có thể sửa đổi một giá trị tham số trong chuỗi truy vấn để kiểm tra xem máy chủ có chấp nhận nó hay không. Thông tin người dùng yêu cầu HTTP GET được chuyển tới server để xác thực hoặc nạp dữ liệu. Kẻ tấn công có thể thao tác mọi biến đầu vào được chuyển từ yêu cầu GET này đến máy chủ để có được thông tin yêu cầu hoặc để hỏng dữ liệu. Trong những điều kiện như vậy bất kỳ hành vi bất thường của ứng dụng hoặc máy chủ web là lối vào cho kẻ tấn công để vào được ứng dụng. 3. SQL Injection: Điều tiếp theo cần được kiểm tra là SQL injection. Nhập một quote(') trong bất kỳ textbox nên bị từ chối bởi ứng dụng. Thay vào đó, nếu người kiểm thử gặp lỗi cơ sở dữ liệu, có nghĩa là đầu vào của người dùng được chèn vào một số truy vấn sau đó được thực hiện bởi ứng dụng. Trong trường hợp như vậy, ứng dụng dễ bị SQL injection. Các cuộc tấn công SQL injection rất quan trọng vì kẻ tấn công có thể nhận được thông tin quan trọng từ cơ sở dữ liệu từ server. Để kiểm tra các điểm nhập SQL injection vào ứng dụng web của bạn, hãy tìm mã từ mã của bạn dựa vào nơi các truy vấn MySQL trực tiếp được thực hiện trên cơ sở dữ liệu bằng cách chấp nhận một số đầu vào của người dùng. Nếu dữ liệu đầu vào của người dùng được tạo ra trong các truy vấn SQL để truy vấn cơ sở dữ liệu, kẻ tấn công có thể chèn câu lệnh SQL hoặc một phần của câu lệnh SQL làm đầu vào của người dùng để lấy thông tin quan trọng từ cơ sở dữ liệu. Thậm chí nếu kẻ tấn công làm ứng dụng bị crash, từ lỗi truy vấn SQL được hiển thị trên trình duyệt, kẻ tấn công có thể nhận được thông tin họ đang tìm kiếm. Các ký tự đặc biệt từ đầu vào người dùng phải được xử lý/thoát đúng cách trong những trường hợp như vậy. 4.Cross Site Scripting (XSS): Người kiểm tra cần kiểm tra thêm ứng dụng web cho XSS(Cross site scripting).Bất kỳ HTML nào ví dụ <HTML> hoặc bất kỳ script nào ví dụ: <SCRIPT> không nên được chấp nhận bởi ứng dụng. Nếu có, ứng dụng có thể dễ bị tấn công bởi Cross Site Scripting. Kẻ tấn công có thể sử dụng phương pháp này để thực hiện đoạn mã độc hại hoặc URL trên trình duyệt của nạn nhân. Sử dụng XSS kẻ tấn công có thể sử dụng các tập lệnh như JavaScript để ăn cắp cookie của người dùng và thông tin được lưu trữ trong các cookie. Nhiều ứng dụng web nhận được một số thông tin người dùng và chuyển thông tin này trong một số biến từ các trang khác nhau. Ví dụ: http://www.examplesite.com/index.php?userid=123&query=xyz Kẻ tấn công có thể dễ dàng vượt qua một số đầu vào nguy hiểm hoặc <script> như một tham số '& query' có thể khám phá dữ liệu người dùng / server quan trọng trên trình duyệt. Quan trọng: Trong quá trình kiểm tra bảo mật, người kiểm tra phải rất cẩn thận để không sửa đổi bất kỳ điều nào sau đây: Cấu hình ứng dụng hoặc máy chủ Các dịch vụ đang chạy trên máy chủ Người sử dụng đang tồn tại hoặc dữ liệu khách hàng được lưu trữ bởi ứng dụng Ngoài ra, cần tránh kiểm thử bảo mật trên một hệ thống production. Mục đích của kiểm thử bảo mật là phát hiện các lỗ hổng của ứng dụng web để các nhà phát triển có thể loại bỏ các lỗ hổng này khỏi ứng dụng và làm cho ứng dụng web và dữ liệu an toàn trước hành động trái phép. Refer: http://www.softwaretestinghelp.com/security-testing-of-web-applications/