Web Application Security Testing Guide
Kiểm thử bảo mật là gì?
Kiểm thử bảo mật là một quá trình kiểm tra xem dữ liệu bí mật có được bảo mật hay không, có bị tiết lộ cho các cá nhân / tổ chức không có thẩm quyền hay không.
Ví dụ: người dùng không thể thực hiện các chức năng, xem các thông tin không được phân quyền trên trang web.
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 "điểm yếu" như vậy có thể là do các bug trong ứng dụng, injection (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 giao tiếp thông tin bổ sung giữa máy khách (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 của máy chủ và điều này được gọi là Thao tác URL.
"SQL injection" là gì?
Đây là quá trình chèn các 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 máy chủ thực thi.
"XSS (Cross-Site Scripting)" là gì?
Khi người dùng chèn HTML / tập lệnh phía máy khách vào giao diện người dùng của ứng dụng web, phần chèn này sẽ hiển thị cho người dùng khác và nó được gọi là XSS.
"Giả mạo" là gì?
Giả mạo là việc tạo ra các trang web và email cho mục đích lừa đảo.
Phương pháp kiểm tra bảo mật web
#1) Bẻ khóa mật khẩu
Việc kiểm tra bảo mật trên một ứng dụng web có thể được khởi động bằng "Password Cracking". Để đăng nhập vào các khu vực riêng tư 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ụ bẻ khóa mật khẩu cho cùng một. Một danh sách các tên người dùng và mật khẩu phổ biến có sẵn cùng với các trình bẻ khóa mật khẩu nguồn mở.
Nếu ứng dụng web không thực thi mật khẩu phức tạp (Ví dụ: với bảng chữ cái, số và ký tự đặc biệt hoặc với ít nhất một số ký tự bắt buộc), có thể không mất nhiều thời gian để bẻ khóa tên người dùng và mật khẩu.
Nếu tên người dùng hoặc mật khẩu được lưu trữ trong cookie mà không được mã hóa, thì kẻ tấn công có thể sử dụng các phương pháp khác nhau để đánh cắp cookie và thông tin được lưu trữ trong cookie như tên người dùng và mật khẩu.
Một vài phương pháp ngăn chặn bẻ khoá mật khẩu:
- Mã hoá mật khẩu.
- Message lỗi chung khi nhập sai username, password.
- Yêu cầu nhập mật khẩu phức tạp: yêu cầu số, chữ, hoa thường, kí tự đặc biệt...
- Thêm sesion time out.
- ....
#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ó truyền thông tin quan trọng trong chuỗi truy vấn hay không. Đ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 qua yêu cầu HTTP GET, thông tin người dùng được chuyển đến server để xác thực hoặc tìm nạp dữ liệu. Kẻ tấn công có thể thao túng mọi biến đầu vào được truyền từ yêu cầu GET này đến server để lấy thông tin cần thiết hoặc làm hỏng dữ liệu.
#3) SQL Injection
Yếu tố tiếp theo cần được kiểm tra là SQL Injection.
Các cuộc tấn công SQL injection rất nguy hiểm vì kẻ tấn công có thể lấy thông tin quan trọng từ cơ sở dữ liệu server.
Nếu dữ liệu đầu vào của người dùng được tạo trong các truy vấn SQL để truy vấn cơ sở dữ liệu, kẻ tấn công có thể tiêm các 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 để trích xuất thông tin quan trọng từ cơ sở dữ liệu.
#4) Cross-Site Scripting (XSS)
Một tester nên kiểm tra thêm ứng dụng web cho XSS (Cross-site scripting). Bất kỳ HTML hoặc bất kỳ SCRIPT không nên được ứng dụng chấp nhận. Nếu có, thì ứ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 thi một tập lệnh hoặc URL độc hại trên trình duyệt của nạn nhân. Sử dụng cross-site scripting, kẻ tấn công có thể sử dụng các tập lệnh như JavaScript để đánh cắp cookie của người dùng và thông tin được lưu trữ trong cookie.
Nhiều ứng dụng web nhận được một số thông tin hữu ích và chuyển thông tin này đến một số biến từ các trang khác nhau.
Kẻ tấn công có thể dễ dàng chuyển một số đầu vào độc hại hoặc <script> dưới dạng tham số '&query' có thể khám phá dữ liệu người dùng / máy chủ 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 và không nên sửa đổi bất kỳ điều nào sau đây:
- Cấu hình của ứng dụng hoặc máy chủ.
- Dịch vụ chạy trên máy chủ.
- Dữ liệu người dùng hoặc khách hàng hiện tại được lưu trữ bởi ứng dụng.
Ngoài ra, nên tránh kiểm tra bảo mật trong môi trường production.
Link tham khảo: Web Application Security Testing Guide (softwaretestinghelp.com)