天天看點

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

一.什麼是XSS

1.XSS原理

跨網站腳本(Cross-site scripting,XSS) 又稱為跨站腳本攻擊,是一種經常出現在Web應用程式的安全漏洞攻擊,也是代碼注入的一種。XSS是由于Web應用程式對使用者的輸入過濾不足而産生的,攻擊者利用網站漏洞把惡意的腳本代碼注入到網頁之中,當其他使用者浏覽這些網頁時,就會執行其中的惡意代碼,對受害者使用者可能采取Cookie竊取、會話劫持、釣魚欺騙等各種攻擊。這類攻擊通常包含了HTML以及使用者端腳本語言。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

XSS攻擊通常指的是通過利用網頁開發時留下的漏洞,通過巧妙的方法注入惡意指令代碼到網頁,使使用者加載并執行攻擊者惡意制造的網頁程式。這些惡意網頁程式通常是JavaScript,但實際上也可以包括Java、VBScript、ActiveX、 Flash或者甚至是普通的HTML。攻擊成功後,攻擊者可能得到更高的權限(如執行一些操作)、私密網頁内容、會話和cookie等各種内容。

漏洞成因

如下圖所示,在URL中将搜尋關鍵字設定為JS代碼,執行了alert()函數。該圖中,上面有一個URL,下面是一個頁面傳回的HTML代碼,我們可以看到白色部分HTML是我們事先定義好的,黑色部分參數是使用者想搜尋的關鍵詞。當我們搜尋了test+Div最後等于123,背景回報頁面的搜尋引擎會告訴使用者搜尋了什麼關鍵詞,結果如何等等。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

這個地方如果沒有做好轉移,可能會造成XSS跨站,我們可以看到藍色部分是我們事先定義好的結構,被攻擊者利用之後它先把這個DIV結束了,最後加上一個script标簽,它也有可能不跟你談标簽,直接發送到它的伺服器上。參數未經過安全過濾,然後惡意腳本被放到網頁中執行,使用者浏覽的時候就會執行了這個腳本。

該漏洞存在的主要原因為:

參數輸入未經過安全過濾

惡意腳本被輸出到網頁

使用者的浏覽器執行了惡意腳本

2.XSS示例

作者接下來使用WAMP(Windows+Apache+MySQL+PHP)搭建PHP網站平台作,簡單講解兩個常見案例。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

示例1:GET送出

下面是一個簡單的XSS漏洞代碼(xss-01.php)

<?phpecho "這是一個XSS漏洞攻擊測試頁面!
";$xss = $_GET['x'];echo $xss;//JS代碼:?>
           

當輸入正确的值時,網頁能正常顯示。

http://localhost/xss/xss-01.php?x=122
           

輸出結果如下圖所示:

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

而當我們輸入JS腳本代碼時,它會彈出相應的視窗,這就是一個XSS注入點。

http://localhost/xss/xss-01.php?x=
           
html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

示例2:POST送出另一種常見的XSS上傳漏洞代碼如下所示:

index.html

XSS測試1請輸入使用者名:
           

xss.php

測試結果<?phpecho $_REQUEST['name'];?>
           

輸入正确的使用者名如“eastmount”,仍然能正确顯示。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結
html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

而輸入腳本代碼 < script>alert(1)< /script> 時,它彈出了對應的腳本視窗,存在XSS注入漏洞。注意,這裡采用的是POST方法送出資料,而前面采用的GET方法,其最主要的差別是GET方式的網址可以看到參數,而POST方式URL始終不變。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結
html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

頁面直接彈出了“1“”的視窗,可以看到,我們插入的語句已經被頁面給執行了。這就是最基本的反射型的XSS漏洞,這種漏洞資料流向是: 前端–>後端–>前端。

3.XSS危害

XSS跨腳本攻擊主要的危害如下:

網絡釣魚,包括盜取各類使用者賬号

竊取使用者Cookies資料,進而擷取使用者隐私資訊,或利用使用者身份進一步對網站執行操作

劫持使用者浏覽器會話,進而執行任意 操作,例如進行非法轉賬、強制發表日志、發送電子郵件等

強制彈出廣告頁面、惡意 刷流量等

網站挂馬,進行惡意操作,例如任意篡改頁面資訊、非法擷取網站資訊、删除檔案等

