1. 程式人生 > >安全測試之忘記密碼存在的問題

安全測試之忘記密碼存在的問題

忘記密碼這個功能相對於登入功能來說,是比較容易忽略的,因為大家可能覺得忘記密碼(找回密碼)比較簡單,大多數的思路便是通過使用者名稱、手機、郵件等找回密碼,其實這個功能還是存在很多可以攻擊的地方,也是比較容易出現安全問題的。

第一類:沒有使用加密手段

場景一:直接擷取手機驗證碼
某網站的忘記密碼功能是通過手機號碼找回,我輸入自己的手機號碼,點擊發送重置密碼簡訊之後,我檢視原始碼(或者通過擷取post請求),發現驗證碼存在原始碼網頁上(或者擷取到的post請求可以檢視),而且還沒有進行加密(就是因為沒有進行加密,才方便於聯想到它是驗證碼,也方便重新將驗證碼輸入後重置密碼),於是我就可以輸入其他人的手機號碼,這樣通過擷取資訊就可以獲取相應的驗證碼,進而可以重置這個使用者的密碼資訊。

場景二:擷取資料將手機號換成自己的,驗證碼直接傳送到自己手機上
假設有這樣一個網站,重置密碼頁面由使用者名稱、手機號碼和驗證碼組成,這個頁面中如果輸入一個已存在的使用者,手機號碼會自動生成,但是會把中間4位使用*號代替(這是一個漏洞,將兩個校驗簡化成了一個校驗)。

某人可以通過暴力破解的方式查詢到一個存在的使用者名稱,然後自動生成了一個帶有*的手機號碼,我輸入驗證碼後點擊重置密碼按鈕,同時進行抓包擷取這個請求,然後分析結果發現,post請求中有沒有加密的手機號碼,11位全部可以讀取(是明文的),手機明文也是一個問題。

我完全可以將手機號碼換成我自己的,然後重新把這個包發出去,這樣簡訊就會發送到我的手機上,簡訊中有了新密碼,我可以以其他人的身份去登入啦(現在好多網站會在簡訊中給你一個密碼,然後建議你去更改)。

第二類:過於信任MD5加密

MD5加密可以預防一些安全問題,但是不得不承認,它也是一些安全問題的源泉。

下面的兩個例子都是發現重置郵件中的連結,雖然進行了MD5加密,但是具有規律性。

場景一:
某網站的重置密碼是通過傳送郵件的方式,可能我通過使用自己的郵件重置密碼,在收到的郵件中發現郵件中的連結是使用id和id的MD5加密過後的字串組合而成,如果發現了這個規律,就可以通過以下操作:

通過暴力破解查詢到已存在的使用者名稱,然後使用暴力破解重置密碼連結(即使你沒有收到這個郵件,因為郵件中唯一標識是由id組成,id一般是使用者的id,使用者數量是一定的,可以不斷增大id值來暴力破解),這樣就可以重置別人的賬號資訊。

場景二:
某網站的重置密碼是通過傳送郵件的方式,可能我通過使用自己的郵件重置密碼,在收到的郵件中發現郵件中的連結是username的MD5加密後的字串,發現了規律,我想會不會有一個叫做admin的管理員使用者呢,於是試試的心態開啟將admin使用MD5加密後的連結,竟然重置成功後使用admin登入進去了,

哇哦哦,這可是管理員的賬號啊!!

第三類:直接暴力破解

1.暴力破解,主要使用窮舉法。

2.組合破解,使用MD5加密後暴力破解或者綜合技術等等。


小方案:
提問:現在有的網站有登入、訪問的限制,對次數有限制要求,那怎麼使用暴力破解呢?
解答:設定傳送包的時間,還有就是要使用變換IP的工具,網上比較多。


注:
本篇博文主要是供學習使用,不作其他用途。