0x00 腦圖#
0x01 用戶憑證暴力破解#
- 驗證碼的位數:4 or 6,有效時間:1min - 15min
- 驗證碼爆破防護繞過
- 純數字字典生成腳本
Copy
import itertools words = "0123456789" r = itertools.product(words, repeat=n) dic = open("", "a") for i in r: dic.write("".join(i)) dic.write("".join("\n")) dic.close()
0x02 返回憑證#
- url返回驗證碼及token
- 密碼找回憑證在頁面中
- 返回短信驗證碼
某app挖洞記錄:發送Request
,驗證碼回顯在Response
0x03 郵箱弱token#
- 時間戳的md5
- 用戶名
- 服務器時間
0x04 用戶憑證有效性#
- 短信驗證碼
獲取驗證碼,嘗試修改手機號;修改返回包中的手機號爲自己的手機號,嘗試獲取驗證碼 - 郵箱token
- 重置密碼token
0x05 重新綁定#
- 手機綁定
- 郵箱綁定
0x06 服務器驗證#
- 最終提交步驟
- 服務器驗證可控內容
- 服務器驗證邏輯是否爲空
某app挖洞記錄:未校驗驗證碼,憑據,用戶號碼的一致性,導致任意用戶密碼重置
0x07 用戶身份驗證#
- 賬號與手機號的綁定
- 賬號與郵箱賬號的綁定
0x08 找回步驟#
某網站挖洞記錄:找回密碼到了第二步,直接修改mobile參數,可跳過第一步短信驗證步驟
0x09 本地驗證#
- 在本地驗證服務器的返回信息,確定是否執行重置密碼,但是其返回信息是可控的內容,或者可以得到的內容
- 發送短信等驗證信息的動作在本地進行,可以通過修改返回包進行控制
Intercept Server Responses
添加規則如下:
0x10 注入#
0x11 token生成可控#
觀察重置密碼步驟數據包中字符串,是否和驗證身份步驟中的字符串相同。相同-->嘗試繞過驗證步驟,不同-->嘗試token可控。
0x12 註冊覆蓋#
註冊重複的用戶名
0x13 session覆蓋#
找回密碼到了郵箱驗證這一步驟,打開郵箱,不要在郵箱點擊重置密碼的鏈接,複製鏈接在同一瀏覽器打開