進行大量的用戶端攻擊,例如DDOS攻擊、傳播跨站腳本蠕蟲等

擷取使用者端資訊 ,;例如使用者的浏覽記錄、真實IP位址、開放的端口等

結合其他漏洞,如CSRF漏洞,實施進一步作惡

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

PS:上面涉及的很多内容,作者會進一步學習,并分享相關的内容,一起進步 ,一起加油!

二.XSS分類

XSS有部分書籍将它劃分為兩類——反射型和持久型。

反射型

也稱為非持久型、參數型跨站腳本。這種類型的跨站腳本是最常見,也是使用最廣泛的一種,主要用于惡意腳本附加到URL位址的參數中。一般出現在輸入框、URL參數處。

持久型

持久型跨站腳本也可以說是存儲型跨站腳本,比反射型XSS更具威脅性,并且可能影響到Web伺服器自身安全。一般出現在網站的留言、評論、部落格日志等于使用者互動處。

而另一部分書籍将XSS分為三種類型——反射型、存儲型以及DOM型,這也是本篇文章重點講解的分類方式。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

反射型又稱為非持久型、參數型跨站腳本。這種類型的跨站腳本是最常見,也是使用最廣泛的一種,主要用于惡意腳本附加到URL位址的參數中。它需要欺騙使用者自己去點選連結才能觸發XSS代碼(伺服器中沒有這樣的頁面和内容),一般容易出現在搜尋頁面、輸入框、URL參數處。反射型XSS大多數是用來盜取使用者的Cookie資訊。其攻擊流程如下圖所示:(該圖檔源自謝公子文章)

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

下圖是專門訓練一些WEB漏洞的練習頁面,我們可以輸入自己的名字,輸入之後會把我們的名字顯示出來。例如我們輸入了一個“張三”,這個時候彈出來了一個“123”,在那邊顯示了一個張三,但是script标簽沒有出來,因為這個标簽被執行了。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結
html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

示例:

這就是最基本的反射型的XSS漏洞,這種漏洞資料流向是: 前端–>後端–>前端。其代碼案例如前面所述:

//前端頁面 index.htmlXSS測試1請輸入使用者名://後端頁面 xss.php<?php $name = $_POST['name'];echo $name;?>
           

當使用者送出資料,輸入 < script>alert(‘hack’)< /script> 代碼會送出給背景,并彈出hack頁面,這就表示我們的惡意語句被頁面執行了。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結
html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

2.存儲型

存儲型XSS又稱為持久型跨站腳本,比反射型XSS更具威脅性,并且可能影響到Web伺服器自身安全。它的代碼是存儲在伺服器中的,如在個人資訊或發表文章等地方,插入代碼,如果沒有過濾或過濾不嚴,那麼這些代碼将儲存到伺服器中,使用者通路該頁面的時候觸發代碼執行。存儲型XSS一般出現在、評論、部落格日志等于使用者互動處,這種XSS比較危險,容易造成蠕蟲、盜竊cookie等。其攻擊流程如下圖所示:(該圖檔源自謝公子文章)

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

在存儲型XSS中,可以看到這個URL上面并沒有代碼,但是依然彈出了一個“1”。它是發現個人資料頁的時候有一個XSS漏洞,在個性簽名的位置填入了一個XSS标簽,彈出了一個“1”,把這個位址發給别人,别人看到這個位址并沒有什麼代碼以為這個頁面是安全的,結果一打開就插入了這個XSS代碼。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

存儲型XSS的攻擊危害比較大,因為它的頁面當中是看不到這個Script的代碼,别人防不勝防。隻要管理者沒有發現,下一個使用者或者下一個使用者一直接發它,而反射型需要使用者主動點選的。

示例:假設現在存在一個 index2.html 代碼,使用者送出ID和使用者名并存儲至資料庫中。

XSS測試2歡迎大家閱讀CSDN Eastmount的部落格,一起進步,一起加油喔!
請輸入使用者名:
ID:
Name:
           

背景的 xss2.php 将執行資料庫存儲操作,本地MySQL資料庫建立一個名為 XSSDB的資料庫,并插入一張XSS表,如下圖所示。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結
html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

xss2.php代碼如下所示:

