Kiểm thử bảo mật là kiểm tra xem dữ liệu có giữ bí mật được hay không và trong hệ thống phần mềm thì người dùng sẽ chỉ dùng được các chức năng mà họ được cho phép sử dụng. Ví dụ: Hệ thống quản lý nhân sự thì nhân viên này không thể xem thông tin chi tiết của nhân viên khác, chỉ người nào quản lý mới được xem thông tin. Một số thuật ngữ được sử dụng trong kiểm thử bảo mật
"Vulnerability" là gì?
Đây là điểm yếu trong ứng dụng website. Nó là lỗi trong ứng dụng, mã SQL / script hoặc sự hiện diện của virus.
"URL Manipulation" là gì?
Như chúng ta đã biết thì một số ứng dụng web giao tiếp thông tin giữa máy khách (trình duyệt) và máy chủ (server) qua URL. Trong trường hợp chúng ta thực hiện thay đổi một số thông tin trong URL thì nó có thể dẫn đến hành vi ngoài ý muốn của máy chủ - Đây được gọi là thao tác URL.
“SQL injection” là gì?
Đây là quá trình người dùng cố ý 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 với một số câu lệnh truy vấn sau đó được máy chủ thực thi.
“XSS (Cross-Site Scripting)” là gì?
Khi một người dùng chèn tập lệnh html ở phía máy khách trong giao diện của ứng dụng web, phần chèn này hiển thị cho người dùng khác và nó được gọi là XSS.
“Spoofing” là gì?
Đó là việc tạo ra các trang web hoặc email giống như trò lừa bịp được gọi là Spoofing.
Kiểm tra bảo mật của bất kỳ hệ thống nào đều tập trung vào việc tìm ra tất cả các lỗ hổng và điểm yếu trong hệ thống có thể dẫn đến việc mất thông tin hoặc danh tiếng của tổ chức.
Để kiểm thử bão mật cho ứng dụng web thì tester cần có kiến thức tốt về giao thức HTTP. Và cũng cần phải biết trình duyệt và server giao tiếp bằng HTTP. Ngoài ra, tester cũng nên biết những điều cơ bản về SQL và XSS.
Chắc chúng ta nghe nhiều về việc bẻ khóa. Vì vậy chúng ta cần phải kiểm tra bảo mật xem web có bị bẻ khóa hay không. Ví dụ khi đăng nhập vào hệ thống, người ta có thể đoán tên người dùng/ mật khẩu hoặc sử dụng công cụ bẻ khóa mật khẩu. 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 công cụ bẻ khóa mật khẩu 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, chữ in hoa, in thường, số và ký tự đặc biệt ), 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ần mã hóa, kẻ tấn công (hacker) 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.
Đối với một tester 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. Nó xảy ra khi sử dụng phương thức HTTP GET để truyền thông tin giữa máy khách và máy chủ. Thông tin được truyền qua các tham số trong chuỗi truy vấn. Người kiểm tra 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ó không.
Thông qua HTTP GET yêu cầu thông tin người dùng được chuyển đến máy chủ để xác thực hoặc tìm nạp dữ liệu. Kẻ tấn công có thể thao tác mọi biến đầu vào được truyền từ yêu cầu GET này đến máy chủ để lấy thông tin cần thiết.
Chúng ta nghe rất nhiều về các cuộc tấn công của hacker từ SQL. Vậy tấn công SQL là gì? Vì sao nó lại ảnh hưởng lớn? Các cuộc tấn công SQL rất quan trọng vì kẻ tấn công có thể lấy thông tin quan trọng từ cơ sở dữ liệu máy chủ. Để kiểm tra các điểm nhập SQL vào ứng dụng web của bạn, hãy tìm hiểu mã từ cơ sở mã của bạn nơi các truy vấn trực tiếp của MySQL được thực thi 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 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ác 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. Ngay cả khi kẻ tấn công thành công để đánh sập ứng dụng, từ lỗi truy vấn SQL hiển thị trên trình duyệt, kẻ tấn công có thể lấy thông tin mà chúng đang tìm kiếm.
Với một tester thì cũng phải kiểm thử về XSS của trang web. Kẻ tấn công có thể sử dụng phương pháp này để thực thi tập lệnh hoặc URL độc hại trên trình duyệt bị tấn công. Với XSS, 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. Kẻ tấn công có thể dễ dàng vượt qua một số đầu vào độc hại hoặc <script> dưới dạng tham số và truy vấn có thể khám phá dữ liệu người dùng / máy chủ quan trọng trên trình duyệt.
Bạn có thể tìm hiểu thêm thông tin ở đây: https://www.acunetix.com/web-vulnerability-scanner/
Kiuwan tuân thủ các tiêu chuẩn bảo mật nghiêm ngặt nhất bao gồm OWASP, CWE, Sans 25, HIPPA, v.v. Kiuwan là công cụ hỗ trợ tất cả các ngôn ngữ lập trình và tích hợp với các công cụ DevOps hàng đầu.
WireShark là một công cụ phân tích mạng trước đây được gọi là Ethereal. Nó chụp gói tin trong thời gian thực và hiển thị chúng ở định dạng có thể đọc được. Về cơ bản, nó là một bộ phân tích gói mạng - cung cấp các chi tiết nhỏ nhất về các giao thức mạng, giải mã, thông tin gói, v.v ... Nó là một mã nguồn mở và có thể được sử dụng trên Linux, Windows, OS X, Solaris, NetBSD, FreeBSD và nhiều các hệ thống khác.
OWASP là một tiêu chuẩn để phục vụ việc kiểm thử của Penetration Testing (Pentest) do tổ chức Open Web Application Security Project(OWASP) đề xuất. OWASP là tổ chức phi lợi nhuận và đưa ra chuẩn OWASP phục vụ cho công việc pentest hiệu quả và chi tiết. Tuy nhiên, để rõ hơn, mình xin giới thiệu sơ qua Pentest là gì.
OWASP là một tổ chức phi lợi nhuận trên toàn thế giới tập trung vào việc cải thiện tính bảo mật của phần mềm. Dự án có nhiều công cụ để kiểm tra các môi trường và giao thức phần mềm khác nhau. Các công cụ hàng đầu của dự án bao gồm:
W3af là một framework giúp kiểm tra và xác định các lỗ hổng trong các ứng dụng web. Công cụ này đi kèm với một số plugin hữu ích để quét một trang web với hơn 200 lỗ hổng công khai. Các plugin hiện có sẵn bao gồm kiểm tra, xác thực, bruteforce, thu thập thông tin, trốn, grep và cơ sở hạ tầng. Mỗi plugin có một bộ mục tiêu quét khác nhau.
Trên đây là một số cách kiểm thử bảo mật mà mỗi tester nên biết. Cám ơn các bạn đã đọc bài viết, mong nó sẽ có ích đối với bạn.
Anh Tester
Đường dẫu khó chân vẫn cần bước đi
Đời dẫu khổ tâm vẫn cần nghĩ thấu