Lab: OAuth account hijacking via redirect_uri
Last updated
Last updated
Phòng thí nghiệm này sử dụng dịch vụ để cho phép người dùng đăng nhập bằng tài khoản mạng xã hội của họ. Việc cấu hình sai của nhà cung cấp OAuth khiến kẻ tấn công có thể đánh cắp authorization code được liên kết với tài khoản của người dùng khác.
Người dùng quản trị sẽ mở bất kỳ thứ gì bạn gửi từ máy chủ khai thác và họ luôn có phiên hoạt động với dịch vụ OAuth.
Bạn có thể đăng nhập bằng tài khoản mạng xã hội của mình bằng thông tin đăng nhập sau: wiener:peter
.
Mục tiêu: Đánh cắp authorization code được liên kết với người dùng admin, sau đó sử dụng nó để truy cập vào tài khoản của họ và xóa người dùng carlos
.
Sử dụng tài khoản đã biết để hoàn tất một quá trình đăng nhập OAuth
Đăng xuất rồi đăng nhập lại. Lưu ý rằng lần này được đăng nhập ngay lập tức. Vì vẫn có phiên hoạt động với dịch vụ OAuth nên bạn không cần phải nhập lại thông tin đăng nhập để xác thực.
Quan sát trong Burp Proxy, quá trình ủy quyền gồm 2 request sau:
GET /auth?client_id=... sẽ chuyển hướng ngay đến redirect_uri cùng với authorization code
Trong Burp Repeater, để ý rằng có thể gửi bất kỳ giá trị tùy ý nào mà redirect_uri
không gặp lỗi. Để redirect_uri
trỏ đến exploit server. Nhận được authorization code trong URL chuyển hướng.
Follow direction và quan sát trong Access log trên exploit server
Lợi dụng redirect_uri để lấy được authorization code của admin
Trên exploit server tạo g iframe
sau tại/exploit
:
Phần src tương tự URL của request GET /auth?client_id=... nhưng phần redirect_uri
trỏ đến exploit server. Lưu exploit và gửi nó cho máy nạn nhân.
Quan sát access log để lấy code
Đăng xuất và truy cập vào /oauth-callback?code=... với authorization code vừa đạt được
Phần còn lại của luồng OAuth sẽ được hoàn thành tự động và đã đăng nhập thành công tư cách là admin.