<?php //擷取送出的表單值$id=$_POST["id"];$name=$_POST["name"];echo $id,'
';echo $name,'
';//連接配接資料庫//因為PHP版本是7.3的,是以用mysqli_connect()而不是用mysql_connect()$con = mysqli_connect("localhost","root","123456", "xssdb");if (!$con) { die('Could not connect database: ' . mysqli_error()); }//插入資料表$sql = "insert into xss (id,name) values ('{$id}','{$name}');";echo $sql;$result 
           

此時另一個頁面 select.php 負責提供給其他使用者通路,則可以看到我們的資訊。

<?php $id = $_GET['id'];//連結資料庫$con = mysqli_connect("localhost","root","123456", "xssdb");//查詢資料$sql = "select * from xss where id='{$id}';";$result = mysqli_query($con, $sql);//$data = mysqli_fetch_all($result); // 從結果集中擷取所有資料//print_r($data);while($row = mysqli_fetch_assoc($result)) {echo $row['name'];}?>
           

當我們輸入正确的值,如下圖所示:id:1

name:yangxiuzhang

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

此時資料庫中可以看到我們插入的值。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

通過本地網址(localhost:8088/xss/select.php?id=1)我們能擷取id為1對應的name值。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

當我們輸入JS代碼時,該程式又将如何運作呢?接着我們插入如下資料:

id:2

name:< script>alert(‘hack’)< /script>

注意,這裡的hack的單引号要進行轉義,因為sql語句中的$name是單引号的,是以這裡不轉義的話就會閉合sql語句中的單引号,不然注入不進去。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

原理:使用者送出資料到後端,後端存儲至資料庫中,然後當其他使用者通路查詢頁面時,後端調出資料庫中的資料,顯示給另一個使用者,此時的XSS代碼就被執行了。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

此時資料庫插入的内容如下所示,可以看到JS代碼已經成功插入我們的背景。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

最後,我們調用 select.php (localhost:8088/xss/select.php?id=2)頁面,可以看到成功執行了該腳本檔案。

存儲型XSS的資料流向為:前端–>後端–>資料庫–>後端–>前端。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

3.DOM型

首先,什麼是DOM呢?

DOM是指文檔對象模型,是一個平台中立和語言中立的接口,有的程式和腳本可以動态通路和更新文檔的内容、結構和樣式。在web開發領域的技術浪潮中,DOM是開發者能用來提升使用者體驗的最重要的技術之一,而且幾乎所有的現在浏覽器都支援DOM。

DOM本身是一個表達XML文檔的标準,HTML文檔從浏覽器角度來說就是XML文檔,有了這些技術後,就可以通過javascript輕松通路它們。下圖是一個HTML源代碼的DOM樹結構。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

其次,什麼優勢DOM-XSS呢?

DOM-XSS漏洞是基于文檔對象模型(Document Objeet Model,DOM)的一種漏洞,不經過後端,DOM-XSS是通過url傳入參數去控制觸發的,其實也屬于反射型XSS。

DOM型的XSS是一些有安全意識的開發者弄出來的,比如說接受參數會做一些過濾,把一些字元轉義一下,但是轉義之後依然會存在着XSS的情況。常見可能觸發DOM-XSS的屬性包括:document.referer、window.name、location、innerHTML、documen.write等。

如下圖所示,我們上面輸入的可以看到這行代碼規律,把這個大括号、小括号以及雙頁号進行轉移,按理說轉移之後它應該不會再作為它的标簽存在,不會存在XSS的代碼。

下面Script通過ID獲得的這個值,複制到了這個DIV上,經過DOM操作之後,之前轉義的字元就變為它的标簽,是以經過DOM操作的XSS我們稱之為DOMXSS。它有可能通過URL傳播,也有可能通過伺服器傳播。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

最後,DOM型跨站腳本的攻擊是如何實作呢?

下面簡單講解一個DOM-XSS代碼,假設前端是一個index3.html頁面。

DOM-XSS測試3歡迎大家閱讀CSDN Eastmount的部落格,一起進步,一起加油喔!
請輸入使用者名:
           

接着設定背景頁面,xss3.php用于擷取送出的值并顯示其在頁面中。注意,代碼是擷取username中的值,然後顯示在print内,這也是導緻XSS的原因。

<?php //擷取送出的表單值$name=$_POST["name"];?>
           

