聯合應用技術介紹之Ajax安全基礎

來源:互聯網
上載者:User
ajax|安全

1.介紹

Ajax由於其良好的互動性,在去年很引人注目。Google Suggest 和 Google Maps [ref 1]就是一些Ajax早期的著名應用。現在,企業正在考慮他們如何也能利用Ajax,web開發人員在學習它,安全專家在想如何使它變得安全,駭客們在思考如何入侵。所有能提高伺服器輸送量,能產生更多的動態網頁面傳輸,而且能為終端使用者提供更加豐富的web應用的技術都必然在這個領域出現。

Ajax的下一步計劃稱為”Web 2.0”。這篇文章的目的是介紹一些關於現代Ajax web技術的安全建議。儘管Ajax的應用難於測試,安全專家已經擁有大多數所需要的有關方法和工具。作者將討論如今的趨勢是否需要告別完全的網路更新,使用Ajax也意味著我們將面臨一些新的安全問題。我們將從Ajax技術簡要介紹開始,接著討論使用Ajax技術應用帶來的安全衝擊。

2.初識Ajax

正常的web應用程式在同步模式下工作,一個web請求之後,一個響應在展示層引起一些動作。例如,點選連結或者提交按鈕向web伺服器產生一個帶有相應參數的請求。傳統的” click and wait”方式限制了應用程式的互動性。Ajax(Asychronous Javascript and XML)技術的使用緩解了這個問題。文中,我們將Ajax定義為向web伺服器產生非同步呼叫而不引起網頁完全更新的方法。這種互動性的通過三種不同的組件實現:用戶端指令碼語言,XmlHttpRequest (XHR)對象和XML。

讓我簡短地分別介紹一下這些組件。在請求響應中,用戶端指令碼語言被用來初始化伺服器調用和程式的存取,以及更新客戶瀏覽器的DOM。用戶端普遍使用JavaScript,由於它被知名瀏覽器普遍的採用。第二個組件是XHR對象,它是最重要的部分。JavaScript這類語言使用XHR對象在情境後面向web伺服器發送請求,使用HTTP作為傳輸中介。接著是第三個組件,它的使用是必要的:XML是被交換資訊的資料格式。

很多網站使用JSON(JavaScript Object Notation)代替XML,因為其更加容易解析不需要那麼多管理的費用。使用JavaScript解析JSON,只需要簡單的把它傳給eval()函數。另一方面,有人可能使用XPath解析返回的XML。同樣的,外面還有很多”Ajax 網站”既不使用XML,也不使用JSON,而是僅僅發送無格式的動態插入到網頁的舊HTML片段。

因此,Ajax不是一個新的技術商標,而是現存技術的聯合應用,推動了web應用程式高度互動性的發展。實際上,所有這些組件已經出現好些年了,隨Internet Explorer 5.0的發布而顯著起來。開發人員建立了Ajax許多的應用,諸如”提示”文字框(象Google Suggest)和自動更新資料列表。所有的XHR請求仍然是由典型的伺服器端架構執行,例如標準的選擇象J2EE,.NET和PHP。下面的Figure 1. 是Ajax應用程式的非同步特性圖例:

圖 1.Ajax非同步順序

3. Ajax安全應用

現在我們已經回顧了Ajax的基礎,讓我們討論一下它的安全含義。在web應用領域,Ajax本身並沒有引入新的安全弱點。這些應用程式面臨和經典web應用程式同樣的問題。不幸的是,Ajax共通的最佳實現還沒有發展起來,這就留下了很多的犯錯誤的餘地。其包括安全驗證,授權,存取控制和輸入檢查。[ref 2]。涉及Ajax使用的一些潛在領域包括:

·用戶端安全控制

有人認為,用戶端程式的依賴性可能引出來一些已經眾所周知的問題。[ref 2]。一種可能性是開發人員通過用戶端控制破壞安全。如前所述,Ajax的使用需要相當多的指令碼語言。如今,Web開發人員同時寫伺服器端和用戶端的代碼,這也許會吸引面向用戶端安全控制執行的開發人員。這種方式是非常不可靠的,因為攻擊者在測試應用程式弱點時,可以修改運行在他們用戶端電腦上的任何代碼。安全控制應該完全在伺服器上執行或者經常在伺服器上升級。

