密碼找回中的套路
首先這不是一篇總結(jié)性的帖子,畢竟對(duì)于密碼找回的測(cè)試方法網(wǎng)絡(luò)上有比較全面的總結(jié),比如用戶憑證暴力破解,系統(tǒng)返回了重要的憑證,郵箱手機(jī)弱token,token通用,session覆蓋,用戶憑證有效期問題,憑證算法被破解,前端校驗(yàn)等等一系列漏洞。在這里附上前輩總結(jié)的腦圖,總結(jié)的也是比較詳細(xì)了。在日常的授權(quán)測(cè)試以及論 壇瞎逛中,發(fā)現(xiàn)了一些對(duì)于個(gè)人而言比較有意思的找回密碼的操作,獨(dú)樂樂不如眾樂樂,分享出來(lái)希望能幫到各位師傅。
有些人認(rèn)為HTTP的聯(lián)機(jī)就是靠包里的HOST header來(lái)連接的,所以會(huì)認(rèn)為如果修改掉包里的HOST, 那么就連接不到目標(biāo)服務(wù)器,所以是不可控的。其實(shí)HTTP的聯(lián)機(jī)與包里的HOST并沒有啥關(guān)系, HTTP的聯(lián)機(jī)是TCP/IP建立的, 所以修改掉HOST HEADER并不會(huì)把包丟到另外一個(gè)服務(wù)器上。
所以當(dāng)應(yīng)用使用$_SERVER['HTTP_HOST']獲取網(wǎng)站URL并拼接到找回密碼的鏈接當(dāng)中就會(huì)產(chǎn)生漏洞。當(dāng)你使用網(wǎng)站密碼重置功能時(shí),網(wǎng)站URL可能在將來(lái)會(huì)改變,所以要?jiǎng)討B(tài)地生成一個(gè)郵箱找回密碼的鏈接來(lái)匹配服務(wù)器的URL。這個(gè)時(shí)候可能就會(huì)使用$_SERVER['HTTP_HOST'],Host header 是客戶端提供的,意味著攻擊者可以將他們自己的網(wǎng)址寫到重置密碼的郵件當(dāng)中,威脅任意用戶的賬戶安全。通過 X-Forwarded-Host 來(lái)拼接找回密碼鏈接中的域名,這樣可以通過寫入自己控制的域名,然后通過訪問記錄發(fā)現(xiàn)找回密碼鏈接,在拼接回正確域名重置任意用戶密碼。
利用條件是受害者必須要點(diǎn)擊重置鏈接,你才能從你控制的網(wǎng)站中通過訪問記錄查看到重置鏈接。
舉個(gè)kackerone的例子:
Mavenlink允許用戶注冊(cè)一個(gè)mavenlink.com的子域名去展示他們的內(nèi)容,所以他們需要一個(gè)方法去動(dòng)態(tài)地決定公司的子域名。
host header 可以設(shè)置為mavenlink.com的任意子域名,但是從mavenlink.com更改域名將會(huì)返回一個(gè)錯(cuò)誤,而不是發(fā)送一個(gè)郵件。
添加一個(gè)隨機(jī)的mavenlink.com的子域名,但是這會(huì)被定向到正確的頁(yè)面,沒辦法插入自己的域名。
測(cè)試特殊字符。服務(wù)器接受host header中的一個(gè)問號(hào),生成下面的鏈接Host: example.com?.mavenlink.com這樣就可以從用戶郵件中盜取密碼重置token當(dāng)然這里還涉及到了域名檢測(cè)的繞過問題,一旦用戶點(diǎn)擊該鏈接,我們?cè)趀xample.com即可獲取到重置鏈接信息
在給后端傳遞要發(fā)送驗(yàn)證鏈接的郵箱或者手機(jī)號(hào)時(shí),可以傳遞一個(gè)郵箱或者手機(jī)的集合,然后只要第一個(gè)郵箱或者手機(jī)號(hào)是數(shù)據(jù)庫(kù)里存在的郵箱或者手機(jī)號(hào),那么 將會(huì)向這批手機(jī)號(hào)或者郵箱發(fā)送一樣的鏈接信息團(tuán)隊(duì)測(cè)試中遇到的例子:在hackerone披露的漏洞中同樣存在這樣的例子,通過發(fā)送兩個(gè)郵箱,一個(gè)為受害者的郵箱,一個(gè)為自己控制的郵箱,這樣就可以竊取到受害者郵箱中的重置密碼的鏈接,達(dá)到任意用戶密碼重置的目的。由于沒有看到過這種觸發(fā)該漏洞的源碼,猜測(cè)驗(yàn)證環(huán)節(jié)是允許獲取一個(gè)類似于集合的東西,遍歷其中的值是否有存在于數(shù)據(jù)庫(kù)中的值,如果存在則對(duì)該集合放行,然后發(fā)送驗(yàn)證信息的邏輯同樣允許傳入一個(gè)集合再去遍歷集合中的每一個(gè)值,對(duì)每一個(gè)值發(fā)送一樣的驗(yàn)證鏈接
由于sql語(yǔ)句的拼接問題導(dǎo)致在手機(jī)號(hào)處存在sql注入問題,其實(shí)這也告訴我們?cè)趕ql語(yǔ)句的執(zhí)行中只要涉及到了拼接問題就有可能存在漏洞,在團(tuán)隊(duì)授權(quán)的測(cè)試中也遇到過更改日期處存在sql注入的例子,反正都挺好玩的。這里用了一個(gè)sqrt函數(shù),sqrt為一個(gè)平方根計(jì)算函數(shù),當(dāng)經(jīng)過平方根計(jì)算之后和前面的數(shù)字拼接,手機(jī)號(hào)存在于數(shù)據(jù)庫(kù)中則發(fā)送驗(yàn)證碼如果經(jīng)過計(jì)算和前面的數(shù)字拼接手機(jī)號(hào)不存在于數(shù)據(jù)庫(kù)中則顯示驗(yàn)證碼發(fā)送失敗通過這種方式來(lái)進(jìn)行數(shù)據(jù)庫(kù)相關(guān)信息的猜測(cè)
這種邏輯漏洞總是在攻與防的斗爭(zhēng)中不斷前進(jìn),肯定會(huì)有腦洞大開的人發(fā)現(xiàn)更多的騷套路,這是目前在測(cè)試中遇到過的幾種比較有意思的任意用戶密碼重置漏洞的操作,在互聯(lián)網(wǎng)上能找到例子的盡量采用了互聯(lián)網(wǎng)例子,如有侵權(quán)地方還望告知。
聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)
送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)
需注明出處:新網(wǎng)idc知識(shí)百科