0x00 前言
一般的密碼重置的設計都是分為以下四步的:
-
1.輸入賬戶名
-
2.驗證身份
-
3.重置密碼
-
4.完成
-
復制代碼
通常漏洞是會存在於2或者3步驟中,下面來看看常見的一些重置密碼漏洞的方式。
0x01 爆破類型
1 這種重置密碼是最多見最容易出現的一類,那就是手機驗證碼爆破從而重置密碼。
這這種設計一般是在找回密碼的時候,會給指定的手機號發送一個用於驗證身份的驗證碼,然后只要用戶輸入正確的驗證碼,就可以進行密碼重置了。
這種設計產生重置密碼漏洞的情況,一般是由於驗證設計過於簡單,而且對校驗碼的校驗使用次數沒有進行限制,導致正確的驗證碼可以被枚舉爆破,從而重置密碼。此方法也是最常見的重置密碼的方式,因為大多數廠商最開始的設置都是采取的4-6位純數字驗證碼的驗證方式,而且是沒有防止爆破的設計。
2 也是采取的爆破,方法和#1類似,不過就是手機驗證碼變成了郵箱中的驗證碼。
這這種設計一般是在找回密碼的時候,會給指定郵箱發送一個用於校驗的url鏈接,鏈接中一般會有一個參數就是用於驗證身份的驗證碼,然后用戶點擊指定url就可以進入重置密碼的頁面從而去重置密碼了。
這種設計產生重置密碼漏洞的情況,也是由於重置密碼鏈接中的驗證碼參數沒有設計過於簡單,可以被爆破,從而可以重置密碼。
0x02 秒改類型
3 采取的方法是偷梁換柱,一般是那種會給指定郵箱發送url重置密碼鏈接的那種。
WooYun: 飛馬網系列之四任意用戶密碼重置漏洞(秒改非爆破)
這這種設計一般是在找回密碼的時候,會給指定郵箱發送一個用於校驗的url鏈接,鏈接中一般肯定會存在2個比較重要的參數,一個是用戶名(或者uid、qq郵箱之類的能代表用戶身份的參數),另一個就是一個加密的字符串(通過服務器端的某種算法生成的用來驗證用戶身份的參數)。然后用戶在重置密碼的時候,點擊郵箱中的重置密碼鏈接,就可以重置帳號密碼了。
這種設計產生重置密碼漏洞的情況,一般是由於重置密碼鏈接中的表示用戶名的參數和用於校驗的加密字符串參數沒有進行一一對應,導致可以被黑客偷梁換柱,從而重置密碼。
也就是說,那個驗證身份的加密字符串是萬能的。
比如生成的重置密碼url為:http://www.xx.com/xxoo.php?username=wooyun1&code=asdfghjkl 然后由於這里的參數code在服務器端驗證的時候,只要其自身的算法滿足服務器端的驗證就直接通過了,不會去驗證這個code是不是和wooyun1賬戶對應的。
從而,黑客可以直接利用url:http://www.xx.com/xxoo.php?username=wooyun2&code=asdfghjkl 重置帳號wooyun2的密碼。
4 同樣是偷梁換柱,這種一般是在最后一步設置新密碼的時候,程序員往往會疏忽驗證用戶身份,從而被偷梁換柱,重置密碼。這種一般是由於前面2步驟中已經驗證了身份,然后3步驟重置密碼的時候沒有對用戶身份進行持續性的驗證導致的。
WooYun: 某同志手機交友應用200W用戶密碼任意重置(可拐走別人男友)
5 有的時候雖然加密字符串的算法很復雜,但是在重置密碼的過程中,要是程序員自己不小心將其泄漏了,那也可以被重置密碼。這種屬於程序員自己沒有將開發調試時候的一些數據在正式上線前去掉導致的。
WooYun: APP終結者11#大連萬達電影任意用戶賬戶登錄
6 有的時候利用郵箱的url重置密碼,雖然不存在#3 #4 #5的情況。但是由於加密算法過於簡單而被破解,導致密碼重置。這種一般都是一些簡單的加密算法,將一些關鍵參數比如用戶名、郵箱、手機號、驗證字符、時間戳等,進行一定的規則的組合然后進行md5、base64加密。
WooYun: djcc舞曲網任意用戶密碼重置漏洞(已證明)
7 重置密碼一般需要四個步驟:1.輸入賬戶名2.驗證身份3.重置密碼4.完成。
有時候當你進行了1之后,直接去修改URL或者前端代碼去進行3步驟從而也能成功的繞過了2的驗證去重置密碼。這種一般是由於沒有對關鍵的身份驗證的參數進行追蹤導致的。
8 有時候修改密碼的時候會給郵箱或者手機發送一個新密碼,那么抓包將手機號或者郵箱改成我們自己的會怎么樣呢?這種一般是由於沒有驗證手機號或者郵箱的對應身份導致的。
0x03 需要別人交互
9 有的時候CSRF利用好的話,也可以重置用戶甚至是管理員的密碼。這種一般是由於登錄帳號后重置密碼或者綁定郵箱、手機號的時候沒有token也沒有驗證refer導致的。
WooYun: 看我如重置暴風影音賬戶密碼(需要與用戶互交)
10 有時候XSS漏洞也可以重置密碼,當然這種也是因為本身重置密碼這里就有其他的設計缺陷。這種一般是用XSS劫持了賬戶后,由於某些奇怪的設計造成的。
WooYun: pptv視頻上傳審核通過后儲存型xss(百余條用戶信息可利用有vip可改密碼劫持)
通過了解以上10種常見的重置密碼的漏洞,你是不是也感覺收獲了蠻多的額。