Finding the Asset

Researcher tìm asset thông qua query sau ở trang Profundis – Hosts Search Engine:

host:*.domain.com AND title:* AND status_code:200

Kết quả cho thấy một trang sử dụng React với file index.htmlmain.805b34af.js:

Ngoài ra, user bình thường sẽ bị redirected đến trang login SSO của Microsoft.

Important

Đây là một behaviour phổ biến và thường bị bỏ qua bởi các hunter ít kinh nghiệm. Ngoài ra, rất ít người chịu khó ngồi đọc bundled code của JavaScript nên đây cũng là một target đáng để quan tâm.

The Bug

Thường thì khi thực hiện đọc code JavaScript, researcher đọc phần authentication trước. Trong quá trình đọc, tìm được đoạn code sau:

Có thể thấy, nó thực hiện HTTP Basic Authentication với token được tạo từ biến edc. Biến e được xây dựng bởi hàm ul:

Phân tích một chút thì thấy hàm này trả về UPN (UserPrincipalName) của user sau khi đăng nhập ở Microsoft thành công. UPN có thể là email hoặc internal username.

Sau khi tìm kiếm trong bundled code thì researcher còn tìm thấy giá trị của dc là một giá trị gán cứng:

Finding the Endpoints

Bước tiếp theo là đi tìm endpoint sử dụng phương thức xác thực này. Researcher thường tìm theo từ khóa api, url hoặc POST và tìm được đoạn sau:

Thử xây dựng token với UPN là 1 thì thấy rằng ta có thể tạo report:

Do ID của report có 8 chữ số và có 52 giá trị có thể có nên việc IDOR gần như là không thể.

Microsoft SSO

Microsoft SSO thường trả về một vài thông tin hữu ích cho việc OSINT. Attacker sử dụng public email, dạng email có format dễ đoán chẳng hạn như firstname.lastname@company.com để khởi tạo một login request hoặc password reset request và nhìn vào các response. Với endpoint /<UUID>/resume, researcher tìm thấy một email có thể dùng trong Basic HTTP token:

Cuối cùng, researcher dùng nó để lấy report của user:

Resources