此時,當我們輸入正常的參數,它顯示的結果如下圖所示,是正常顯示的。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結
html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

而當我們輸入惡意代碼的時候,比如送出

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

給背景,它會執行我們的JS代碼,彈出hack的窗體。進而證明了DOM-XXSS是存在的。

DOM型跨站腳本漏洞的資料流向是:前端->浏覽器。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結
html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

三.XSS構造及漏洞利用

1.XSS構造

在進行SQL注入中,我們可以設定相應的過濾函數防止,比如防止萬能密碼(‘or’='or’或admin),也能調用preg_replace()函數将特色字元過濾。同樣,XSS攻擊代碼也可能會被過濾,如下所示,它将< script>和 < /script>進行了過濾。

<?php $name=$_POST["name"];     if($name!=null){        //過濾    $name=preg_replace("//","",$name);      echo $name;     }?>
           

如何繞過這個過濾呢?這裡可以通過大小寫成功繞過 ,如下所示:

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

為了更好地了解XSS跨站腳本攻擊,更好地進行防禦,這裡我們分享常見的繞過XSS過濾(XSS-Filter)的方法。

1) 利用<>标記注射HTML、JavaScript

通過
           

2) 利用HTML标簽屬性值執行XSS

通過javascript:[code]僞協定形式編寫惡意腳本 常用案例:     
           
html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

3) 空格回車Tab繞過過濾

注意javas和cript之間的間隔不是由空格鍵添加的,而是用Tab鍵添加的。    使用回車分隔:
           

4) 對标簽屬性值進行轉碼

替換成: 其中,t的ASCII碼值為116,用”t”表示,:則表示:。再進一步替換:
           

5) 産生事件如click、mouseover、load等

W3C(網際網路聯盟)将事件分為3種不同的類别:

  • 使用者接口(滑鼠、鍵盤)
  • 邏輯(處理的結果)
  • 變化(對文檔進行修改)

6) 利用CSS跨站過濾

常見示例如下所示:

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結
html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

7) 擾亂XSS過濾規則

利用注釋符

和0– CSS關鍵字轉碼

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結
html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結
html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

8) 利用字元編碼

9) 利用字元編碼eval()函數、eval()和string.fromCharCode()函數過濾

PS:由于JavaScript代碼必須要寫在代碼塊中才能顯示,是以文章包含了很多代碼塊,望讀者了解。

2.挖掘其他XSS漏洞

其他惡意攻擊包括黑盒攻擊測試、源代碼審計、Flash XSS等。

1)黑盒攻擊測試

Acunetix Web Vulnerability Scanner 是一款商業級的web漏洞掃描程式,它的功能非常強大,可以自動化檢查各種web應用漏洞,包括XSS、SQL注入、代碼執行、目錄周遊、網站源代碼暴力等。

注意:下一篇文章作者将結合AWVS詳細講解XSS跨站腳本攻擊的實戰案例。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

黑盒攻擊測試手工檢測XSS代碼常見用法包括:

2) 源碼審計

顧名思義就是檢查源代碼中的安全缺陷,檢查程式源代碼是否存在安全隐患,或者有編碼不規範的地方,通過自動化工具或者人工審查的方式,對程式源代碼逐條進行檢查和分析,發現這些源代碼缺陷引發的安全漏洞,并提供代碼修訂措施和建議。

例如,PHP全局變量如下所示:

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

3) Flash XSS

關于Flash的跨站漏洞其實很早就出現了。Flash的安全漏洞也不僅僅隻有XSS,還有CSRF、跨域、代碼執行等其他安全問題。Flash中程式設計使用的是ActionScript腳本,Flash産生的xss問題主要有兩種方式:加載第三方資源和與javascript通信引發XSS。

Flash确實存在很多漏洞,後續讀者也想深入研究了解,看看能不能複現幾個漏洞代碼出來。同時,Flash XSS感興趣的讀者可以閱讀安全脈搏大神的這篇文章:https://www.secpulse.com/archives/44299.html

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

四.如何防禦XSS

由于XSS通常可以插入在script标簽、HTML注釋、标簽屬性名、标簽屬性值、标簽名字、CSS等中,是以接下來我們簡單講講如何防禦XSS攻擊。

1.輸入過濾

