web跨站點腳本攻擊方式和測試方法_第1頁
web跨站點腳本攻擊方式和測試方法_第2頁
web跨站點腳本攻擊方式和測試方法_第3頁
web跨站點腳本攻擊方式和測試方法_第4頁
web跨站點腳本攻擊方式和測試方法_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、到目前為止, 對于跨站點腳本攻擊具有很大的威脅這一點大家并無異議。 如果您很精通 XSS 并且只想看看有什么好的測試方法可供借鑒, 那么請直接跳到本文的測試部分。 如果您對此 一無所知, 請按順序認真閱讀! 如果某個懷有惡意的人(攻擊者) 可以強迫某個不知情的用 戶(受害者)運行攻擊者選擇的客戶端腳本, 那么便會發(fā)生跨站點腳本攻擊。 “跨站點腳本” 這個詞應(yīng)該屬于用詞不當(dāng)?shù)那闆r,因為它不僅與腳本有關(guān),而且它甚至不一定是跨站點的。所以, 它就是一個在發(fā)現(xiàn)這種攻擊時起的一個名字,并且一直沿用至今。從現(xiàn)在開始,我們將使用它常見的縮寫名稱“ XSS”。XSS 攻擊的過程涉及以下三方:? 攻擊者? 受害

2、者? 存在漏洞的網(wǎng)站(攻擊者可以使用它對受害者采取行動)在這三方之中, 只有受害者會實際運行攻擊者的代碼。 網(wǎng)站僅僅是發(fā)起攻擊的一個 載體,一般不會受到影響。 可以用多種方式發(fā)起 XSS 攻擊。例如, 攻擊者可通過電子郵件、 IM 或其他途徑向受害者發(fā)送一個經(jīng)過經(jīng)心構(gòu)造的惡意URL 。當(dāng)受害者在 Web 瀏覽器中打開該 URL 的時侯,網(wǎng)站會顯示一個頁面并在受害者的計算機上執(zhí)行腳本。XSS 漏洞是什么樣的呢?作為一名 Web 開發(fā)人員或測試人員,您肯定知道 Web 應(yīng)用程序的技術(shù)基礎(chǔ)是由 HTTP 和 HTML 組成的。 HTTP 協(xié)議是 HTML 的傳輸機制,可使用代碼設(shè)計 Web 頁面 布

3、局和生成頁面。如果 Web 應(yīng)用程序接受用戶通過 HTTP 請求(如 GET 或 POST)提交的輸入 信息,然后使用輸出 HTML 代碼在某些地方顯示這些信息,便可能存在 XSS 漏洞。下面 是一個最簡單的例子:Web 請求如下所示:GET在發(fā)出請求后,服務(wù)器返回的 HTML 內(nèi)容包括: Section Title可以看到,傳遞給“ title ”查詢字符串參數(shù)的用戶輸入可能被保存在一個字符串 變量中并且由 Web 應(yīng)用程序插入到 標記中。通過提供輸入內(nèi)容,攻擊者可以控制 HTML ?,F(xiàn)在,如果站點沒有在服務(wù)器端對用戶輸入加以過濾(因為總是可以繞過客戶端控件),那么惡意用戶便可以使用許多手段