·不斷增加的攻擊面

第二個挑戰是保護不斷增加的攻擊面。Ajax不可避免的增加了系統的整體複雜性。在採用Ajax的過程中,開發人員也許要編寫大量的伺服器端頁面,每一個頁面執行一些整個程式中的小功能(象為了自動完成一個使用者的城市和州域,查尋郵政區號)。這些小頁面將各自成為駭客的一個附加攻擊目標,而為了保證不引入新的安全弱點一個附加的點需要保護起來。這個可以比喻成著名的多重點的安全觀點好像進入一個房子:保護只有一扇門的房子難度和保護有十扇門的房子相比。

·串連使用者和伺服器之間的間隙

Ajax是開發人員通過其縮短終端使用者和由面向服務構架介面的距離的一種方法。[ref 3]增加寬鬆聯絡的基於服務的構架在企業環境中有許多優點,是一種很有希望的方法。隨著更多的基於服務端點的發展,隨著Ajax引入向終端使用者提供更多的靈活的處理的可能,遠離三層標準模型的可能性增加了。

一般來說,企業內部的許多web服務(與Internet上的全部服務相對)被設計成B2B,因此,設計者和開發人員常常沒有考慮實際使用者的互動性。這個缺乏遠見的做法導致了一些壞的設計過程中安全假設。例如,最初的設計者可能假設安全認證,授權和輸入檢查將由其它中層系統執行。一旦有人允許”外部人士”通過Ajax的使用直接調用這些服務,就引入了一個考慮之外的代理。這類使用的一個實際例子是Microsoft的Atlas[ref 4]和web服務同時使用的一致性程度檢查。開發人員現在可以編寫JavaScript來產生XML輸入以及從用戶端瀏覽器中正確調用web服務。在過去這個由代理和伺服器完成。

·跨站指令碼(XSS)的新希望

另外一個不幸的事實是攻擊者通過利用跨站指令碼(XSS)的弱點,能夠更有創造性(換句話說,更危險)。[ref 5]駭客過去一般在”單線程”環境下使用XSS漏洞,攻擊執行的時候使用者的瀏覽器處於等待狀態。這個等待狀態提供了一個可能錯誤執行程式使用者的線索。通過Ajax的引入,一個攻擊者可以以更加隱秘的方式利用跨站指令碼弱點。當你用一個允許Ajax的程式檢查你的郵件的時候,惡意代碼可能給你所有的朋友發送Email而你的瀏覽器不會留下任何可見的痕迹。

為瞭解決這方面的問題,在把程式放到產品中之前,必須執行足夠多的有針對性的安全性測試。即使Ajax程式是web應用程式,由於這些應用程式高度互動性的特點,一個組織好的現存的安全性測試方法可能是不夠的。

4.Ajax如何

測試一個正常web應用程式的時候,一個入侵測試者從footprint應用程式開始。Footprint階段的目的是捕獲請求和響應,這樣測試者就知道應用程式如何和伺服器通訊以及它所接收到的響應。這個資訊通過本地代理諸如Burp[ref 6]或者Paros[ref 7]記入日誌。footprint階段,必須儘可能做到全面,因此測試者日誌嚮應用程式使用的所有頁面發出請求。

之後,測試者將開始系統的錯誤注射過程,手動或者使用自動工具來測試從web伺服器上傳入傳出的參數。

·“狀態”問題

在一般的web應用程式世界裡,應用程式的狀態被明確的定義。存在於一個頁面的DOM中的每一個事物都可以被認為是頁面的目前狀態。如果狀態需要改變,一個請求就被發送到伺服器,而響應詳細說明了狀態如何改變。

·通過定時器事件初始化請求

這涉及到通過基於定時器的事件而不需要任何使用者互動的更新使用者介面。應用程式可能定時的發送請求到伺服器來更新web頁面上的資訊。例如,一個金融應用程式可能使用XHR對象更新顯示當前股票市場資訊的網頁部分內容。測試者可能不會注意到背景進程,如果他們沒有在正確的時間捕獲到請求,因為這裡可能沒有可見的連結或者按鈕來提醒測試者後台有請求產生了。

