2 lỗ hổng XSS: Từ Open Redirect đến Reflected XSS và 100€
Sumary
Chào mọi người! Hôm nay mình muốn chia sẻ về một hành trình săn bug thú vị, mà kết quả là mình vừa được accept hai lỗ hổng Reflected XSS trên Intigriti. Câu chuyện lần này không chỉ là về việc tìm lỗi, mà còn là một chút "may mắn" khi mình tìm được cách tăng impact của lỗi để nhận bounty xứng đáng. Nào, cùng mình đi qua từng bước nhé!
1. Cơ Duyên Đến Với Những Program Private
Sau khi mình được nhận một bug bounty kha khá (1000€ cho lần báo lỗi trước), Intigriti đã mời mình vào khá nhiều chương trình private. Mình cảm thấy hơi choáng, vì phải chọn một program trong số đó để bắt đầu. Cuối cùng, mình chọn được một program có thể khai thác nhanh, không cần đăng nhập (unauthen), nên tiết kiệm kha khá thời gian. Các bạn có thể đọc bài trước ở link sau: Mình đã kiếm 1000€ từ một Medium bug như thế nào?
2. Recon: Chuẩn Bị Trước Khi Săn Lỗi
Đầu tiên, mình tiến hành "recon" cơ bản với vài lệnh đơn giản như:
subfinder
để tìm subdomainhttpx
để check trạng thái và giao thứcgau
vàwaybackurls
để tìm các URL từ các nguồn lưu trữ
Sau đó, mình tìm được một URL có dạng: https://sub.redacted.com/signup?redirectTo=/login
. Ý tưởng xuất hiện ngay trong đầu mình: tại sao không thử lỗi Open Redirect trước nhỉ?
3. Khai Thác Open Redirect
Mình thử ngay một payload đơn giản cho Open Redirect:
?redirectTo=https://fb.com
Sau khi đăng ký tài khoản xong, trang web đưa mình thẳng tới https://fb.com. Chắc chắn lỗi Open Redirect đã thành công.
4. Ý Tưởng Tăng Impact: Biến Open Redirect Thành XSS
Nhưng ngay lúc đó, mình nghĩ rằng chỉ báo cáo lỗi open redirect thì chỉ ở mức "low" vì nhìn lại bounty của tier 2 mức low chỉ có 25€, bounty không đáng là bao. Để kiếm nhiều hơn, mình muốn nâng impact lên thành XSS. Thường thì open redirect có thể được scale lên thành XSS với payload javascript:alert().
Vậy là mình thử với payload:
?redirectTo=javascript:alert()
Và... thành công luôn!
5. Khám Phá Lỗi XSS Thứ Hai Ở Endpoint Login
Tuy nhiên, mình vẫn chưa dừng lại ở đó. Khi đăng nhập bình thường, không có gì xảy ra, nhưng chợt mình nghĩ: Tại sao không thử tham số redirectTo với endpoint /login? Vậy là mình thử ngay 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 chỉ việc viết report nhanh chóng và submit hai lỗi cùng lúc.
Thành quả
Sau gần 1 ngày chờ đợi thì lỗi được pending và triage báo vendor đang check sẽ báo lại sớm nhất có thể, Sau đó, thêm gần 5 ngày chờ đợi nữa thì mình đã có thành quả xứng đáng
Tổng kết
Hành trình săn bug lần này tuy ngắn, nhưng khá nhiều may mắn và mang 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 scale lỗi, mình đã kiếm được hai lỗi XSS được accept trên Intigriti. Hy vọng chia sẻ của mình sẽ giúp ích cho mọi người trong quá trình săn bug!
All rights reserved