4、對此漏洞加以濫用:攻擊者可以通過擺脫 標記來注入代碼: alert( XSS%20attack )這個請求的 HTML 輸出將為:XSS attack )Section Titlealert(即便是這個最簡單的例子, 攻擊者也可以利用此連接完成數(shù)不清的事情。 讓我們看看會 有哪些潛在的威脅,然后討論一些更高級的測試方法。XSS 攻擊的威脅有多么嚴重?由于能夠在生成的 Web 頁面中注入代碼, 能想到的威脅有多么嚴重, 就可以有多 么嚴重的威脅。攻擊者可以使用 XSS 漏洞竊取 Cookie ,劫持帳戶,執(zhí)行 ActiveX ,執(zhí)行 Flash 內(nèi)容,強迫您下載軟件,或者是對硬盤和數(shù)據(jù)采取操作。

5、只要您點擊了某些 URL ,這一切便有可能發(fā)生。每天之中,在閱讀來自留言板或新聞組的 受信任的電子郵件的時侯,您會多少次地單擊其中的URL ?網(wǎng)絡(luò)釣魚攻擊通常利用 XSS 漏洞來裝扮成合法站點。可以看到很多這樣的情況, 比如您的銀行給你發(fā)來了一封電子郵件, 向您告知對您的帳戶進行了一些修改并誘使您點擊 某些超鏈接。如果仔細觀察這些URL ,它們實際上可能利用了銀行網(wǎng)站中存在的漏洞,它們的形式類似于 alert( XSS) ,這里利用了“ redirect”參數(shù)來執(zhí)行攻擊。如果您足夠狡猾的話, 可以將管理員定為攻擊目標, 您可以發(fā)送一封具有如下主題 的郵件:“求救!這個網(wǎng)站地址總是出現(xiàn)錯誤! ”

6、在管理員打開該 URL 后,便可以執(zhí)行許多 惡意操作,例如竊取他(或她)的憑證。好了,現(xiàn)在我們已經(jīng)理解了它的危害性 - 危害用戶,危害管理員,給公司帶來壞 的公共形象?,F(xiàn)在,讓我們看看本文的重點 - 測試您的網(wǎng)站是否存在這些問題。測試 XSS 漏洞多年以來, 我一直是一名全職的安全顧問, 已經(jīng)做過無數(shù)次的這種測試了。 我將好 的測試計劃歸結(jié)為兩個字: 徹底。 對于你我來說, 查找這些漏洞與能夠有機會在 Bugtraq 或 Vulnwatch 上吹噓一番沒有任何關(guān)系; 它只與如何出色完成負責(zé)的工作有關(guān)。 如果這意味著 對應(yīng)用程序中所有的單個查詢字符串參數(shù)、 cookie 值 以及 POST 數(shù)據(jù)

7、值進行檢查,那么 這只能表明我們的工作還不算太艱巨。XSS 漏洞那樣簡SQL 注入、身份比如,在測試 XSS顯然,一次完整的安全性檢查所涉及的內(nèi)容通常遠遠超出尋找單;它需要建立整體的威脅模型,測試溢出漏洞、信息泄漏、錯誤處理、 驗證和授權(quán)錯誤。 好在執(zhí)行這樣徹底的工作時, 各個領(lǐng)域之間都存在重疊。漏洞時,經(jīng)常會同時找出錯誤處理或信息泄漏問題。我假設(shè)您屬于某個負責(zé)對 Web 應(yīng)用程序進行開發(fā)和測試的小組。 在這個幸運的位置上, 您可以混合使用黑盒和白盒方法。 每種方法都有它自己的優(yōu)點, 結(jié)合使用時甚至能相 互提供支持。按順序準備您的工具包測試工作也可以是自動化的, 但是我們在這里只討論手動操作。

8、 手動測試的必備工 具包括:? Paros proxy () ,用于截獲 HTTP 通信數(shù)據(jù)? Fiddler () ,用于截獲 HTTP 通信數(shù)據(jù)? Burp proxy ()? TamperIE () ,用于修改 GET 和 POST我們以上至少列出了三種 Web 代理軟件。 也可以尋找其他不同的類似產(chǎn)品, 因為 每種產(chǎn)品都有它自己的獨到之處。下面,您需要在 Web 瀏覽器發(fā)出 HTTP 請求之前截獲 這些請求,并修改它們以注入 XSS 測試代碼。上面所有這些工具都可以完成這項任務(wù),某 些工具還會顯示返回的 HTML 源代碼(如果您選擇了截獲服務(wù)器響應(yīng)) 。 截獲客戶端發(fā)出的 GET 和

9、POST 請求非常重要。這樣可以繞過所有的客戶端 javascript 輸入驗證代碼。我在這里要提醒所有 Web 開發(fā)人員 - 客戶端安全控制是靠不住的。應(yīng)該 總是在服務(wù)器端執(zhí)行有效性驗證。確定站點及其功能 - 與開發(fā)人員和 PM 交流 繪制一些簡單的數(shù)據(jù)流圖表, 對站點上的頁面及其功能進行描述。 此時, 可以安排 一些與開發(fā)人員和項目經(jīng)理的會議來建立威脅模型。 在會議上盡可能對應(yīng)用程序進行深入探 討。站點公開了 Web 服務(wù)嗎?是否有身份驗證表單?有留言板嗎?有用戶設(shè)置頁面嗎?確 保列出了所有這些頁面。找出并列出所有由用戶提供輸入的點 對站點地圖進行進一步細化。 我通常會為此創(chuàng)建一個電子表格

10、。 對于每個頁面, 列 出所有查詢字符串參數(shù)、 cookie 值、自定義 HTTP 標頭、 POST 數(shù)據(jù)值和以其他形式傳遞 的用戶輸入。不要忘記搜索 Web 服務(wù)和類似的 SOAP 請求,并找出所有允許用戶輸入的 字段。分別列出每個輸入?yún)?shù), 因為下面需要獨立測試每個參數(shù)。 這可能是最重要的一個 步驟!如果閱讀下面的電子表格,您會看到我已經(jīng)在示例站點中找出了一大堆這樣的東西。 如 forwardURL 和 lang 這樣的查詢字符串。如 name、 password、 msgBody 、 msgTitle 和 這樣的 POST 數(shù)據(jù),甚至某些 Cookie 值。所有這些都是我們感興趣的重要測

