Bài viết này nói về lỗ hổng mà Tameem Khalid, một nhà nghiên cứu an ninh mạng và chuyên gia phân tích bảo mật đã khai thác và đầu độc tính năng (Reset Password) đặt lại mật khẩu.
Đầu độc tính năng Reset Password
Đầu độc tính năng Reset Password là một kỹ thuật giúp kẻ tấn công thao túng một trang web dễ bị tấn công để tạo liên kết đặt lại mật khẩu trỏ đến tên miền của chúng. Hành vi này có thể được sử dụng để đánh cắp các token bí mật cần thiết để đặt lại mật khẩu của người dùng và cuối cùng là xâm nhập tài khoản của họ.
Vì sự riêng tư của ứng dụng, mình sẽ lấy ví dụ là trang web redacted.com. Giống như mọi ứng dụng web khác , nó có tính năng đặt lại mật khẩu. Vì vậy, mình sẽ bắt đầu khai thác nó.
Đây là một trong những danh sách checklist tuyệt vời mà bạn có thể xem trong khi đi săn. https://github.com/harsh-bothra/HowToHunt
Sau khi phân tích request, mình chỉ nhận thấy một tham số không cần thiết có tên “callback”. Request như dưới:
Chúng ta cần xem xét request này một chút. Và bây giờ bạn biết phải làm gì rồi phải không?
Mình đã thay đổi giá trị thông số “callback” thành payload của Burp Collaborator và kiểm tra xem nó có được thực thi hay không. Và kết quả là như này:
Payload của Burp Collaborator đã được thực thi và đã đổi liên kết đặt lại mật khẩu cùng với token. Khi nạn nhân nhấp vào liên kết này, token đặt lại mật khẩu sẽ được gửi đến máy chủ của kẻ tấn công.
Kịch bản tấn công
- Kẻ tấn công lấy được địa chỉ email hoặc tên người dùng của nạn nhân theo request và thay mặt họ gửi yêu cầu đặt lại mật khẩu. Khi gửi biểu mẫu, họ chặn request HTTP và sửa đổi thông số “Callback” để nó trỏ đến tên miền mà họ kiểm soát. Đối với ví dụ này, mình đã sử dụng Burp Collaborator.
- Nạn nhân nhận được một email đặt lại mật khẩu chính chủ trực tiếp từ trang web. Nó chứa một liên kết đặt lại mật khẩu của họ và quan trọng là chứa token đặt lại mật khẩu hợp lệ được liên kết với tài khoản của họ. Tuy nhiên, tên miền trong URL trỏ đến máy chủ của kẻ tấn công: https://ift.tt/wetSjh5
- Nếu nạn nhân nhấp vào liên kết này (hoặc nó được tìm nạp theo một số cách khác, chẳng hạn như bằng máy quét chống vi-rút), token đặt lại mật khẩu sẽ được gửi đến máy chủ của kẻ tấn công.
- Giờ đây, kẻ tấn công có thể truy cập URL thực của trang web dễ bị tấn công và cung cấp token bị đánh cắp của nạn nhân thông qua tham số tương ứng. Sau đó, họ sẽ có thể đặt lại mật khẩu của người dùng thành bất kỳ thứ gì họ thích và đăng nhập vào tài khoản của họ.
Kết luận
Hack bằng tính năng Reset Password là một trong những cuộc tấn công mang tính thực tế hơn là lý thuyết, thường được sử dụng như trong các chương trình tiền thưởng lỗi. Nhà phát triển web nên xem xét việc tạo một danh sách trắng gồm các tên miền đáng tin cậy trong quá trình thiết lập ban đầu của ứng dụng.