Rate this post

Phạm vi của thử nghiệm này là để xác minh xem có thể thu thập một tập hợp các tên người dùng hợp lệ hay không bằng cách tương tác với cơ chế xác thực của ứng dụng. Kiểm tra này sẽ hữu ích cho kiểm tra bạo lực, trong đó người kiểm tra xác minh nếu, được cung cấp tên người dùng hợp lệ, có thể tìm thấy mật khẩu tương ứng.

Thông thường, các ứng dụng web tiết lộ khi tên người dùng tồn tại trên hệ thống, do cấu hình sai hoặc do một quyết định thiết kế. Ví dụ: đôi khi, khi chúng tôi gửi thông tin đăng nhập sai, chúng tôi nhận được thông báo cho biết rằng tên người dùng có trên hệ thống hoặc mật khẩu được cung cấp là sai. Thông tin thu được có thể bị kẻ tấn công sử dụng để lấy danh sách người dùng trên hệ thống. Thông tin này có thể được sử dụng để tấn công ứng dụng web, ví dụ, thông qua một cuộc tấn công bạo lực hoặc tên người dùng và mật khẩu mặc định.

Các bài viết liên quan:

Người thử nghiệm nên tương tác với cơ chế xác thực của ứng dụng để hiểu liệu việc gửi các yêu cầu cụ thể có khiến ứng dụng trả lời theo các cách thức khác nhau hay không. Sự cố này tồn tại do thông tin được phát hành từ ứng dụng web hoặc máy chủ web khi người dùng cung cấp tên người dùng hợp lệ khác với khi họ sử dụng tên người dùng không hợp lệ.

Trong một số trường hợp, một thông báo nhận được cho biết thông tin đăng nhập được cung cấp có sai hay không do tên người dùng không hợp lệ hoặc mật khẩu không hợp lệ đã được sử dụng. Đôi khi, người kiểm tra có thể liệt kê những người dùng hiện có bằng cách gửi tên người dùng và mật khẩu trống.

Mục tiêu kiểm tra

Xem xét các quy trình liên quan đến nhận dạng người dùng (ví dụ: đăng ký, đăng nhập, v.v.).

Liệt kê người dùng nếu có thể thông qua phân tích phản hồi.

Làm thế nào để kiểm tra

Trong kiểm tra hộp đen, người kiểm tra không biết gì về ứng dụng cụ thể, tên người dùng, logic ứng dụng, thông báo lỗi trên trang đăng nhập hoặc phương tiện khôi phục mật khẩu. Nếu ứng dụng dễ bị tấn công, người kiểm tra sẽ nhận được thông báo phản hồi tiết lộ, trực tiếp hoặc gián tiếp, một số thông tin hữu ích cho việc liệt kê người dùng.

Thông báo phản hồi HTTP

Kiểm tra thông tin đăng nhập hợp lệ

Ghi lại câu trả lời của máy chủ khi bạn gửi ID người dùng hợp lệ và mật khẩu hợp lệ.

Sử dụng proxy web, hãy lưu ý thông tin được truy xuất từ ​​xác thực thành công này (Phản hồi HTTP 200, độ dài của phản hồi).

Kiểm tra người dùng hợp lệ có mật khẩu sai

Bây giờ, người thử nghiệm nên cố gắng chèn ID người dùng hợp lệ và mật khẩu sai và ghi lại thông báo lỗi do ứng dụng tạo ra.

Trình duyệt sẽ hiển thị một thông báo tương tự như sau:

Không giống như bất kỳ thông báo nào tiết lộ sự tồn tại của người dùng như sau:

Đăng nhập cho người dùng foo: mật khẩu không hợp lệ

Sử dụng proxy web, hãy lưu ý thông tin được truy xuất từ ​​lần xác thực không thành công này (Phản hồi HTTP 200, độ dài của phản hồi).

Kiểm tra tên người dùng không tồn tại

Bây giờ, người thử nghiệm nên cố gắng chèn một ID người dùng không hợp lệ và một mật khẩu sai và ghi lại câu trả lời của máy chủ (người thử nghiệm nên tự tin rằng tên người dùng không hợp lệ trong ứng dụng). Ghi lại thông báo lỗi và câu trả lời của máy chủ.

