挖洞經驗 | 價值6k$的星巴克官網賬戶劫持漏洞
本文分享的是作者通過測試星巴克官網時,在其測試環境中發現的,利用IDOR越權方式實現的賬戶劫持漏洞,獲得了星巴克官方獎勵$6000的獎勵。
漏洞探測
當我瀏覽到新加坡星巴克網站時,偶然在其中發現了一個第三方網站,出于保密原因暫且叫他為example.com,隨著對該網站的深入探測,我發現其路徑example.com/starbucks下的頁面和星巴克登錄網站card.starbucks.com.sg一模一樣:
此時我想到了兩種可能性:
- 當前Web應用程序是card.starbucks.com.sg的測試環境;
- 可能是忘記刪除的舊版測試環境。
這兩種可能性都會導致漏洞,但我也并不確定這里的漏洞是否會對星巴克網站的生產環境形成影響。于是,我在card.starbucks.com.sg網站創建了一個用戶,然后用該用戶在example.com/starbucks來進行登錄測試,BINGO!竟然可以的!也就是說example.com/starbucks和card.starbucks.com.sg采用了相同的用戶認證機制,都能認證星巴克注冊用戶。
漏洞利用
為此,我在example.com/starbucks頁面下發現了另一個路徑,該路徑發起的POST數據包中包含了注冊用戶的綁定郵箱:
email=hacker@hacker.com
基于賬戶劫持思路,為此,我在這里把綁定郵箱替換成受害者的,請求發出后,服務端的響應內容中只包含了受害者的部份信息。而且在更改密碼的請求中,由于無效的CSRF token,所以最終賬戶劫持的嘗試也沒成功。
繼續測試,我把包含受害者郵箱參數,在example.com/starbucks中生成的PHPSESSID cookie復制到了card.starbucks.com.sg的請求數據包中,哦哇,請求發出后,竟然可以成功獲取到星巴克生產環境中受害者的個人信息,該請求中生成的有效CSRF token可以讓我有權更改受害者密碼,以此劫持了受害者賬戶。
漏洞影響
利用該漏洞不但可以看到其他用戶的個人信息,還能劫持受害者賬戶,而且如果受害者用戶賬戶中有累積積分,還可以通過移動APP去消費掉受害者的這些積分。
其它漏洞發現
我還在example.com上發現了其它兩個測試環境頁面,它們是:example.com/starbucks2和example.com/starbucks3,但是我在card.starbucks.com.sg注冊的賬戶都不能登錄該兩個測試頁面。另外,example.com/starbucks2頁面不能注冊新用戶,但example.com/starbucks3頁面可以注冊新用戶,這里就稍微有點亂了,但我盡量簡單來說。
我覺得example.com/starbucks2 和 example.com/starbucks3兩個測試環境頁面調用的都是測試用戶數據表,因此,在生產環境card.starbucks.com.sg中注冊的用戶是不能在該兩個測試環境中登錄的。
由于example.com/starbucks3頁面可以注冊新用戶,且該用戶可用來登錄example.com/starbucks2,但不能登錄card.starbucks.com.sg。然而,我從example.com/starbucks2請求包中復制的PHPSESSID cookie卻能有效應用在card.starbucks.com.sg,因此,也就能間接使用該在example.com/starbucks3頁面注冊的新用戶。為此,我畫了一副以下漏洞利用邏輯圖:
- 用受害者郵箱在example.com/starbucks3上注冊新用戶;
- 用該注冊的受害者用戶登錄example.com/starbucks2;
- 復制第2步請求中的PHPSESSID cookie信息到生產環境網站card.starbucks.com.sg,進行登錄,即能實現對受害者的賬戶劫持(如果該受害者郵箱在生產環境中有過用戶注冊,這里一樣可以實現賬戶劫持)。
漏洞報送和處理進程
- 5.17 - 漏洞報送
- 5.18 - 漏洞分類
- 5.20 - 星巴克獎勵$4000
- 6.17 - 星巴克額外獎勵$2000
參考來源:kamilonurozkaleli