原文地址 http://bolm.cn/blog/?p=86 作者 bolm
Web2.0是描述新一代網絡應用的新鮮術語。Start.com,Google maps,Writely以及MySpace.com都是使用Web2.0的典型。技術水平的不斷進步,推動了Web2.0應用的發展。在網絡服務方面,它加強了服務端的核心技術組件,而在客戶端方面,AJAX和豐富網絡應用(RIA)則改進了瀏覽器中的客戶端用戶接口。
XML語言對表示層和傳輸層(HTTP/HTTPS)有巨大的影響。SOAP成為基于XML的傳輸機制的特別選擇后,從某種程度上說,XML在表示層上取代了HTML語言。
Web2.0關注點——重整行業
技術變革帶來了新的安全關注點和新的攻擊向量。Yamanner,Samy以及Spaceflash這些典型蠕蟲正在攻擊包含保密信息的AJAX架構的客戶端,它們提供攻擊途徑。
在服務器端,基于XML的網絡服務正在取代一部分的關鍵功能。它提供可通過網絡服務接口來訪問的分布式應用。用戶可以從瀏覽器端遠程激活基于 GET,POST或者SOAP的方法,這項能力給各種應用帶來新的缺陷。另一方面,使用XML,XUL,Flash,Applets和 JAVAScripts的RIA框架增加了更多可用的攻擊向量。RIA,AJAX以及網絡服務給網絡應用安全增加了新的維度。
下面列舉10個攻擊:
1.AJAX中的跨站點腳本
前幾個月,人們發現了多種跨站點的腳本攻擊。在此類攻擊中,受害者的包含信息的瀏覽器上會運行來自特定網站的惡意JAVA腳本代碼。 Yamanner蠕蟲就是一個最近的范例,它利用Yahoo郵件的AJAX調用中的跨站點腳本機會來攻擊受害者。另一個近期的范例就是Samy蠕蟲,它利用MySpace.com的跨站點腳本漏洞來攻擊。AJAX在客戶端上運行,它允許錯誤書寫的腳本被攻擊者利用。攻擊者能夠編寫惡意鏈接來哄騙那些沒有準備的用戶,讓他們用瀏覽器去訪問特定的網頁。傳統應用中也存在這樣的弱點,但AJAX給它添加了更多可能的漏洞。
2.XML中毒
很多Web2.0應用中,XML傳輸在服務器和瀏覽器之間往復。網絡應用接收來自AJAX客戶端的XML塊。這XML塊很可能染毒。多次將遞歸負載應用到產出相似的XML節點,這樣的技術還并不普遍。如果機器的處理能力較弱,這將導致服務器拒絕服務。很多攻擊者還制作結構錯誤的XML文檔,這些文檔會擾亂服務器上所使用的依賴剖析機制的邏輯。服務器端的剖析機制有兩種類型,它們是SAX和DOM。網絡服務也使用相同的攻擊向量,這是因為網絡服務接收SOAP消息,而SOAP就是XML消息。在應用層大范圍地使用XMLs使攻擊者有更多的機會利用這個新的攻擊向量。
XML外部實體參照是能被攻擊者偽造的一個XML的屬性。這會使攻擊者能夠利用人意的文件或者TCP連接的缺陷。XML schema中毒是另一個XML中毒的攻擊向量,它能夠改變執行的流程。這個漏洞能幫助攻擊者獲得機密信息。
3.惡意AJAX代碼的執行
AJAX調用非常不易察覺,終端用戶無法確定瀏覽器是否正在用XMLHTTP請求對象發出無記載的調用。瀏覽器發出AJAX調用給任意網站的時候,該網站會對每個請求回應以cookies。這將導致出現泄漏的潛在可能性。例如,約翰已經登陸了他的銀行,并且通過了服務器認證。完成認證過程后,他會得到一個會話 cookie。銀行的頁面中包含了很多關鍵信息。現在,他去瀏覽器他網頁,并同時仍然保持銀行賬戶的登陸狀態。他可能會剛好訪問一個攻擊者的網頁,在這個網頁上攻擊者寫了不易被察覺的AJAX 代碼,這個代碼不用經過約翰的同意,就能夠發出后臺調用給約翰的銀行網頁,因而能夠從銀行頁面取得關鍵信息并且把這些信息發送到攻擊者的網站。這將導致機密信息的泄漏甚至引發安全突破。
4.RSS/Atom 注入
這是一項新的web2.0攻擊。RSS反饋是人們在門戶網站或者網絡應用中共享信息的常用手段。網絡應用接受這些反饋然后發送給客戶端的瀏覽器。人們可以在該RSS反饋中插入文本的JavaScript來產生對用戶瀏覽器的攻擊。訪問特定網站的終端用戶加載了帶有該RSS反饋的網頁,這個腳本就會運行起來——它能夠往用戶的電腦中安裝軟件或者竊取cookies信息。這就是一個致命的客戶端攻擊。更糟糕的是,它可以變異。隨著RSS和ATOM 反饋成為網絡應用中整合的組件,在服務器端將數據發布給終端用戶之前,過濾特定字符是非常必要的。
5.WSDL掃描和enumeration
WSDL(網絡服務界定語言)是網絡服務的一個接口。該文件提供了技術,開放方法,創新形式等等的關鍵信息。這是非常敏感信息,而且能夠幫助人們決定利用什么弱點來攻擊。如果將不必要的功能或者方法一直開著,這會為網絡服務造成潛在的災難。保護WSDL文件或者限定對其的訪問是非常重要的。在實際情況中,很有可能找到一些使用WSDL掃描的一些漏洞。
6.AJAX常規程序中客戶端的確認
基于web2.0的應用使用AJAX常規程序來在客戶端上進行很多操作,比如客戶端數據類型的確認,內容檢查,數據域等等。正常情況下,服務端也應該備份這些客戶端檢查信息。大部分開發者都沒有這么做;他們這樣做的理由是,他們假設這樣的確認是由AJAX常規程序來負責的。避開基于AJAX的確認和直接發送POST或者GET請求給那些應用——這些應用是諸如SQL注入,LDAP注入等類隨確認進入的攻擊主要來源,它們能夠攻擊網絡應用的關鍵資源——都是可以做到的。這都增加了能夠為攻擊者所利用的潛在攻擊向量的數量。
7.網絡服務路由問題
網絡服務安全協議包括WS-Routing服務。WS-Routing允許SOAP消息在互聯網上各種各樣不同的節點中的特別序列中傳輸。通常加密的信息在這些節點來回傳送。交互的節點中的任意一個被攻擊都將致使攻擊者能夠訪問到在兩個端點之間傳輸的SOAP消息。這將造成SOAP消息的嚴重的安全泄漏。隨著網絡應用開始被網絡服務框架所采用,攻擊者們開始轉而利用這些新協議和新的攻擊向量。
8.網絡服務路由問題
網絡服務接收信息和來自SOAP消息的變量。修改這些變量是很可能的。例如,“10”是SOAP消息中多個節點中的一個。攻擊者可以修改點,并且嘗試不同種的注入攻擊——比如,SQL,LDAP,XPATH,命令行解釋器——并且探索能被他用來掌握及其內部信息的攻擊向量。網絡服務代碼中錯誤的或者不夠完備的輸入確認使網絡服務應用易于發生泄漏.這是一個目標指向網絡服務所帶的網絡應用的一項新的攻擊向量。
9.SOAP消息中的XPATH注入
XPATH是一種用來查詢XML文檔的語言,它跟SQL語句很類似:我們提供某些信息(參數)然后從數據庫中得到查詢結果。很多語言都支持 XPATH 解析的功能。網絡應用接收大型XML文檔,很多時候這些應用從終端用戶和XPATH語句中取得輸入量。這些代碼的段落對XPATH注入沒有什么防御能力。如果XPATH執行成功,攻擊者能夠繞過認證機制或者造成機密信息的一些損失。現在人們只知道很少部分的能夠被攻擊者利用的XPATH的漏洞。阻止這個攻擊向量的唯一方法就是在給XPATH語句傳遞變量值的時候提供適當的輸入確認。
10. RIA瘦客戶端二進制的偽造
豐富網絡應用(RIA)使用非常豐富的UI要素比如Flash,ActiveX控件或者Applets,它使用這些要素作為網絡應用的基本接口。這個框架存在幾個安全問題。其中最主要的一個就是關于會話管理。它是在瀏覽器中運行的,并且共享相同的會話。同時,由于客戶端將下載整個二進制元件到自己的主機,攻擊者就可以顛倒工程的那個二進制文件并且反編譯代碼。把這些二進制串打包并繞過一些包含在代碼中的認證邏輯是有可能實現的。這是 WEB2.0框架下的另一個有趣的攻擊向量。
結論
AJAX,RIA以及網絡服務是WEB2.0應用空間的三項重要的技術向量。這些技術很有前景,它們帶給桌面新的程式,加強了網絡應用的整體效率和效用。隨著這些新技術而來的是新的安全問題,忽略這些問題將會導致整個世界發生巨大的災難。本文中,我們只討論了10種攻擊。但是實際上還有很多其他的攻擊向量。對這些新的攻擊向量的最好的防御方法是增加WEB2.0的安全意識,提高代碼操作的安全性以及配置的安全性
相關文章:
posted on 2008-02-28 15:55
lvq810 閱讀(229)
評論(0) 編輯 收藏 所屬分類:
Web 2.0