Nếu người thử nghiệm nhập ID người dùng không tồn tại, họ có thể nhận được thông báo tương tự như:

hoặc một tin nhắn như sau:

Đăng nhập không thành công cho người dùng foo: tài khoản không hợp lệ

Nói chung, ứng dụng sẽ phản hồi với cùng một thông báo lỗi và độ dài cho các yêu cầu không chính xác khác nhau. Nếu các câu trả lời không giống nhau, người thử nghiệm nên điều tra và tìm ra mấu chốt tạo ra sự khác biệt giữa hai câu trả lời. Ví dụ:

  • Yêu cầu của khách hàng: Người dùng hợp lệ / mật khẩu sai
  • Phản hồi của máy chủ: Mật khẩu không đúng
  • Yêu cầu của khách hàng: Người dùng sai / mật khẩu sai
  • Phản hồi của máy chủ: Người dùng không được nhận dạng

Các phản hồi trên cho khách hàng hiểu rằng đối với yêu cầu đầu tiên, họ có tên người dùng hợp lệ. Vì vậy, họ có thể tương tác với ứng dụng yêu cầu một bộ ID người dùng có thể có và quan sát câu trả lời.

Nhìn vào phản hồi của máy chủ thứ hai, người thử nghiệm hiểu theo cách tương tự rằng họ không có tên người dùng hợp lệ. Vì vậy, họ có thể tương tác theo cách tương tự và tạo danh sách ID người dùng hợp lệ xem các câu trả lời của máy chủ.

Các cách khác để liệt kê người dùng

Người kiểm tra có thể liệt kê người dùng theo một số cách, chẳng hạn như:

  1. Phân tích mã lỗi nhận được trên các trang đăng nhập

Một số ứng dụng web phát hành mã lỗi hoặc thông báo cụ thể mà chúng tôi có thể phân tích.

Phân tích URL và Chỉ đường lại URL

Ví dụ:

  • http://www.foo.com/err.jsp?User=baduser&Error=0
  • http://www.foo.com/err.jsp?User=gooduser&Error=2

Như đã thấy ở trên, khi người kiểm tra cung cấp ID người dùng và mật khẩu cho ứng dụng web, họ sẽ thấy một thông báo cho biết đã xảy ra lỗi trong URL. Trong trường hợp đầu tiên, họ đã cung cấp ID người dùng không hợp lệ và mật khẩu không hợp lệ. Trong thứ hai, một ID người dùng tốt và một mật khẩu xấu, để họ có thể xác định một ID người dùng hợp lệ.

  1. Kiểm tra URI

Đôi khi một máy chủ web phản hồi khác nhau nếu nó nhận được yêu cầu cho một thư mục hiện có hoặc không. Ví dụ, trong một số cổng thông tin, mọi người dùng đều

liên kết với một thư mục. Nếu người kiểm tra cố gắng truy cập vào một thư mục hiện có, họ có thể nhận được lỗi máy chủ web.

Một số lỗi phổ biến nhận được từ máy chủ web là:

  • Mã lỗi 403 bị cấm
  • 404 Không tìm thấy mã lỗi

Ví dụ:

  • http://www.foo.com/account1 – chúng tôi nhận được từ máy chủ web: 403 Forbidden
  • http://www.foo.com/account2 – chúng tôi nhận được từ máy chủ web: Không tìm thấy tệp 404

Trong trường hợp đầu tiên người dùng tồn tại, nhưng người kiểm tra không thể xem trang web, trong trường hợp thứ hai, người dùng “account2” không tồn tại. Bằng cách thu thập thông tin này, người kiểm tra có thể liệt kê những người dùng.

  1. Phân tích tiêu đề trang web

Người kiểm tra có thể nhận được thông tin hữu ích trên Tiêu đề của trang web, nơi họ có thể nhận được mã lỗi cụ thể hoặc các thông báo tiết lộ nếu có vấn đề với tên người dùng hoặc mật khẩu.

Ví dụ: nếu người dùng không thể xác thực một ứng dụng và nhận được một trang web có tiêu đề tương tự như:

  1. Phân tích thông báo nhận được từ cơ sở khôi phục

Khi chúng tôi sử dụng phương tiện khôi phục (tức là chức năng quên mật khẩu), một ứng dụng dễ bị tấn công có thể trả về một thông báo cho biết tên người dùng có tồn tại hay không.

