下面列舉10個(gè)攻擊:
1.AJAX中的跨站點(diǎn)腳本
前幾個(gè)月,人們發(fā)現(xiàn)了多種跨站點(diǎn)的腳本攻擊。在此類(lèi)攻擊中,受害者的包含信息的瀏覽器上會(huì)運(yùn)行來(lái)自特定網(wǎng)站的惡意JAVA腳本代碼。
Yamanner蠕蟲(chóng)就是一個(gè)最近的范例,它利用Yahoo郵件的AJAX調(diào)用中的跨站點(diǎn)腳本機(jī)會(huì)來(lái)攻擊受害者。另一個(gè)近期的范例就是Samy蠕蟲(chóng),它利
用MySpace.com的跨站點(diǎn)腳本漏洞來(lái)攻擊。AJAX在客戶(hù)端上運(yùn)行,它允許錯(cuò)誤書(shū)寫(xiě)的腳本被攻擊者利用。攻擊者能夠編寫(xiě)惡意鏈接來(lái)哄騙那些沒(méi)有準(zhǔn)
備的用戶(hù),讓他們用瀏覽器去訪問(wèn)特定的網(wǎng)頁(yè)。傳統(tǒng)應(yīng)用中也存在這樣的弱點(diǎn),但AJAX給它添加了更多可能的漏洞。例子, Yamanner蠕蟲(chóng)利用了Yahoo
Mail的AJAX的跨站腳本漏洞,Samy蠕蟲(chóng)利用了MySpace.com的跨站腳本漏洞。
2.XML中毒
很多Web2.0應(yīng)用中,XML傳輸在服務(wù)器和瀏覽器之間往復(fù)。網(wǎng)絡(luò)應(yīng)用接收來(lái)自AJAX客戶(hù)端的XML塊。這XML塊很可能染毒。多次將遞歸
負(fù)載應(yīng)用到產(chǎn)出相似的XML節(jié)點(diǎn),這樣的技術(shù)還并不普遍。如果機(jī)器的處理能力較弱,這將導(dǎo)致服務(wù)器拒絕服務(wù)。很多攻擊者還制作結(jié)構(gòu)錯(cuò)誤的XML文檔,這些
文檔會(huì)擾亂服務(wù)器上所使用的依賴(lài)剖析機(jī)制的邏輯。服務(wù)器端的剖析機(jī)制有兩種類(lèi)型,它們是SAX和DOM。網(wǎng)絡(luò)服務(wù)也使用相同的攻擊向量,這是因?yàn)榫W(wǎng)絡(luò)服務(wù)
接收SOAP消息,而SOAP就是XML消息。在應(yīng)用層大范圍地使用XMLs使攻擊者有更多的機(jī)會(huì)利用這個(gè)新的攻擊向量。
XML外部實(shí)體參照是能被攻擊者偽造的一個(gè)XML的屬性。這會(huì)使攻擊者能夠利用人意的文件或者TCP連接的缺陷。XML
schema中毒是另一個(gè)XML中毒的攻擊向量,它能夠改變執(zhí)行的流程。這個(gè)漏洞能幫助攻擊者獲得機(jī)密信息。攻擊者可以通過(guò)復(fù)制節(jié)點(diǎn)進(jìn)行DOS攻擊,或者生成不合法的XML導(dǎo)致服務(wù)器端邏輯的中斷。攻擊者也可以操縱外部實(shí)體,導(dǎo)致打開(kāi)任何文件或TCP連接端口。XML數(shù)據(jù)定義的中毒也可以導(dǎo)致運(yùn)行流程的改變,助攻擊者獲取機(jī)密信息。
3.惡意AJAX代碼的執(zhí)行
AJAX調(diào)用非常不易察覺(jué),終端用戶(hù)無(wú)法確定瀏覽器是否正在用XMLHTTP請(qǐng)求對(duì)象發(fā)出無(wú)記載的調(diào)用。瀏覽器發(fā)出AJAX調(diào)用給任意網(wǎng)站的時(shí)
候,該網(wǎng)站會(huì)對(duì)每個(gè)請(qǐng)求回應(yīng)以cookies。這將導(dǎo)致出現(xiàn)泄漏的潛在可能性。例如,約翰已經(jīng)登陸了他的銀行,并且通過(guò)了服務(wù)器認(rèn)證。完成認(rèn)證過(guò)程后,他
會(huì)得到一個(gè)會(huì)話
cookie。銀行的頁(yè)面中包含了很多關(guān)鍵信息。現(xiàn)在,他去瀏覽器他網(wǎng)頁(yè),并同時(shí)仍然保持銀行賬戶(hù)的登陸狀態(tài)。他可能會(huì)剛好訪問(wèn)一個(gè)攻擊者的網(wǎng)頁(yè),在這個(gè)
網(wǎng)頁(yè)上攻擊者寫(xiě)了不易被察覺(jué)的AJAX
代碼,這個(gè)代碼不用經(jīng)過(guò)約翰的同意,就能夠發(fā)出后臺(tái)調(diào)用給約翰的銀行網(wǎng)頁(yè),因而能夠從銀行頁(yè)面取得關(guān)鍵信息并且把這些信息發(fā)送到攻擊者的網(wǎng)站。這將導(dǎo)致機(jī)
密信息的泄漏甚至引發(fā)安全突破。AJAX
編碼可以在不為用戶(hù)所知的情形下運(yùn)行,假如用戶(hù)先登錄一個(gè)機(jī)密網(wǎng)站,機(jī)密網(wǎng)站返回一個(gè)會(huì)話cookie,然后用戶(hù)在沒(méi)有退出機(jī)密網(wǎng)站的情形下,訪問(wèn)攻擊者
的網(wǎng)站,攻擊者網(wǎng)頁(yè)上的AJAX編碼可以(通過(guò)這個(gè)會(huì)話cookie?)去訪問(wèn)機(jī)密網(wǎng)站上的網(wǎng)頁(yè),從而竊取用戶(hù)的機(jī)密信息。(注:這里的解釋有點(diǎn)含糊,理
論上講,瀏覽器不會(huì)把一個(gè)網(wǎng)站的會(huì)話cookie傳給另外一個(gè)網(wǎng)站的,即文中的這句“When the browser makes an AJAX
call to any Web site it replays cookies for each request. ”,不完全對(duì))
4.RSS/Atom 注入
這是一項(xiàng)新的web2.0攻擊。RSS反饋是人們?cè)陂T(mén)戶(hù)網(wǎng)站或者網(wǎng)絡(luò)應(yīng)用中共享信息的常用手段。網(wǎng)絡(luò)應(yīng)用接受這些反饋然后發(fā)送給客戶(hù)端的瀏覽器。人們可
以在該RSS反饋中插入文本的JavaScript來(lái)產(chǎn)生對(duì)用戶(hù)瀏覽器的攻擊。訪問(wèn)特定網(wǎng)站的終端用戶(hù)加載了帶有該RSS反饋的網(wǎng)頁(yè),這個(gè)腳本
就會(huì)運(yùn)行起來(lái)——它能夠往用戶(hù)的電腦中安裝軟件或者竊取cookies信息。這就是一個(gè)致命的客戶(hù)端攻擊。更糟糕的是,它可以變異。隨著RSS和ATOM
反饋成為網(wǎng)絡(luò)應(yīng)用中整合的組件,在服務(wù)器端將數(shù)據(jù)發(fā)布給終端用戶(hù)之前,過(guò)濾特定字符是非常必要的。攻擊者可以在RSS
feeds里注入Javascript腳本,如果服務(wù)器端沒(méi)有過(guò)濾掉這些腳本的話,在瀏覽器端會(huì)造成問(wèn)題。
5.WSDL掃描和enumeration
WSDL(網(wǎng)絡(luò)服務(wù)界定語(yǔ)言)是網(wǎng)絡(luò)服務(wù)的一個(gè)接口。該文件提供了技術(shù),開(kāi)放方法,創(chuàng)新形式等等的關(guān)鍵信息。這是非常敏感信息,而且能夠幫助人
們決定利用什么弱點(diǎn)來(lái)攻擊。如果將不必要的功能或者方法一直開(kāi)著,這會(huì)為網(wǎng)絡(luò)服務(wù)造成潛在的災(zāi)難。保護(hù)WSDL文件或者限定對(duì)其的訪問(wèn)是非常重要的。在實(shí)
際情況中,很有可能找到一些使用WSDL掃描的一些漏洞。WSDL提供了Web服務(wù)所用的技術(shù),以及外露的方法,調(diào)用的模式等信息。假如Web服務(wù)對(duì)不必要的方法沒(méi)有禁止的話,攻擊者可以通過(guò)WSDL掃描找到潛在的攻擊點(diǎn)。
6.AJAX常規(guī)程序中客戶(hù)端的確認(rèn)
基于web2.0的應(yīng)用使用AJAX常規(guī)程序來(lái)在客戶(hù)端上進(jìn)行很多操作,比如客戶(hù)端數(shù)據(jù)類(lèi)型的確認(rèn),內(nèi)容檢查,數(shù)據(jù)域等等。正常情況下,服務(wù)端
也應(yīng)該備份這些客戶(hù)端檢查信息。大部分開(kāi)發(fā)者都沒(méi)有這么做;他們這樣做的理由是,他們假設(shè)這樣的確認(rèn)是由AJAX常規(guī)程序來(lái)負(fù)責(zé)的。避開(kāi)基于AJAX的確
認(rèn)和直接發(fā)送POST或者GET請(qǐng)求給那些應(yīng)用——這些應(yīng)用是諸如SQL注入,LDAP注入等類(lèi)隨確認(rèn)進(jìn)入的攻擊主要來(lái)源,它們能夠攻擊網(wǎng)絡(luò)應(yīng)用的關(guān)鍵資
源——都是可以做到的。這都增加了能夠?yàn)楣粽咚玫臐撛诠粝蛄康臄?shù)量。假如開(kāi)發(fā)人員只依賴(lài)客戶(hù)端驗(yàn)證,不在服務(wù)器端重新驗(yàn)證的話,會(huì)導(dǎo)致SQL注入,LDAP注入等等。
7.網(wǎng)絡(luò)服務(wù)路由問(wèn)題
網(wǎng)絡(luò)服務(wù)安全協(xié)議包括WS-Routing服務(wù)。WS-Routing允許SOAP消息在互聯(lián)網(wǎng)上各種各樣不同的節(jié)點(diǎn)中的特別序列中傳輸。通常
加密的信息在這些節(jié)點(diǎn)來(lái)回傳送。交互的節(jié)點(diǎn)中的任意一個(gè)被攻擊都將致使攻擊者能夠訪問(wèn)到在兩個(gè)端點(diǎn)之間傳輸?shù)腟OAP消息。這將造成SOAP消息的嚴(yán)重的
安全泄漏。隨著網(wǎng)絡(luò)應(yīng)用開(kāi)始被網(wǎng)絡(luò)服務(wù)框架所采用,攻擊者們開(kāi)始轉(zhuǎn)而利用這些新協(xié)議和新的攻擊向量。Web服務(wù)安全協(xié)議使用WS-Routing服務(wù),假如任何中轉(zhuǎn)站被攻占,SOAP消息可以被截獲。
8.SOAP消息的參數(shù)操作
網(wǎng)絡(luò)服務(wù)接收信息和來(lái)自SOAP消息的變量。修改這些變量是很可能的。例如,“10”是SOAP消息中多個(gè)節(jié)點(diǎn)中的一個(gè)。攻擊者可以修改點(diǎn),并
且嘗試不同種的注入攻擊——比如,SQL,LDAP,XPATH,命令行解釋器——并且探索能被他用來(lái)掌握及其內(nèi)部信息的攻擊向量。網(wǎng)絡(luò)服務(wù)代碼中錯(cuò)誤的
或者不夠完備的輸入確認(rèn)使網(wǎng)絡(luò)服務(wù)應(yīng)用易于發(fā)生泄漏.這是一個(gè)目標(biāo)指向網(wǎng)絡(luò)服務(wù)所帶的網(wǎng)絡(luò)應(yīng)用的一項(xiàng)新的攻擊向量。類(lèi)似于SQL注入,假如對(duì)SOAP消息里節(jié)點(diǎn)的數(shù)據(jù)不做驗(yàn)證的話。
9.SOAP消息中的XPATH注入
XPATH是一種用來(lái)查詢(xún)XML文檔的語(yǔ)言,它跟SQL語(yǔ)句很類(lèi)似:我們提供某些信息(參數(shù))然后從數(shù)據(jù)庫(kù)中得到查詢(xún)結(jié)果。很多語(yǔ)言都支持
XPATH
解析的功能。網(wǎng)絡(luò)應(yīng)用接收大型XML文檔,很多時(shí)候這些應(yīng)用從終端用戶(hù)和XPATH語(yǔ)句中取得輸入量。這些代碼的段落對(duì)XPATH注入沒(méi)有什么防御能力。
如果XPATH執(zhí)行成功,攻擊者能夠繞過(guò)認(rèn)證機(jī)制或者造成機(jī)密信息的一些損失。現(xiàn)在人們只知道很少部分的能夠被攻擊者利用的XPATH的漏洞。阻止這個(gè)攻
擊向量的唯一方法就是在給XPATH語(yǔ)句傳遞變量值的時(shí)候提供適當(dāng)?shù)妮斎氪_認(rèn)。類(lèi)似于SQL注入,假如對(duì)數(shù)據(jù)不做驗(yàn)證而直接做XPATH查詢(xún)的話。
10. RIA瘦客戶(hù)端二進(jìn)制的偽造
豐富網(wǎng)絡(luò)應(yīng)用(RIA)使用非常豐富的UI要素比如Flash,ActiveX控件或者Applets,它使用這些要素作為網(wǎng)絡(luò)應(yīng)用的基本接
口。這個(gè)框架存在幾個(gè)安全問(wèn)題。其中最主要的一個(gè)就是關(guān)于會(huì)話管理。它是在瀏覽器中運(yùn)行的,并且共享相同的會(huì)話。同時(shí),由于客戶(hù)端將下載整個(gè)二進(jìn)制元件到
自己的主機(jī),攻擊者就可以顛倒工程的那個(gè)二進(jìn)制文件并且反編譯代碼。把這些二進(jìn)制串打包并繞過(guò)一些包含在代碼中的認(rèn)證邏輯是有可能實(shí)現(xiàn)的。這是
WEB2.0框架下的另一個(gè)有趣的攻擊向量。因?yàn)镽ich Internet
Applications的組件是下載到瀏覽器本地的,攻擊者可以對(duì)二進(jìn)制文件進(jìn)行逆向工程,反編譯編碼,通過(guò)改動(dòng)文件,跳過(guò)認(rèn)證邏輯
。
結(jié)論
AJAX,RIA以及網(wǎng)絡(luò)服務(wù)是WEB2.0應(yīng)用空間的三項(xiàng)重要的技術(shù)向量。這些技術(shù)很有前景,它們帶給桌面新的程式,加強(qiáng)了網(wǎng)絡(luò)應(yīng)用的整體效
率和效用。隨著這些新技術(shù)而來(lái)的是新的安全問(wèn)題,忽略這些問(wèn)題將會(huì)導(dǎo)致整個(gè)世界發(fā)生巨大的災(zāi)難。本文中,我們只討論了10種攻擊。但是實(shí)際上還有很多其他
的攻擊向量。對(duì)這些新的攻擊向量的最好的防御方法是增加WEB2.0的安全意識(shí),提高代碼操作的安全性以及配置的安全性