Lab: Stealing OAuth access tokens via a proxy page
Last updated
Last updated
Phòng thí nghiệm sử dụng service để cho phép người dùng đăng nhập bằng social media account. Flawed validation của OAuth service khiến nó cho phép kẻ tấn công leak access tokens tới trang tùy ý trong client application.
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 thông qua 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: Xác định lỗ hổng thứ cấp trong client application và sử dụng lỗ hổng này làm proxy để đánh cắp access token của tài khoản admin. Sủ dụng access token để lấy API key của admin
Tham số redirect_uri
trong GET /auth?cliend_id=...
có lỗ hổng duyệt thư mục nhưng với domain hợp lệ
Quan sát comment form rằng nó bao gồm iframe
trong mỗi blog post. Chú ý vào trang /post/comment/comment-form
rằng nó sử dụngpostMessage()
để gửi thuộc tínhwindow.location.href
đến windows cha của nó. Quan trọng là nó cho phép đăng tin nhắn đến bất kỳ nguồn gốc nào ( *
).
Trên máy chủ khai thác tạo exploit sau:
redirect_uri
để nó đến comment-form. Đoạn <script> hiển thị tin nhắn web trong access log của exploit server.
Kiểm tra bằng View exploit rồi gửi đến nạn nhân
Gửi lại GET /me
request trong Burp Repeater, thay thế token trong Authorization: Bearer
header bằng token vừa lấy được. Kết quả trả về sẽ có API key của admin