任意用户密码重置(一):重置凭证泄漏
在邏輯漏洞中,任意用戶密碼重置最為常見,可能出現(xiàn)在新用戶注冊頁面,也可能是用戶登錄后重置密碼的頁面,或者用戶忘記密碼時(shí)的密碼找回頁面。其中,密碼找回功能是重災(zāi)區(qū)。我把日常滲透過程中遇到的案例作了漏洞成因分析,這次,關(guān)注因重置憑證泄漏導(dǎo)致的任意用戶密碼重置問題。
案例一
用郵件找回密碼時(shí),作為重置憑證的驗(yàn)證碼在 HTTP 應(yīng)答中下發(fā)客戶端,抓包后可輕易獲取。先用攻擊者賬號(hào)走一次密碼找回流程,測試賬號(hào) yangyangwithgnu@yeah.net 選用郵箱找回密碼:
點(diǎn)擊獲取校驗(yàn)碼后抓取如下應(yīng)答:
其中,VFCode 從字面理解很可能是校驗(yàn)碼。登錄郵箱查看網(wǎng)站發(fā)過來的密碼找回郵件:
發(fā)現(xiàn)兩者一致,那么,幾乎可以確認(rèn)服務(wù)端將密碼找回的校驗(yàn)碼泄漏至客戶端,可導(dǎo)致任意賬號(hào)密碼重置問題。
嘗試找回普通賬號(hào)的密碼。密碼找回首頁輸入郵箱后,系統(tǒng)將立即校驗(yàn)該郵箱是否注冊:
將 UName 參數(shù)定義為枚舉變量,以常見 qq 郵箱作為字典,可枚舉出多個(gè)有效郵箱:
以 chenwei@qq.com 為例,在應(yīng)答包中找到校驗(yàn)碼,成功將其密碼重置為 PenTest1024,驗(yàn)證可登錄:
嘗試找回管理員賬號(hào)的密碼。從該網(wǎng)站的域名注冊信息中找到聯(lián)系人的郵箱為 fishliu@xxxx.cn,可推測后臺(tái)用戶的郵箱后綴為 @xxxx.cn,所以,用常見后臺(tái)用戶名簡單調(diào)整可構(gòu)造出后臺(tái)用戶郵箱字典,枚舉出大量后臺(tái)用戶:
同理可重置這些后臺(tái)用戶的賬號(hào)密碼,為避免影響業(yè)務(wù),不再實(shí)際操作。
案例二
用郵件找回密碼時(shí),帶憑證的重置鏈接泄漏至客戶端,抓捕可獲取。用攻擊者賬號(hào)走一次密碼找回流程。在找回密碼頁面輸入攻擊者賬號(hào)及其郵箱(yangyangwithgnu、yangyangwithgnu@yeah.net)后提交:
攔截如下應(yīng)答:
顯然是個(gè)重定向,isVerify、PassPhrase 這兩個(gè)參數(shù)很可疑,后續(xù)交互中應(yīng)留意,先放包,進(jìn)入發(fā)送重置郵件的頁面,輸入驗(yàn)證碼后提交。登錄攻擊者郵箱查看重置郵件:
這個(gè)帶 token 的重置鏈接似曾相識(shí),對,就是前面抓包獲取的 token 信息,比對看下:
forgotPwdEa.php?isVerify=eWFuZ3lhbmd3aXRoZ251fHlhbmd5YW5nd2l0aGdudUB5ZWFoLm5ldHw2MzQyNDkw&PassPhrase=01e4f6d4ede81b2604dc320bc4e3a6e8
forgotPwdEc.php?isVerify=eWFuZ3lhbmd3aXRoZ251fHlhbmd5YW5nd2l0aGdudUB5ZWFoLm5ldHw2MzQyNDkw&PassPhrase=01e4f6d4ede81b2604dc320bc4e3a6e8
唯一區(qū)別 forgotPwdEa 和 forgotPwdEc兩個(gè)文件名。
接下來驗(yàn)證通過服務(wù)端泄漏的 token 能否重置普通用戶的賬號(hào)密碼。從重置流程可知,要重置密碼必須提供用戶名及其郵箱(或手機(jī)號(hào))。
獲取有效用戶名。注冊頁面中,輸入用戶名后立即校驗(yàn)該用戶名是否被占用:
對應(yīng)請求、應(yīng)答如下:
用戶名已存在返回 failed,不存在返回 ok。以此特征,用常見國人姓名字典,可枚舉出大量有效用戶名(如 chenchuan、chenanqi、chenanxiu、zhangfeng 等等),存為 username.txt。
獲取有效用戶名對應(yīng)郵箱。密碼找回首頁提交的請求中,user_name 與 email 參數(shù)匹配情況下,HTTP 應(yīng)答代碼為 302,交互包如下:
可以此特征枚舉有效用戶名及其郵箱。現(xiàn)在考慮如何制作郵箱字典?很多用戶喜歡用用戶名注冊 qq 郵箱,換言之,用戶名 yangyangwithgnu 可能對應(yīng)郵箱 yangyangwithgnu@qq.com。所以,用前面已經(jīng)獲取有效用戶名字典 username.txt 快速制作了郵箱字典 qq-email.txt,其中,username.txt 與 qq-email.txt 逐行對應(yīng)。
例如,前者第一行為 yangyangwithgnu、后者第一行為 yangyangwithgnu@qq.com。將上面的數(shù)據(jù)包放入 burp 的 intrduer 中,攻擊類型選 pitchfork、user_name 的參數(shù)值定義為枚舉變量 1 并加載字典 username.txt、email 的參數(shù)值定義為枚舉變量 2 并加載字典 qq-email.txt,可枚舉出大量有效用戶名/郵箱信息,如,zhangfeng/zhangfeng@qq.com、chenchuan/chenchuan@qq.com 等等。
用普通賬號(hào) chenchuan/chenchuan@qq.com 演示密碼重置漏洞。輸入用戶名、密碼提交,正常完成密碼找回邏輯,從交互包中獲取服務(wù)端下發(fā)的重置 token:
isVerify=Y2hlbmNodWFufGNoZW5jaHVhbkBxcS5jb218MTE2MDIzNw==&PassPhrase=cbf0160662358808f3586868f041cbaa
拼裝為重置鏈接 http://www.xxxx.com/user/forgotPwdEc.php?isVerify=Y2hlbmNodWFufGNoZW5jaHVhbkBxcS5jb218MTE2MDIzNw==&PassPhrase=cbf0160662358808f3586868f041cbaa ,訪問之,即可進(jìn)入密碼重置頁面:
輸入新密碼PenTest1024 后系統(tǒng)提示修改成功。用 chenchuan/PenTest1024 成功登錄:
防御措施上,密碼找回的憑證切勿下發(fā)客戶端,另外,校驗(yàn)郵箱是否有效應(yīng)添加圖片驗(yàn)證碼,以防止關(guān)鍵參數(shù)被枚舉。
本文原創(chuàng)作者:yangyangwithgnu 轉(zhuǎn)自 www.freebuf.com
總結(jié)
以上是生活随笔為你收集整理的任意用户密码重置(一):重置凭证泄漏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: click group list in
- 下一篇: 小天才z5和z6的区别