1. 程式人生 > >XSS跨站指令碼攻擊讀書筆記

XSS跨站指令碼攻擊讀書筆記

0x00測試環境

1、firefox瀏覽器、firebug外掛。

2、Apache伺服器,php環境。

3、背景知識:跨站指令碼攻擊XSS,(cross site script)縮寫是CSS,但是為了和層疊樣式表(cascading style sheet ,css)區別,在安全領域叫做“XSS”。

XSS攻擊,通過HTML注入修改網頁,插入惡意指令碼,從而在使用者瀏覽時候,控制使用者瀏覽器的一種攻擊。由於剛開始攻擊演示的案例是跨域的,所以叫做“跨站指令碼”

(1)第一種型別,反射型XSS(非持久型XSS)

將下列php編輯好命名為test.php,放在Apache目錄下,在瀏覽器執行該檔案。

<?php


$input = $_GET["param"];               //注入點


echo "<div>".$input."</div>";          //注入輸入資料顯示


echo "這是一個測試XSS程式碼!!";


?>



2.png

3.png

4.png

我提交一個引數在地址後面localhost/test.php?param=這是一個XSS測試

6.png

可以用firebug外掛看到網頁程式碼發生了改變。(圖中紅色框框)

我在嘗試改變一下後面的引數localhost/test.php?param=<script>alert(/xss/)</script>

7.png

出現注入提示。點選確定後,網頁程式碼放生了變化。

8.png

使用者輸入的script指令碼已經寫入了網頁中,這就是反射型XSS攻擊,把使用者輸入的資料放射給瀏覽器,也叫非持久型XSS。攻擊者將惡意程式碼填入請求的引數中,頁面輸出執行了攻擊者輸入的惡意程式碼(反射型 XSS,非持久化,需要欺騙使用者自己去點選連結才能觸發 XSS 程式碼)

(2)儲存型XSS(持久型XSS)

儲存型 XSS,持久化,程式碼是儲存在伺服器中的,如在個人資訊或發表文章等地方,加入程式碼,如果沒有過濾或過濾不嚴,那麼這些程式碼將儲存到伺服器中,使用者訪問該頁面的時候觸發程式碼執行。

(3)DOM Base XSS

反射型XSS的一個分支,通過修改頁面DOM節點形成的XSS。該漏洞是基於文件物件模型(Document Objeet Model,DOM)的一種漏洞。DOM 是一個與平臺、程式語言無關的介面,它允許程式或指令碼動態地訪問和更新文件內容、結構和樣式,處理後的結果能夠成為顯示頁面的一部分。DOM 中有很多物件,其中一些是使用者可以操縱的,如 URI ,location,refelTer 等。客戶端的指令碼程式可以通過 DOM 動態地檢查和修改頁面內容,它不依賴於提交資料到伺服器端,而從客戶端獲得 DOM中的資料在本地執行,如果 DOM 中的資料沒有經過嚴格確認,就會產生 DOM-based XSS 漏洞。

測試DOM程式碼如下:

<script>
function test()
{
       var str=document.getElementById("text").value;                            
       document.getElementById("t").innerHTML="<a href='"+str+"' >testLink</a>"; //呼叫innerHTML將使用者資料當中HTML寫入到網頁中,注入點
 
}
</script>
 
<div id="t" ></div>
<input type="text" id ="text"value="" />                                        //取文字框裡面的值
<input type="button" id="s"value="write" onclick="test()" />                   //呼叫test()函式

網頁中會出現一個文字框和一個按鈕,當點選按鈕就會出現一個連線(test()函式)。執行該javascript程式碼。

9.png

點選按鈕後會呼叫test()函式,在文字框上出現一個連結。

我構造一個數據' onclick=alert(/xss/) // ,寫入的資料中前一個單引號閉合了href 語句中第一個單引號,最後//註釋掉最後一個單引號。

10.png

輸入完資料後,點選按鈕,再點選連結地址teskLink,就會出現如下圖:

11.png

另外一種注入測試:

構造一個新的事件,選擇閉合掉原來程式碼中<a>,插入一個新的HTML標籤。'><img src=# onerror=alert(/xss2/) /><'

12.png

**********************************************************************

by:答案

time:2017-2-28

**********************************************************************