Tóm Tắt
Chào mọi người! Hôm nay mình muốn chia sẻ về một hành trình săn lỗi bảo mật đầy thú vị, trong đó mình vừa được chấp nhận hai lỗ hổng Reflected XSS trên nền tảng Intigriti. Câu chuyện không chỉ đơn thuần là tìm lỗi, mà còn là một chút 'may mắn' khi mình khám phá ra cách để nâng cao tác động của lỗi và nhận được bounty xứng đáng. Hãy cùng mình tìm hiểu chi tiết nhé!
1. Cơ Duyên Đến Với Các Chương Trình Bug Bounty Private
Sau khi nhận được khoản bounty khá lớn (1000€ cho lần báo lỗi trước), Intigriti đã mời mình tham gia vào nhiều chương trình private. Mình cảm thấy hơi choáng ngợp vì số lượng lựa chọn. Cuối cùng, mình quyết định chọn một chương trình có thể dễ dàng khai thác mà không cần đăng nhập (unauthenticated), giúp tiết kiệm thời gian.
2. Recon: Chuẩn Bị Trước Khi Săn Lỗi
Mình bắt đầu bằng một vài bước recon cơ bản với những lệnh đơn giản như sau:
subfinder
để tìm kiếm subdomainhttpx
để kiểm tra trạng thái và giao thức của các URLgau
vàwaybackurls
để tìm kiếm các URL từ các nguồn lưu trữ khác nhau
Qua công tác này, mình tìm thấy một URL có dạng: https://sub.redacted.com/signup?redirectTo=/login
. Ngay lập tức, ý tưởng hiện lên trong đầu: Tại sao không thử tìm lỗi Open Redirect trước nhỉ?
3. Khai Thác Lỗi Open Redirect
Mình lập tức thử một payload đơn giản cho lỗi Open Redirect:
?redirectTo=https://fb.com
Sau khi hoàn tất việc đăng ký tài khoản, trang web đã chuyển hướng mình tới https://fb.com thành công. Rõ ràng, lỗi Open Redirect đã được khai thác thành công.
4. Ý Tưởng Nâng Cao Tác Động: Từ Open Redirect Sang XSS
Tuy nhiên, lúc này mình nghĩ rằng chỉ báo cáo lỗi open redirect thì chỉ được đánh giá ở mức 'low', khi mà bounty của tier 2 cho lỗi này chỉ có 25€. Để tìm kiếm giá trị hơn, mình muốn nâng cao tác động lên thành XSS. Thông thường, lỗi open redirect có thể được mở rộng thành XSS với payload javascript:alert().
Do đó, mình thử luôn với payload sau:
?redirectTo=javascript:alert()
Và... thành công! Lỗi XSS đã được khai thác.
5. Khám Phá Lỗi XSS Thứ Hai Ở Endpoint Đăng Nhập
Tuy nhiên, mình vẫn chưa dừng lại ở đó. Khi thực hiện đăng nhập thông thường, chưa có gì xảy ra, nhưng bỗng nhiên mình nghĩ: Tại sao không thử biến tham số redirectTo tại endpoint /login? Vậy là ngay lập tức mình thử nghiệm với payload đó ở /login, và... bùm! Thêm một lỗ hổng XSS nữa xuất hiện. Lúc này, mình nhanh chóng viết báo cáo và nộp cả hai lỗi cùng một lúc.
Thành Quả
Sau gần một ngày chờ đợi, lỗi đã được pending và đội ngũ triage thông báo rằng vendor đang xem xét sẽ phản hồi sớm nhất có thể. Sau khoảng gần 5 ngày nữa, mình đã nhận được kết quả xứng đáng.
Tổng Kết
Hành trình săn bug này mặc dù ngắn nhưng đầy những bất ngờ và đem lại nhiều niềm vui. Chỉ với một chút thử nghiệm đơn giản và nhạy bén trong việc nâng cao mức độ nghiêm trọng của lỗi, mình đã thu được hai lỗi XSS được chấp nhận trên nền tảng Intigriti. Hy vọng những chia sẻ của mình sẽ hữu ích cho các bạn trong quá trình săn bug của mình!
Nỗ lực hết mình để có mặt trong top 100!
source: viblo