鄭昀 創建於2014-01-12;
最后更新於2014-01-13.
找回密碼功能是漏洞傳統重災區,下面列出兩個經典錯誤點,請引以為戒吧Web開發工程師們!
- Web安全:
- 一)以為用戶不會抓包不會看源碼不會分析表單參數,HTML文檔和表單里想寫啥就寫啥
- 1)某手網:
- +手機App的忘記密碼功能:
- 首先,通過抓包分析,發現密碼重置接口可以Web訪問;其次,填入手機號碼提交,服務器端的響應中居然包含明文短信驗證碼,雖然是在JavaScript中的注釋里;

- 補充案例:絕非個案。如第三方支付平台支付通也干過,http://www.wooyun.org/bugs/wooyun-2010-022378;走秀網干過,http://www.wooyun.org/bugs/wooyun-2012-05630;
- 2)PPS:
- +網頁版忘記密碼功能:
- 貼心地實現了“重新發送找回密碼郵件”功能;但是,不幸地在這個GET請求的URL里,目標email參數是明文的;從而可以將任意用戶的密碼重置郵件發給指定郵箱;


- 3)新網互聯:
- +網頁版忘記密碼功能:
- 頁面雖然展示的是星號遮擋的郵箱地址,但HTML文檔構造的表單參數里卻使用郵箱明文,最終導致土豆網域名被劫持;



- 4)搜狐:
- +網頁版找回密碼功能:
- 找回密碼時要回答“密碼提示問題”;但是工程師把答案明文寫在 textarea 控件的JS校驗函數里了,導致可以重置任意搜狐用戶密碼;

- 二)把MD5(key)加密當成神器,殊不知在MD5爆破庫面前等於說明文傳遞
- 1)奇虎360:
- +網頁版找回密碼功能:
- 360的找回密碼郵件里,重設密碼地址格式為:http://i.360.cn/findpwd/setpwdfromemail?vc=%一個MD5加密串%&u=blabla%40gmail.com;
- 利用MD5爆破庫逆向解密后發現,這個MD5加密串是一個類似於1339744000的數字,很像是UNIX時間戳;
- 白帽子進一步驗證后猜測,用戶找回密碼時,系統將此時的UNIX時間戳,與帳號綁定,記錄在密碼重置隊列里,修改該用戶的密碼時會驗證輸入的vc參數;
- 看似合理,但360工程師忽略了一個細節:假如這個時間戳是新生成的,攻擊者就能在一定時間段內進行暴力破解,給定任意郵箱,很快就能算出一個有效的重置密碼鏈接;

- 2)某牛網:
- +注冊激活郵件功能:
- 注冊某牛網后,系統發的注冊郵件里,激活URL里id參數實際上是用戶的userid,str參數則是MD5(id)加密串,如下圖所示;
- 這樣能注冊任意郵箱並激活,或遍歷所有整數id激活;


- 補充案例:絕非個案。中國郵政旗下某站點的找回密碼也這么銷魂過,http://www.wooyun.org/bugs/wooyun-2013-039383;
參考資源:
1,2011,陳皓,
你會做Web上的用戶登錄功能嗎?;
2,2013,烏雲知識庫,
密碼找回功能可能存在的問題;
3,2013,鄭昀,
Web開發基本准則-55實錄-Web訪問安全。
-over-
馬年繼續贈圖幾枚:
不要在地毯上剎車啊
讓老板以為你在上班的神器:
http://targetkiller.net/hackertyper/index.html
通病啊通病:『據一位騰訊電商的前產品經理透露,騰訊電商的產品經理、工程師更執着於測試網購流程、響應速度等,希望能夠減少步驟提升體驗,卻忽略了需要 更強大技術支持的供應鏈、物流等業務體系。』注意力過於集中於C而不是B和I——《騰訊電商門前摔了一跤:“QQ+”模式失效
http://t.cn/8FhPSQv》
