這篇文章的內(nèi)容是通過一個簡單的不需要用戶交互的漏洞就能黑掉所有Facebook用戶的賬號,使得我能查看被黑用戶的信息、信用卡/儲蓄卡信息、個人照片等。Facebook確認了這個漏洞,在修復(fù)了這個漏洞的同時根據(jù)這個漏洞的嚴重性和影響程度而支付了我$15,000。
漏洞描述
如果用戶忘記賬號密碼,可以在 https://www.facebook.com/login/identify?ctx=recover&lwv=110輸入手機號碼/郵箱地址來進行密碼重置,之后Facebook會發(fā)送一個6位驗證碼到該手機或者郵箱中,通過輸入該驗證碼就能進行密碼重置。我嘗試在主站上進行6位驗證碼的爆破,但是會在10-12次失敗后被禁止操作。
于是我在beta.facebook.com和mbasic.beta.facebook.com嘗試同樣的爆破行為,發(fā)現(xiàn)這兩個地方?jīng)]有進行限制。我嘗試對我的賬號進行密碼找回(因為 Facebook有規(guī)定不能對其他用戶的賬號進行破壞),并且成功的重置了我的密碼。
漏洞驗證視頻
在視頻中你可以看到,我能夠通過爆破發(fā)送給你的驗證碼來對你的密碼進行重置。
攻擊向量
POST /recover/as/code/ HTTP/1.1
Host: beta.facebook.com
lsd=AVoywo13&n=XXXXX
n參數(shù)為驗證碼的值,對這個參數(shù)進行爆破就能重置任意用戶的密碼。
最后想說一下:很簡單的一個漏洞就能控制所有用戶的賬號,并且Facebook卻給予了高額的獎金,足以說明該公司對安全的重視程度。這個漏洞是因為安全防范沒有統(tǒng)一造成的,通過統(tǒng)一入口點可能可以減少這種漏洞發(fā)生的概率,當(dāng)然統(tǒng)一入口點也會帶來其他的問題,這些都需要開發(fā)者進行深度的考量,只有這樣才能將安全做到最極致。