Ví dụ: các thông báo tương tự như sau:

  1. Thông báo lỗi 404 thân thiện

Khi chúng tôi yêu cầu một người dùng trong thư mục không tồn tại, chúng tôi không phải lúc nào cũng nhận được mã lỗi 404. Thay vào đó, chúng tôi có thể nhận được “200 ok” với một hình ảnh, trong trường hợp này, chúng tôi có thể giả định rằng khi chúng tôi nhận được hình ảnh cụ thể, người dùng không tồn tại. Logic này có thể được áp dụng cho phản hồi của máy chủ web khác; thủ thuật là phân tích tốt các thông điệp của máy chủ web và ứng dụng web.

  1. Phân tích thời gian phản hồi

Cũng như việc xem xét nội dung của các câu trả lời, thời gian mà phản hồi cần cũng cần được xem xét. Đặc biệt khi yêu cầu gây ra tương tác với dịch vụ bên ngoài (chẳng hạn như gửi email quên mật khẩu), điều này có thể thêm vài trăm mili giây vào phản hồi, có thể được sử dụng để xác định xem người dùng được yêu cầu có hợp lệ hay không.

  1. Đoán người dùng

Trong một số trường hợp, ID người dùng được tạo với các chính sách cụ thể của quản trị viên hoặc công ty. Ví dụ: chúng tôi có thể xem một người dùng có ID người dùng được tạo theo thứ tự tuần tự:

Đôi khi tên người dùng được tạo bằng bí danh REALM và sau đó là số tuần tự:

  • R1001 – người dùng 001 cho REALM1
  • R2001 – người dùng 001 cho REALM2

Trong ví dụ trên, chúng ta có thể tạo các tập lệnh shell đơn giản để soạn các ID người dùng và gửi yêu cầu bằng công cụ như wget để tự động hóa truy vấn web nhằm phân biệt các ID người dùng hợp lệ. Để tạo một script, chúng ta cũng có thể sử dụng Perl và curl.

Các khả năng khác là: – ID người dùng được liên kết với số thẻ tín dụng, hoặc nói chung là các số có mẫu. – ID người dùng được liên kết với tên thật, ví dụ: nếu Freddie Mercury có ID người dùng là “fmercury”, thì bạn có thể đoán Roger Taylor có ID người dùng là “rtaylor”.

Một lần nữa, chúng tôi có thể đoán tên người dùng từ thông tin nhận được từ truy vấn LDAP hoặc từ thu thập thông tin của Google, ví dụ: từ một miền cụ thể. Google có thể giúp tìm người dùng miền thông qua các truy vấn cụ thể hoặc thông qua một công cụ hoặc tập lệnh shell đơn giản.

Bằng cách liệt kê tài khoản người dùng, bạn có nguy cơ bị khóa tài khoản sau một số lượng xác định trước của các lần thăm dò không thành công (dựa trên chính sách ứng dụng). Ngoài ra, đôi khi, địa chỉ IP của bạn có thể bị cấm bởi các quy tắc động trên tường lửa ứng dụng hoặc Hệ thống ngăn chặn xâm nhập.

Gray-box testing

Kiểm tra thông báo lỗi xác thực

Xác minh rằng ứng dụng trả lời theo cùng một cách cho mọi yêu cầu của khách hàng tạo ra xác thực không thành công. Đối với vấn đề này, kiểm tra hộp đen và kiểm tra hộp xám có cùng một khái niệm dựa trên việc phân tích các thông báo hoặc mã lỗi nhận được từ ứng dụng web.

Ứng dụng phải trả lời theo cách tương tự cho mọi lần xác thực không thành công.

Biện pháp khắc phục hậu quả

Đảm bảo ứng dụng trả về các thông báo lỗi chung nhất quán để phản hồi lại tên tài khoản, mật khẩu hoặc thông tin xác thực người dùng khác không hợp lệ được nhập trong quá trình đăng nhập.

Đảm bảo rằng các tài khoản hệ thống mặc định và tài khoản thử nghiệm đã bị xóa trước khi đưa hệ thống vào sản xuất (hoặc đưa hệ thống vào mạng không đáng tin cậy).

Công cụ

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now