1. 程式人生 > >任意用戶密碼重置(四):重置憑證未校驗

任意用戶密碼重置(四):重置憑證未校驗

更多 key 得到 col word xxxx reset div chinese

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

傳送門:

任意用戶密碼重置(一):重置憑證泄漏

任意用戶密碼重置(二):重置憑證接收端可篡改

任意用戶密碼重置(三):用戶混淆

密碼找回需要鑒別用戶的合法身份,證明你就是你,通常有兩種做法,一是網站將重置驗證碼發至用戶綁定的郵箱或手機號,用戶持重置驗證碼證明你就是你,二是用戶輸入密碼保護問題對應的答案。其中,驗證碼、密保答案就是重置密碼的重要憑證。

在日常對密碼找回功能的攻擊中,我的大部份精力聚焦在是否可以暴破驗證碼、是否可以劫持接收驗證碼的手機號或郵箱、是否可以混淆重置其他賬號、是否可以繞過驗證步驟、甚至是猜測重置 token 的生成規律等攻擊方式上,反而忽略了最容易、最低技術含量的一種方式——服務端未校驗重置憑證。換言之,不論你輸入的重置驗證碼或密保答案是否正確,只要請求格式無誤,均可成功重置任意賬號密碼。我舉兩個真實案例(漏洞均已修復,就不打碼了),你感受下。

案例一:因服務端未校驗 token 導致可重置任意賬號密碼

密碼找回頁面 http://www.omegatravel.net/users/retrievePassword/ 用攻擊者賬號 [email protected] 進入密碼找回全流程,輸入圖片驗證碼後提交:

技術分享圖片

隨後收到帶 token 的密碼重置鏈接的郵件:

技術分享圖片

其中,key:FqvICT 和 userEmail:[email protected] 引起了我的註意。正常來說,提交該 URL 後,服務端會校驗 key 與 userEmail 是否匹配,若匹配則進入提交新密碼頁面,若不匹配則報錯。現在,我嘗試將 key 從 FqvICT 改為 xxxxxx 後再訪問,本來心理預期將看到報錯頁面,沒想到進入了新密碼提交頁面,難倒所謂的重置 token 僅僅是個擺設?

趕緊找個賬號試試,就拿信息收集時找到的 [email protected] 為例(更多後臺賬號見後文)。參照前面收到的重置鏈接格式,簡單拼裝為 http://www.omegatravel.net/users/retrievePasswordReset/key:xxxxxx/userEmail:[email protected],是滴,key 的值我隨便寫的,訪問看看,哇,居然真的進入了新密碼提交頁面:

技術分享圖片

輸入新密碼 PenTest1024 後提交,網站提示“修改密碼成功”。嘗試用 [email protected]/PenTest1024 登錄,成功進入系統:

技術分享圖片

如何獲取其他賬號?從註冊頁面可知,該網站只能用郵箱註冊,郵箱即賬號。我關心普通用戶和內部員工用戶兩類賬號(即郵箱)。普通用戶的郵箱字典方面,把國人常見姓名拼音 top500 結合常見郵箱後綴(@qq.com、@163.com 等等)快速生成個簡單郵箱字典;內部員工的郵箱方面,我從該網站域名註冊信息查詢到聯系人為 [email protected],說明該公司使用 @omegauk.net 的郵箱後綴,同上,把國人常見姓名拼音 top500、常見後臺賬號,結合 @omegauk.net 郵箱後綴,快速生郵箱字典;另外,從“聯系我們”、“誠聘英才”、“公司簡介”等頁面找到大量內部員工郵箱和合作夥伴郵箱,如 [email protected][email protected] 等等:

技術分享圖片

將以上幾類郵箱字典存為 mail.txt 也就是用戶名。

這樣,我不僅可以重置普通賬號的密碼,還能劫持大量內部員工、合作夥伴的賬號,為避免影響業務,不再實際操作。

案例二:可枚舉無密保的用戶名,導致任意密保答案均可重置密碼

在密碼找回頁面 http://www.hzpzs.net/u_findPassword.asp 輸入有效用戶名 yangyangwithgnu 後攔截請求包:

技術分享圖片

猜測該數據包用於用戶名有效性校驗,放至 repeater 中分析。

由於沒用圖片驗證碼,導致可枚舉有效用戶名,發現三類情況。一是,用戶名存在且設置過密保問題,應答類似:

技術分享圖片

二是,用戶名存在但未設置密保問題,應答類似:

技術分享圖片

三是,無效用戶名,則應答類似:

技術分享圖片

用常見用戶名和中國人姓名拼音作為字典進行枚舉,在所有結果中過濾顯示含有關鍵字 <td width=”65%”></td> 的應答,得到的所有 UserName 參數值即為未設置密保問題的用戶名。如:aaron、admin、adolph、alisa、chenchen、esther、jones 等等。

按正常流程,對 chenxin 進行密碼重置,輸入任意密保答案均可重置密碼:

技術分享圖片

本文原創作者:yangyangwithgnu 轉自 www.freebuf.com

任意用戶密碼重置(四):重置憑證未校驗