支付寶Cookie高危漏洞引發的思考
背景:當時我在做公司的網站支付接入,在調試支付寶WAP支付時,發現一些匪夷所思的事情:
1、我想要切換賬號時退到需要輸入登錄信息時,原賬號并沒有退出,我按一下后退鍵又回來了;
2、我關閉瀏覽器也沒有退出賬號,整個調試過程有差不多一個星期只登錄過一次,可以認為登錄的賬號是無法退出的,除非成功另外一個賬號;
由此,我開始懷疑,支付寶WAP支付接口的Cookie有問題,應該是為了方便性設定存了很久時間。
于是我打開用Firebug的Cookie頁面一探究竟,我對其中一條名為 ALIPAY_WAP_CASHIER_COOKIE 的Cookie產生的興趣,就是下圖紅色箭頭所指的那一條,這是一條64個只含大寫字母和數字的字符串,有經驗的人都會知道,這一般就是哈希算法產生的密文(可能是MD5、SHA等的組合吧);
我抱著試一試的心態,我在隔壁同事的電腦打開了支付寶的WAP支付頁,然后把這條Cookie復制到了過去,奇跡果然產生了,我的賬號直接在他那里登錄成功了,不用輸登錄密碼也不需要手機號碼短信認證。就是下圖這個樣子。
到這里,能看到的隱患就是黑客通過把木馬安裝在店家的WIFI,用來竊取Cookie信息,把上述這個Cookie拿走,然后慢慢試錯,直到把6位密碼破解出來(6位密碼可以算是弱口令了),如果采集的Cookie比較多,能暴力破解成功還是可以考慮的。
然而還有一種更恐怖的攻擊方法,注意到這條Cookie是 64個只含大寫字母和數字的字符串,也就基本可以斷定這個是哈希算法加密的,而對于那些有豐富經驗的黑客來說,簡單哈希加密的密文跟明文沒有太大區別,不信你可以看看 這個網站,兩到三級的哈希加密基本都能被查出來,而這已經是公開的技術了,私密的民間高手技術有多高可以想象了吧。他們只需要用幾個賬號在支付寶網站生成幾個這種Cookie,然后還原出加密方法。他們能做的有兩件事:
1、使用大批量賬號,可能達到數百萬級別,自動生成Cookie然后偽造登錄,暴力破解密碼。雖然每個賬號在三次試錯機會中能撞對的概論很小很小,但他們可以延長試錯時間,而且基數這么大,成功的機會還是很多的。
2、第二個利用方法雖然沒有直接經濟效益,但卻可以讓整個支付寶系統陷入癱瘓。因為支付寶密碼輸入錯誤超過3次就會賬號被凍結,可以想象數千萬甚至上億的支付寶賬號被凍結能給阿里帶來多大的沖擊嗎?這種攻擊最受益的應該是阿里的競爭對手們吧。
因為此危害十分大,因此我通過烏云報告給阿里巴巴,然而在經過了一個星期的漫長審核后,它給了這樣一個答復
呵呵。。。
然而當我放完國慶長假回來,再次打開支付寶的WAP頁,卻發現這個Cookie漏洞被修復了,已經沒有了幾條可能有問題的Cookie!!!
烏云平臺里的廠商規則里有這樣一條嚴禁行為:“a)消極處理安全問題包括不負責任的 評估安全問題的嚴重性和后果,忽略后又悄悄修復等”。因此我多次用郵件以及微博的方式同烏云溝通,要求嚴肅處理此事情,不要傷害小白帽(以后可能要成黑帽 子了)的一片心思。然而并沒有得到什么有實際意義的答復。
前段時間看的一篇文章《一個iOS漏洞值多少錢?》,里面有這樣一句話“大多數白帽子對于蘋果這種高冷的行為感到受傷,從高雪峰苦笑的臉上似乎也找到同樣的答案。”。同樣,我也對阿里巴巴以及烏云的這種行為感到受傷。
既然漏洞已經修復了,烏云不肯公開,我就在博客園里給大家攤開來說吧,僅以拋磚引玉,望各位前輩多多指教。