鄭昀 建立於2014-01-12;html
最後更新於2014-01-13.shell
找回密碼功能是漏洞傳統重災區,下面列出兩個經典錯誤點,請引覺得戒吧Web開發工程師們!安全
Web安全:服務器
一)覺得用戶不會抓包不會看源碼不會分析表單參數,HTML文檔和表單裏想寫啥就寫啥函數
1)某手網:測試
+手機App的忘記密碼功能:加密
首先,經過抓包分析,發現密碼重置接口能夠Web訪問;其次,填入手機號碼提交,服務器端的響應中竟然包含明文短信驗證碼,雖然是在JavaScript中的註釋裏;spa
補充案例:絕非個案。如第三方支付平臺支付通也幹過,http://www.wooyun.org/bugs/wooyun-2010-022378;走秀網幹過,http://www.wooyun.org/bugs/wooyun-2012-05630;.net
2)PPS:htm
+網頁版忘記密碼功能:
貼心地實現了「從新發送找回密碼郵件」功能;可是,不幸地在這個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》