一個價值$2000的“零點擊”賬號劫持漏洞
VSole2021-11-29 09:02:39
背景介紹:
今天的故事來自國外一位ID為Abhinav Gaur的白帽子,他因為發現該漏洞而獲得了$2000的賞金獎勵。
為了目標網站的安全,特將目標網站的域名使用“redacted.com”來代替,目標網站主要涉及教育和認證行業,于是,這位白帽子將目標定位在了IOS應用。
漏洞發現:
這位白帽小哥注意到IOS應用程序允許用戶使用社交賬號(諸如Facebook、Google、Apple 等賬號)登錄或創建帳戶。
于是白帽小哥開始測試應用程序的 Oauth 流程,他主要關注的是 使用Facebook 賬號登錄。
在進行測試的過程中,白帽小哥注意到應用程序信任從 Facebook 收到的數據,這些數據包括姓名、電子郵件、出生日期等。
此時,一個想法突然出現在小哥的腦海中:
如果這個社交賬號是用手機號碼注冊會怎樣?
應用程序是否會要求用戶提供電子郵件地址?因為它并沒有通過 Facebook 來接收數據。
結果與和白帽小哥所想的一模一樣!
于是小哥通過 Facebook 來注冊應用程序,而Facebook 的帳戶則是使用手機號碼創建的,因為應用程序無法檢索到用戶的電子郵件,于是便會彈出一個對話框提示用戶輸入電子郵件:

在這個對話框中,小哥填寫了一個受害者的電子郵件地址,通過數據抓包可以看到:
POST /oauth2/v1/token HTTP/1.1 Host: redacted.com Accept: */* X-RedactedMobile-UDID: redacted X-redacted-Device-Token: redacted X-redacted-Mobile-Signature: redacted Accept-Language: en Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded Content-Length: 446 User-Agent: redacted-Mobile-iOS-iPhone/3.20.1-25355/14.2 Connection: close Cookie: redacted auth_type=facebook&backup_email=victim@test.com&client_id=redacted&client_secret=redacted&grant_type=thirdparty&nonce=redacted×tamp=redacted&token=redacted
從上面的抓包請求中可以看到 backup_email 這個參數很容易受到攻擊,攻擊者可以在此參數中提供受害者的電子郵件地址,從而直接登錄到受害者的帳戶中。
而該漏洞產生的主要原因是應用程序未將社交登錄帳戶的電子郵件與已注冊用戶的電子郵件地址進行交叉檢查。
于是白帽小哥第一時間報告了這個漏洞,最終漏洞被歸為嚴重級,并最終獲得了2000美元的漏洞賞金獎勵。
VSole
網絡安全專家