·動態DOM更新

Ajax響應可以包含JaveScript片斷,它能被web應用程式評價而且可以在使用者介面中出現。這可能包括新的連結,伺服器上新的文檔的儲存,等等。實現這個的一種方式是通過使用eval()聲明。[ref 2,ref 8]eval()聲明接受一個單變數,一個字串,而且執行這個字串,就像它是程式的一部分一樣。

Google Suggest是一個很好的例子,其中應用程式接收到一個JavaScript片斷,這個片斷得到評價而且作為完成輸入詢問的可能建議。這個行為對於手動測試者和使用自動工具的測試者都有問題的。兩者將不得不瞭解JavaScript在web應用程式的上下文中是如何使用的。當一個輸入參數在用戶端計算後被送回來的時候就需要格外小心。這個聽起來象典型的XSS而且它就是,但是它已經變得非常容易被利用。使用黑名單確認的應用程式更加容易受到影響,因為攻擊者不需要注入許多標記。一些方法可以被用來使用XSS而不需象過去那樣的指令碼標籤。

·XML Fuzzing

Ajax能被用來以XML的格式發送請求接收響應。簡單的自動工具確實理解GET和POST方法但是可能不知道如何處理使用XML格式封裝的資訊。

測試者必須保證開發人員沒有偏離一個安全的構架。在一個安全系統中,安全控制在一個終端使用者控制之外的環境中實行。執行reviews的時候,你必須徹底審查用戶端代碼以確定是否能在提交變數(cookies, FORM參數, GET參數)給伺服器之前修改它們的狀態。一旦發生了這個,就需要分析JavaScript來確定原因。

就如一般的web應用程式一樣,所有的Ajax請求需要為授權問題進行測試。開發人員相信因為頁面在一個用戶端指令碼引擎後面調用就不需要授權,那他就可能成為受害者。實際上並非如此。

5.結論

Ajax應用程式通過它高度互動性的特性提供了新的可能性。開發人員可能對這些效能引入的新的不安全因素感到厭倦。安全性測試者必須增加他們的測試方法和工具集來應付Ajax應用程式。

這篇文章中,作者介紹了一些Ajax技術中的安全應用。入侵測試者正看到他們已經擁有知識和工具來評價Ajax應用程式,但是它們還是有點難於測試。後面的文章將關注這個問題的更多方面,象可以在Ajax安全性測試中使用的有協助的工具。

6.參考

[ref 1] Google Suggest and Google Maps, two early Ajax applications.

[ref 2] Stewart Twynham, "AJAX Security", Feb. 16th, 2006.

[ref 3] Andrew van der Stock, "AJAX Security", OWASP Presentation given on February 7, 2006. A direct descendent of this presentation is also available from Andrew van der Stock at http://www.greebo.net/owasp/ajax_security.pdf.

[ref 4] Microsoft's Altas framework tries to integrate as a middle-tier.

[ref 5] Post by "Samy," on a "Technical explanation of the MySpace worm".

[ref 6] Burp web application proxy for penetration testing.

[ref 7] Paros web application proxy for penetration testing.

[ref 8] post by Rogan Dawes, author of WebScarab, on the WebAppSec mailing list.

7.進一步的閱讀材料

·Jesse James Garrett, "Ajax: A New Approach to Web Applications", Feb. 18, 2005.

·Ryan Asleson and Nathaniel T. Schutta, "Foundations of Ajax", APress Publications, Oct 2005.

·Nicholas C. Zakas, Jeremy McPeakandJoe Fawcett, "Wrox Professional Ajax", Feb 2006.

·Eric Pascarello, "Eric Pascarello dissects Ajax security vulnerabilities", Feb. 07, 2006.

·Andrew van der Stock, "Ajax and Other 'Rich' Interface Technologies".

8. 關於作者

Jaswinder S. Hayre, CISSP, 和Jayasankar Kelath, CISSP,都是紐約Ernst & Young's Advanced Security Center的進階安全工程師。

(t116)

================================

原文連結:http://www.iis-resources.com/modules/AMS/article.php?storyid=576

原文作者:Jaswinder S. Hayre, CISSP, and Jayasankar Kelath, CISSP



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.