XSS 攻擊的過程涉及以下三方:
• 攻擊者
• 受害者
• 存在漏洞的網站(攻擊者可以使用它對受害者采取行動)
在這三方之中,只有受害者會實際運行攻擊者的代碼。網站僅僅是發起攻擊的一個載體,一般不會受到影響??梢杂枚喾N方式發起 XSS 攻擊。例如,攻擊者可通過電子郵件、IM 或其他途徑向受害者發送一個經過經心構造的惡意 URL。當受害者在 Web 瀏覽器中打開該 URL 的時侯,網站會顯示一個頁面并在受害者的計算機上執行腳本。
XSS 漏洞是什么樣的呢?
作為一名 Web 開發人員或測試人員,您肯定知道 Web 應用程序的技術基礎是由 HTTP 和 HTML 組成的。HTTP 協議是 HTML 的傳輸機制,可使用代碼設計 Web 頁面布局和生成頁面。如果 Web 應用程序接受用戶通過 HTTP 請求(如 GET 或 POST)提交的輸入信息,然后使用輸出 HTML 代碼在某些地方顯示這些信息,便可能存在 XSS 漏洞。下面是一個最簡單的例子:
1. Web 請求如下所示:
GEThttp://www.somesite.com/page.asp?pageid=10&lang=en&title=Section%20Title
2. 在發出請求后,服務器返回的 HTML 內容包括:
<h1>Section Title</h1>
可以看到,傳遞給“title”查詢字符串參數的用戶輸入可能被保存在一個字符串變量中并且由 Web 應用程序插入到 <h1> 標記中。通過提供輸入內容,攻擊者可以控制 HTML。
3. 現在,如果站點沒有在服務器端對用戶輸入加以過濾(因為總是可以繞過客戶端控件),那么惡意用戶便可以使用許多手段對此漏洞加以濫用:
攻擊者可以通過擺脫 <h1> 標記來注入代碼:
alert(‘XSS%20attack’)http://www.somesite.com/page.asp?pageid=10&lang=en&title=Section%20Title</h1><script>alert(‘XSS%20attack’)</script>
這個請求的 HTML 輸出將為:
<h1>Section Title</h1><script>alert(‘XSS attack’)</script>
即便是這個最簡單的例子,攻擊者也可以利用此連接完成數不清的事情。讓我們看看會有哪些潛在的威脅,然后討論一些更高級的測試方法.
XSS 攻擊的威脅有多么嚴重?
由于能夠在生成的 Web 頁面中注入代碼,能想到的威脅有多么嚴重,就可以有多么嚴重的威脅。攻擊者可以使用 XSS 漏洞竊取 Cookie,劫持帳戶,執行 ActiveX,執行 Flash 內容,強迫您下載軟件,或者是對硬盤和數據采取操作。只要您點擊了某些 URL,這一切便有可能發生。每天之中,在閱讀來自留言板或新聞組的受信任的電子郵件的時侯,您會多少次地單擊其中的 URL?網絡釣魚攻擊通常利用 XSS 漏洞來裝扮成合法站點??梢钥吹胶芏噙@樣的情況,比如您的銀行給你發來了一封電子郵件,向您告知對您的帳戶進行了一些修改并誘使您點擊某些超鏈接。如果仔細觀察這些 URL,它們實際上可能利用了銀行網站中存在的漏洞,它們的形式類似于alert(‘XSS’)http://mybank.com/somepage?redirect=<script>alert(‘XSS’)</script>,這里利用了“redirect”參數來執行攻擊。如果您足夠狡猾的話,可以將管理員定為攻擊目標,您可以發送一封具有如下主題的郵件:“求救!這個網站地址總是出現錯誤!”在管理員打開該 URL 后,便可以執行許多惡意操作,例如竊取他(或她)的憑證。好了,現在我們已經理解了它的危害性 -- 危害用戶,危害管理員,給公司帶來壞的公共形象?,F在,讓我們看看本文的重點 -- 測試您的網站是否存在這些問題.