Ngày nay các ứng dụng web thường sử dụng Mã nguồn mở phổ biến hoặc phần mềm thương mại có thể được cài đặt trên máy chủ với cấu hình tối thiểu hoặc tùy chỉnh bởi quản trị viên máy chủ. Hơn nữa, rất nhiều thiết bị phần cứng (tức là bộ định tuyến mạng và máy chủ cơ sở dữ liệu) cung cấp cấu hình dựa trên web hoặc giao diện quản trị.
Thường thì những ứng dụng này, sau khi được cài đặt, không được định cấu hình đúng cách và thông tin đăng nhập mặc định được cung cấp để xác thực và cấu hình ban đầu sẽ không bao giờ thay đổi. Những thông tin xác thực mặc định này được biết đến bởi những người kiểm tra thâm nhập và, thật không may, cũng bởi những kẻ tấn công độc hại, những người có thể sử dụng chúng để truy cập vào các loại ứng dụng khác nhau.
Các bài viết liên quan:
Hơn nữa, trong nhiều tình huống, khi một tài khoản mới được tạo trên một ứng dụng, một mật khẩu mặc định (với một số đặc điểm tiêu chuẩn) sẽ được tạo ra. Nếu mật khẩu này có thể dự đoán được và người dùng không thay đổi nó trong lần truy cập đầu tiên, điều này có thể dẫn đến việc kẻ tấn công có được quyền truy cập trái phép vào ứng dụng.
Nguyên nhân gốc rễ của vấn đề này có thể được xác định là:
- Nhân viên CNTT thiếu kinh nghiệm, những người không nhận thức được tầm quan trọng của việc thay đổi mật khẩu mặc định trên các thành phần cơ sở hạ tầng đã cài đặt hoặc để mật khẩu làm mặc định để “dễ bảo trì”.
- Các lập trình viên để lại cửa sau để dễ dàng truy cập và kiểm tra ứng dụng của họ và sau đó quên xóa chúng.
- Các ứng dụng có tài khoản mặc định không thể tháo rời được tích hợp sẵn với tên người dùng và mật khẩu đặt trước.
- Các ứng dụng không buộc người dùng thay đổi thông tin đăng nhập mặc định sau lần đăng nhập đầu tiên.
Mục tiêu kiểm tra thông tin đăng nhập mặc định
Liệt kê các ứng dụng cho thông tin đăng nhập mặc định và xác thực nếu chúng vẫn tồn tại.
Xem xét và đánh giá các tài khoản người dùng mới và nếu chúng được tạo với bất kỳ giá trị mặc định hoặc mẫu có thể nhận dạng nào.
Làm thế nào để kiểm tra thông tin đăng nhập mặc định
Kiểm tra thông tin đăng nhập mặc định của các ứng dụng phổ biến
Trong kiểm thử hộp đen, người kiểm tra không biết gì về ứng dụng và cơ sở hạ tầng cơ bản của nó. Trong thực tế, điều này thường không đúng, và một số thông tin về ứng dụng đã được biết đến. Chúng tôi cho rằng bạn đã xác định được, thông qua việc sử dụng các kỹ thuật được mô tả trong Hướng dẫn kiểm tra này thuộc chương Thu thập thông tin, ít nhất một hoặc nhiều ứng dụng phổ biến có thể chứa các giao diện quản trị có thể truy cập được.
Khi bạn đã xác định được giao diện ứng dụng, chẳng hạn như giao diện web của bộ định tuyến Cisco hoặc cổng quản trị viên WebLogic, hãy kiểm tra xem tên người dùng và mật khẩu đã biết cho các thiết bị này có dẫn đến xác thực thành công hay không. Để thực hiện việc này, bạn có thể tham khảo tài liệu của nhà sản xuất hoặc nói một cách đơn giản hơn nhiều, bạn có thể tìm các thông tin đăng nhập phổ biến bằng công cụ tìm kiếm hoặc bằng cách sử dụng một trong các trang web hoặc công cụ được liệt kê trong phần Tham khảo.
Khi đối mặt với các ứng dụng mà chúng tôi không có danh sách tài khoản người dùng mặc định và thông thường (ví dụ: do ứng dụng không phổ biến rộng rãi), chúng tôi có thể cố gắng đoán thông tin đăng nhập mặc định hợp lệ. Lưu ý rằng ứng dụng đang được kiểm tra có thể đã bật chính sách khóa tài khoản và nhiều lần thử đoán mật khẩu với tên người dùng đã biết có thể khiến tài khoản bị khóa. Nếu có thể khóa tài khoản quản trị viên thì việc thiết lập lại hệ thống có thể gây phiền hà cho người quản trị hệ thống.
Nhiều ứng dụng có thông báo lỗi dài dòng thông báo cho người dùng trang web về tính hợp lệ của tên người dùng đã nhập. Thông tin này sẽ hữu ích khi kiểm tra tài khoản người dùng mặc định hoặc tài khoản người dùng có thể đoán được. Bạn có thể tìm thấy chức năng này, ví dụ, trên trang đăng nhập, trang đặt lại mật khẩu và quên mật khẩu, và trang đăng ký. Khi bạn đã tìm thấy tên người dùng mặc định, bạn cũng có thể bắt đầu đoán mật khẩu cho tài khoản này.
Thông tin thêm về quy trình này có thể được tìm thấy trong các phần sau:
- Kiểm tra danh sách người dùng và tài khoản người dùng có thể đoán được
- Kiểm tra chính sách mật khẩu yếu.
Vì các loại thông tin xác thực mặc định này thường bị ràng buộc với tài khoản quản trị nên bạn có thể tiến hành theo cách sau:
- Hãy thử các tên người dùng sau – “admin”, “administrator”, “root”, “system”, “guest”, “operator” hoặc “super”. Chúng phổ biến trong số các quản trị viên hệ thống và thường được sử dụng. Ngoài ra, bạn có thể thử “qa”, “test”, “test1”, “testing” và các tên tương tự. Hãy thử bất kỳ kết hợp nào ở trên trong cả trường tên người dùng và mật khẩu. Nếu ứng dụng dễ bị liệt kê tên người dùng và bạn quản lý để xác định thành công bất kỳ tên người dùng nào ở trên, hãy thử đặt mật khẩu theo cách tương tự. Ngoài ra, hãy thử một mật khẩu trống hoặc một trong các “mật khẩu”, “pass123”, “password123”, “admin” hoặc “Guest” với các tài khoản trên hoặc bất kỳ tài khoản nào khác được liệt kê. Cũng có thể thử các phép hoán vị khác ở trên. Nếu những mật khẩu này không thành công, có thể đáng giá bằng cách sử dụng tên người dùng và danh sách mật khẩu chung và thử nhiều yêu cầu chống lại ứng dụng. Tất nhiên, điều này có thể được viết theo kịch bản để tiết kiệm thời gian.
- Người dùng quản trị ứng dụng thường được đặt tên theo ứng dụng hoặc tổ chức. Điều này có nghĩa là nếu bạn đang thử nghiệm một ứng dụng có tên là “Độ che khuất”, hãy thử chúng sự che khuất / sự che khuất hoặc bất kỳ sự kết hợp tương tự nào khác làm tên người dùng và mật khẩu.
- Khi thực hiện kiểm tra cho một khách hàng, hãy thử sử dụng tên của các liên hệ bạn đã nhận được làm tên người dùng với bất kỳ mật khẩu phổ biến nào. Thư địa chỉ email khách hàng tiết lộ quy ước đặt tên tài khoản người dùng: nếu nhân viên “John Doe” có địa chỉ email jdoe@example.com, bạn có thể thử tìm tên của quản trị viên hệ thống trên mạng xã hội và đoán tên người dùng của họ bằng cách áp dụng quy ước đặt tên tương tự tên của họ.
- Cố gắng sử dụng tất cả các tên người dùng ở trên với mật khẩu trống.
- Xem lại nguồn trang và JavaScript thông qua proxy hoặc bằng cách xem nguồn. Tìm kiếm bất kỳ tham chiếu nào đến người dùng và mật khẩu trong nguồn. Ví dụ: If username = ‘admin’ then starturl = / admin.asp else /index.asp (đăng nhập thành công so với đăng nhập không thành công). Ngoài ra, nếu bạn có tài khoản hợp lệ, hãy đăng nhập và xem mọi yêu cầu và phản hồi cho đăng nhập hợp lệ so với đăng nhập không hợp lệ, chẳng hạn như các thông số ẩn bổ sung, yêu cầu GET thú vị (login= yes), v.v.
- Tìm tên tài khoản và mật khẩu được viết trong phần bình luận trong mã nguồn. Ngoài ra, hãy tìm trong các thư mục sao lưu mã nguồn (hoặc các bản sao lưu mã nguồn) có thể chứa các bình luận và mã thú vị.
Kiểm tra mật khẩu mặc định của tài khoản mới
Nó cũng có thể xảy ra khi một tài khoản mới được tạo trong một ứng dụng, tài khoản đó sẽ được gán một mật khẩu mặc định. Mật khẩu này có thể có một số đặc điểm tiêu chuẩn làm cho nó có thể dự đoán được. Nếu người dùng không thay đổi nó trong lần sử dụng đầu tiên (điều này thường xảy ra nếu người dùng không bị buộc phải thay đổi nó) hoặc nếu người dùng chưa đăng nhập vào ứng dụng, điều này có thể khiến kẻ tấn công truy cập trái phép vào ứng dụng.
Lời khuyên được đưa ra trước đây về chính sách khóa có thể xảy ra và các thông báo lỗi dài dòng cũng có thể áp dụng ở đây khi kiểm tra mật khẩu mặc định.
Các bước sau có thể được áp dụng để kiểm tra các loại thông tin xác thực mặc định này:
- Xem trang Đăng ký người dùng có thể giúp xác định định dạng dự kiến và độ dài tối thiểu hoặc tối đa của tên người dùng và mật khẩu ứng dụng. Nếu trang đăng ký người dùng không tồn tại, hãy xác định xem tổ chức có sử dụng quy ước đặt tên tiêu chuẩn cho tên người dùng như địa chỉ email của họ hoặc tên trước @ trong email hay không.
- Cố gắng ngoại suy từ ứng dụng cách tạo tên người dùng. Ví dụ: người dùng có thể chọn tên người dùng của riêng họ hay hệ thống tạo tên tài khoản cho người dùng dựa trên một số thông tin cá nhân hoặc bằng cách sử dụng một trình tự có thể đoán trước? Nếu ứng dụng tạo tên tài khoản theo một trình tự có thể dự đoán được, chẳng hạn như user7811, hãy thử làm mờ tất cả các tài khoản có thể một cách đệ quy. Nếu bạn có thể xác định phản hồi khác với ứng dụng khi sử dụng tên người dùng hợp lệ và mật khẩu sai, thì bạn có thể thử tấn công bạo lực đối với tên người dùng hợp lệ (hoặc nhanh chóng thử bất kỳ mật khẩu chung nào đã xác định ở trên hoặc trong phần tham chiếu).
- Cố gắng xác định xem mật khẩu do hệ thống tạo có thể dự đoán được hay không. Để thực hiện việc này, hãy nhanh chóng tạo nhiều tài khoản mới để bạn có thể so sánh và xác định xem mật khẩu có thể dự đoán được hay không. Nếu có thể dự đoán được, hãy cố gắng liên hệ những điều này với tên người dùng hoặc bất kỳ tài khoản nào được liệt kê và sử dụng chúng làm cơ sở cho một cuộc tấn công bạo lực.
- Nếu bạn đã xác định được quy ước đặt tên chính xác cho tên người dùng, hãy thử đặt mật khẩu “brute force” với một số trình tự có thể dự đoán chung như ngày sinh chẳng hạn.
- Cố gắng sử dụng tất cả các tên người dùng ở trên với mật khẩu trống hoặc sử dụng tên người dùng cũng như giá trị mật khẩu.
Thử nghiệm hộp xám
Các bước sau dựa trên cách tiếp cận hoàn toàn bằng hộp xám. Nếu chỉ có một số thông tin này cho bạn, hãy tham khảo thử nghiệm hộp đen để lấp đầy khoảng trống.
- Nói chuyện với nhân viên CNTT để xác định mật khẩu họ sử dụng để truy cập quản trị và cách thức quản lý ứng dụng được thực hiện.
- Hỏi nhân viên CNTT xem mật khẩu mặc định có bị thay đổi không và tài khoản người dùng mặc định có bị vô hiệu hóa hay không.
- Kiểm tra cơ sở dữ liệu người dùng để biết thông tin đăng nhập mặc định như được mô tả trong phần kiểm tra hộp đen. Cũng kiểm tra các trường mật khẩu trống.
- Kiểm tra mã cho tên người dùng và mật khẩu được mã hóa cứng.
- Kiểm tra các tệp cấu hình có chứa tên người dùng và mật khẩu.
- Kiểm tra chính sách mật khẩu và nếu ứng dụng tạo mật khẩu riêng cho người dùng mới, hãy kiểm tra chính sách đang sử dụng cho quy trình này.