11、試內(nèi)容。認真思考并列出測試用例使用已經(jīng)得到的電子表格并列出各種用來測試XSS 漏洞的方法。 我們稍候?qū)⒂懻摳鞣N方法, 但是現(xiàn)在先讓我們看看我的電子表格的屏幕截圖, 請注意, 我列出了頁面上允許 的每個值以及每個值的所有測試類型。 這種記錄測試的方法僅是我自己的習(xí)慣, 您可以使用 自己的方法。我喜歡記錄所有東西,以便我能知道已經(jīng)做了哪些工作和哪些工作沒有做。開始測試并注意輸出結(jié)果在查找漏洞的過程中, 最重要的部分并不是您是否找到了漏洞。 而是您是否真正知 道究竟發(fā)生了哪些事情。對于XSS,只需檢查 HTML 輸出并看看您輸入的內(nèi)容在什么地方。它在一個 HREF 標記中嗎?是否在 IFRAME 標

12、記中?它在 CLSID 標記中嗎?在 IMG SRC 中嗎?某些 Flash 內(nèi)容的 PARAM NAME 是怎樣的?我會檢查所有這些情況, 如果您對所輸入內(nèi)容的目的十分了解, 可以調(diào)整您的測試 來找出問題。這意味著您可能需要添加一個額外的封閉括號“”來讓某個標記變得完整,或者添加一個雙引號來關(guān)閉標記內(nèi)的一個元素?;蛘?,您可能需要使用 URL 或 HTML 來 編碼您的字符,例如將雙引號變?yōu)?%22 或 。嗯,并不那么容易,這個站點看來防范比較嚴密。現(xiàn)在該怎么辦呢?那么,也許您的簡單測試用例alert( hi ) 并不能產(chǎn)生期望中的警告對話框。 仔細想想這個問題并在可能的情況下與開發(fā)人員進行交

13、流。 也許他們對輸入中 的尖括號、單引號或圓括號進行了過濾。也許他們會過濾“script ”這個詞。重新研究為何輸入會產(chǎn)生這樣的輸出,并理解每個值(查詢字符串、cookie 、 POST 數(shù)據(jù))的作用?!?pageId=10”這樣的查詢字符串值可能對輸出沒有影響,因此不值得花費時間測試它。有 時,最好試著注入單個字符(例如尖括號、雙引號標記或者圓括號) ,看看應(yīng)用程序是否過 濾這些字符。然后,便可以知道您面對的過濾級別究竟如何。接著,可以調(diào)整測試方法,對 這些字符進行編碼并重試,或者尋找其他注入辦法。我恐怕無法充分對此進行說明: 研究輸入的值會輸出什么樣的 HTML 頁面非常重要。 如果 它們

14、不能產(chǎn)生輸出, 那么不要在它們上面浪費時間。如果可以,請進行研究, 因為您需要根 據(jù)輸出對測試進行相應(yīng)的修改。我使用了各種變化形式來找出能接受和顯示腳本代碼的參 數(shù)。因為這涉及太多內(nèi)容,因此在這里無法一一進行討論,但是請務(wù)必注意以下幾種情況:alert( XSS)%22%27AK%22%20style%3D%22background:url(javascript:alert(%27XSS%27)%22%20OS%22%22%2Balert(%27XSS%27)%2B%22有許多變化形式可以嘗試。 關(guān)鍵在于了解程序究竟使用何種方式處理輸入和顯示輸 出頁面。如同這些例子所展示的,常見的變化形式經(jīng)常

15、是在腳本代碼前面加上“ ”,以嘗試封閉網(wǎng)站可能在輸出中生成的標記。 還可以對代碼進行 URL 編碼, 嘗試繞過服務(wù)器端 的輸入過濾功能。此外,因為尖括號“ ”通常會在輸入時被過濾和從輸出中刪除,所以還必須嘗試不需要尖括號的 XSS,例如 ” &alert(XSS); ”持久和動態(tài)找出一個成功的 XSS 頗費周折, 因為在開始時 XSS 攻擊可能并不是那么顯而易 見的。隨便舉一個例子,如果向網(wǎng)站添加一條新留言并在“msgTitle ”值中注入代碼,在提交數(shù)據(jù)后,您可能不會立即看到腳本代碼被執(zhí)行。但是,當(dāng)您訪問留言板的時侯,將會在 HTML 頁面中使用“ msgTitle ”值并將其作為腳本代碼執(zhí)行。 這種情況被稱作持久性 XSS 攻 擊,如果包含腳本代碼的值將被保存到客戶端或者后端系統(tǒng)并在稍候的時間被執(zhí)行, 便會發(fā) 生此種攻擊。而與此相對的是動態(tài) XSS 攻擊,這種攻擊會立即執(zhí)行并只發(fā)生一次。比如,如果 某個鏈接或 GET 請求在某個用來控制頁面輸出的查詢字符串中包含了腳本代碼, 那么在點 擊鏈接后會立即顯示輸出。總結(jié)XSS 測試通常只是整個 Web 應(yīng)用程序安全性審查工作的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論