任意使用者密碼重置(五):重置憑證可暴破

FLy_鵬程萬里發表於2018-06-06

前言

在邏輯漏洞中,任意使用者密碼重置最為常見,可能出現在新使用者註冊頁面,也可能是使用者登入後重置密碼的頁面,或者使用者忘記密碼時的密碼找回頁面,其中,密碼找回功能是重災區。我把日常滲透過程中遇到的案例作了漏洞成因分析,這次,關注因重置憑證可暴破導致的任意使用者密碼重置問題。

密碼找回需要鑑別使用者的合法身份,證明你就是你,通常有兩種做法,一是網站將重置驗證碼發至使用者繫結的郵箱或手機號,使用者持重置驗證碼證明你就是你,二是使用者輸入密碼保護問題對應的答案。其中,驗證碼、密保答案就是重置密碼的重要憑證。有些網站生成四位數字的重置驗證碼,複雜度較低,[0000, 9999] 也就一萬種組合,在如今的計算能力和網路頻寬條件下,順手的工具三五分鐘的功夫就能列舉完。如果服務端又未設定驗證碼的存活有效期、未限制高頻訪問,那麼極易暴破。

案例一

密碼找回頁面 http://www.xxxx.com/find-pw.html 用攻擊者賬號 13908081024 進入密碼找回全流程,輸入圖片驗證碼、選擇手機找回、獲取簡訊驗證碼,發現簡訊驗證碼為 4 位數字且簡訊內容上未看到有效期資訊,所以,可暴破簡訊驗證碼,進行後續的重置流程。

用賬號列舉漏洞遍歷得到的普通手機號 13908093346 為例,進入密碼找回流程,提交簡訊驗證碼:


其中,1234 是我隨便輸入的錯誤的簡訊驗證碼,需要對 code 引數值進行暴破以找出正確的簡訊驗證碼。

具體而言,我將該請求中的 code 引數值定義為列舉變數、以 [0000, 9999] 為字典,設定 32 個執行緒進行暴破:


很快暴出簡訊驗證碼為 6909:


提交簡訊驗證碼後順利進入新密碼設定頁面,重置密碼設為 PenTest1024 後提交,服務端返回“修改成功”:


嘗試用 13908093346/PenTest1024 登入,驗證成功:


案例二

密碼找回頁面 http://xx.xxxx.com/xxxx/findpassword 用攻擊者賬號 13908081024 進入密碼找回全流程,輸入圖片驗證碼、選擇手機找回、獲取簡訊驗證碼,發現簡訊驗證碼為 4 位數字且簡訊內容上未告知有效期,所以,可暴破簡訊驗證碼,進行後續的重置流程。

用使用者名稱列舉得到的普通手機號 15012804897 為例,進入密碼找回流程,提交簡訊驗證碼:


其中,1234 是我隨便輸入的錯誤的簡訊驗證碼,需要對 auto 引數進行暴破以找出正確的簡訊驗證碼:


很快暴出簡訊驗證碼為 9997,輸入後進入新密碼提交頁面,重置密碼為 PenTest1024 後提交:



嘗試用 15012804897/PenTest1024 登入,驗證成功:


加固措施

密碼重置憑證強度提高,建議六位數字,有效期十分鐘,並且驗證碼應校驗一次後立即作廢。另外,服務端應限制列舉等惡意請求。


相關文章