輸入驗證就是對使用者送出的資訊進行有效驗證,僅接受指定長度範圍内的,采用适當的内容送出,阻止或者忽略除此外的其他任何資料。如下代碼,檢查使用者輸入的電話号碼是否真确(數字、字母檢測)。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

輸入正确和錯誤分别提示。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

輸入驗證要根據實際情況設計,下面是一些常見的檢測和過濾:

輸入是否僅僅包含合法的字元

輸入字元串是否超過最大長度限制

輸入如果為數字,數字是否在指定的範圍

輸入是否符合特殊的格式要求,如E-mail位址、IP位址等

2.輸出編碼

大多數的Web應用程式都存在一個通病,就是會把使用者輸入的資訊完完整整的輸出在頁面中,這樣很容易便會産生一個XSS。HTML編碼在防止XSS攻擊上起到很大的作用,它主要是用對應的HTML實體編号替代字面量字元,這樣做可以確定浏覽器安全處理可能存在惡意字元,将其當做HTMl文檔的内容而非結構加以處理。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

3.标簽黑白名單過濾

有時根本就不需要考慮到它是不是HTML标簽,我們根本用不到HTML标簽。不管是采用輸入過濾還是輸出過濾,都是針對資料資訊進行黑/白名單式的過濾。

不同的javascript寫法包括:

黑名單:

過濾可能造成危害的符号及标簽,發現使用者輸入參數的值為 < script>xxx< /script> 就将其取代為空白。其優點是可以允許開發某些特殊HTML标簽,确實是可能因過濾不幹淨而使攻擊者繞過規則。

白名單:

白名單僅允許執行特定格式的文法,僅允許< img scr=“http://xxx” > 格式,其餘格式一律取代為空白。其優點是可允許特定輸入格式的HTML标簽,确實是驗證程式編寫難度校高,且使用者可輸入變化減少。

4.代碼實體轉義

由于隻保留文字部分是一勞永逸的,有時我們還需要展示這個标簽,比如說程式論壇當中要貼一個代碼,這個時候我們需要用一些轉義,它會把這個大括号、小括号以及雙引号做一個轉義,做為一個字元,就無法執行這個标簽型,後面加一個參數,但有時候單引号也會造成XSS。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

5.httponly防止cookie被盜取

一個信号當中有那麼多的地方存在着這個輸入以及檢測的地方,可能就有一些地方漏掉,隻要有一個地方漏掉了,使用者的cookie資訊就被盜取了。伺服器在發送使用者資訊的時候,我們需要加上一個httponly,這個代碼無法讀取到cookie的資訊,那麼攻擊者也是得不到這個資訊,這對于使用者來說也是非常好的保護。

比如說張三在我們網站上登陸了一下使用者名,李四他特意發了一個攻擊請求,他拿不到這個使用者ID,就冒充不了這個張三。如果在Cookie中設定了HttpOnly屬性,那麼通過js腳本将無法讀取到Cookie資訊,這樣能有效的防止XSS攻擊。

最重要的是:千萬不要引入任何不可信的第三方JavaScript到頁面裡!

五.總結

希望這篇文章對你有所幫助,尤其是網絡安全的初學者,作者寫這篇文章加實驗真的快吐了,哈哈!但隻要對你們有幫助,我就很開心,後續會結合AWVS工具操作XSS攻擊實戰案例。這是Python網絡攻防系列文章,作者也是初學者,而且是仰仗各位大牛的無私分享而寫下的實戰總結,希望對你們有幫助。

html插入flash代碼_十八.XSS跨站腳本攻擊原理及代碼攻防示範(一)一.什麼是XSS二.XSS分類三.XSS構造及漏洞利用五.總結

網絡安全的視訊資源确實挺貴的,作者也會繼續開源免費的分享更多文章和代碼,希望能幫到更多的初學者,你們的每一句感謝和祝福都激發着我前行。轉眼間,1024節日要來了,我還是寫一篇《我與CSDN的這十年》,分享下程式猿和程式媛的故事,紀念這十年奮鬥和感動的日子。十年,說長不長,說短不短,人生進度條的八分之一,都是青春,都是熱血。感謝你我的分享和堅守,也期待下一個十年。明天早起上課,下午回來寫文章,加油~

2019年10月12日 晚上寫于武漢

繼續閱讀