天天看點

【web安全】Xss Exploits and Defense翻譯1

SYNGRESS的《Xss Exploits and Defense》這本書還不錯,但是沒有找到中文版,在學習過程中就大概翻譯了一下。

XSS攻擊和防禦

第一章:跨站腳本基本原理

本章主要内容:

l 跨站腳本的曆史

l Web應用程式安全

l XML和AJAX介紹

ü 總結

ü 快速回顧

ü 常見問答

緒論

跨站點腳本漏洞可以追溯到1996年在世界初期網際網路(WEB)。一時間,當電子商務開始起飛,就成了網景、雅虎和那些令人生厭的閃爍的标記(HTML标記)的泡沫時代。當成千上萬的網頁正在建設中,充斥着用超文本标記語言(HTML)結建構立的“酷”網站。Javascript程式語言應運而生,跨站腳本的一個未知預兆,永遠改變了web應用程式安全的景觀。Javascript使得web開發人員可以建立互動式的網頁效果包括圖像翻轉,浮動菜單和彈出式視窗。對于現在不起眼的異步Javascript和XML(AJAX)應用程式标準,黑客很快發現一個新的未開發世界的可能性。

黑客們發現當不知情的使用者通路他們的網頁,他們可以在同一個浏覽器視窗中強行裝入一個HTML架構的任何網站(銀行,拍賣,商店,web郵件等等)。

然後使用Javascript,他們可以跨越兩個網站的邊界,從一個頁面通路另一個頁面。他們可以竊取使用者輸入在HTML表單裡的使用者名和密碼,盜取cookie和威脅到任何在螢幕上出現的機密資訊。媒體将這些問題報道為浏覽器漏洞。網景通訊,占主導地位的浏覽器供應商,為了對應這種情況,實作了“同源政策”,限制Javascript不能從一個網頁到另一個網頁擷取資料。浏覽器黑客将這個作為挑戰,然後開始挖掘各種聰明的方法來規避這個限制。

1999年12月,David Ross在微軟的Internet Explorer安全響應工作。他受到在當時發現Internet explorer's 安全模型威脅的Georgi Gununski的啟發。他指出web内容會暴露“腳本注入”有效地繞過Georgi的Internet Explorer代碼缺陷,但是這個錯誤似乎存在服務端而不是用戶端代碼。David在微軟内部文檔中将這個描述為“腳本注入”。這個文檔描述的問題,是它如何利用,如何攻擊可以持續使用cookie,XSS如何工作,和輸入/輸出過濾解決方法。

最終這個概念被CERT機構所共享。目的就在于讓公衆也知道,讓這個問題以負責的方式被揭露,然後網站可以被修複,不僅僅是微軟,而是整個行業。跨組織團隊在一月中旬的讨論最終從以下名稱中選擇了“Cross Site Scripting”這個名稱:

n Unauthorized Site Scripting

n Unofficial Site Scripting

n Uniform Resource Locator (URL) Parameter Script Insertion

n Cross-site Scripting

n Synthesized Scripting

n Fraudulent Scripting

在2000年1月25日,微軟和CERT,很多廠商(例如:Apache等)還有一些感興趣的組織在Bellevue的一個酒店讨論這個XSS這個概念。

David在Ivan Brugiolo,John Coates和Michael Roe的幫助下,重寫了那份微軟内部文檔,讓它成為适合公衆的版本。在CERT的協調下,微軟在2000年2月2日釋出了這個文檔和其他材料。在過去幾年裡,在Microsoft.com網站這份文檔有時候被移除了,但是不會在網際網路消失。現在可以在下面網站被找到:

http://ha.ckers.org/cross-site-scripting.html 。

同個時間,黑客在可以送出HTML/Javascript的HTML頁面,留言簿,郵件服務商送出腳本來影響使用者。這就是有時候被叫做HTML注入的來源。黑客建立一個JavaScript的惡意軟體(malware)的基本形式,他們将HTML表單送出改變螢幕上的名字,欺騙貶義的消息,竊取cookie,調整網頁的顔色,宣告病毒推出的警告,和其他隐約惡意的數字惡作劇。不久後,出現另一種攻擊的變種。利用社會工程學,誘導使用者點選帶有惡意代碼的連結可以達到跟HTML注入一樣的結果。Web使用者除了禁止Javascript的運作,沒有其他防禦的手段。

曆年來,最早為認為是跨站腳本開始變成浏覽器的一個簡單未知名漏洞。HTML注入和惡意連結就是現在指的跨站腳本的變種,分别是持久性和非持久性的跨站腳本。不幸的是,這就是很多人被混亂的術語搞糊塗的一個重要原因。更糟糕的是,“CSS”的縮寫和另一個新生的浏覽器技術“Cascading Style Sheets”的縮寫一樣,是以經常混淆。終于在2000年初,一個聰明的人建議将CSS的縮寫改為XSS來避免混淆。最後,XSS的名稱被定下來。很多新的白皮書和大量的漏洞公告描述跨站腳本的影響充斥着網絡。但是很少人去關注。

到2005年之前,絕大多數的安全專家和開發者很少關注XSS漏洞。他們關注的是緩沖區溢出,僵屍網絡,病毒,蠕蟲,間諜軟體等等。以此同時,全球每月有百萬的新的web伺服器開始用SSL保護他們的伺服器。大多數人認為可以導緻XSS漏洞的Javascript是一個玩具變成語言。有一些論調,”它不能入侵作業系統或者入侵資料庫,我為什麼要在乎呢?就點選一個連結或者浏覽一個網頁會能多危險呢?“。2005年10月,我們得到了答案。一夜之間,Samy蠕蟲病毒,第一個嚴重的XSS蠕蟲将流行的社交網站MySpace搞攤了。這個攻擊腳本的有效載荷相對良性,Samy蠕蟲從一個單一的MySpace使用者的個人資料頁傳播到另一個,最後在24小時内感染了超過一百萬的使用者。突然間,整個安全界清醒了,開始了爆炸式的研究Javascript的惡意腳本。

短短幾個月後,在2006年年初,JavaScript的端口掃描器,區域網路黑客,擊鍵記錄器,木馬,浏覽器曆史記錄盜取到達了一個似乎不會停止的景象。數百個XSS漏洞被大網站修複關閉,同時罪犯(黑客或者攻擊者)開始結合釣魚欺騙實施更有效的攻擊。令人吃驚的是,因為根據白帽安全組織的統計,超過70%的網站是脆弱的,存在漏洞的。CVE組織聲稱說XSS攻擊已經超過緩沖區溢出,成為發現最多的漏洞。可以說,XSS漏洞代表作為資訊安全和線上商業所面臨的最潛在的破壞性漏洞。現今,當人們被問到是否聽說過XSS,幾乎每個人都會舉手表示聽說過。 

繼續閱讀