1. 程式人生 > 實用技巧 >xss原理解析

xss原理解析

xss->跨站指令碼攻擊

xss是指攻擊者在網頁中嵌入客戶端指令碼。通常是指javascript編寫的一個危險程式碼,當用戶使用瀏覽器瀏覽網頁時,指令碼就會在使用者的瀏覽器上執行,從而達到攻擊者的目的。

-->javascript越強,xss就越強

危害:

1.盜取使用者賬號

2.盜取使用者cookie資料,冒充使用者身份進入網站

3.劫持使用者會話,執行任意操作

4.執行彈窗廣告

5.傳播蠕蟲病毒

屬於客戶端攻擊,受害者是使用者與瀏覽器,但由於網站管理人員也是使用者 之一,從而也可以進行服務端攻擊

挖掘xss

尋找指令碼程式的輸出顯示程式,搜尋關鍵字,顯示輸出某個變數,跟蹤變數是否被過濾

一些web安全中常見名詞解釋

exp 漏洞的完整利用工具

poc 漏洞的驗證與檢測

shellcode 利用漏洞時執行的程式碼

payload 攻擊載荷 sqlmap中payload為攻擊程式碼的模板 msf 與shellcode類似,功能是建立與目標的連線

驗證xss是否存在poc常用:

<script>alert(/xss/)</script>

<script>confirm(/xss/)</script>

<script>prompt(/xss/)</script>

若提交的程式碼被當作字串輸出在html頁面中,瀏覽器會根據[<script>]標籤檢測為js語句,並執行它,執行彈窗操作,

從而可執行其他js任意語句,可驗證xss漏洞的存在。

反射型xss

非永續性,引數型的跨站指令碼.

js程式碼在web應用的引數(變數)中,如搜尋框的反射型xss.

儲存型xss

永續性跨站指令碼

體現在xss程式碼不是在某個引數中,而是寫進資料庫或檔案中,可以永久的保持在資料的介質中

通常發現在留言板等地方.

DOM XSS

其中攻擊的payload是由於修改受害者瀏覽器頁面的DOM樹而執行的

特殊的地方在於payload在瀏覽器本地修改dom樹而執行,並不會傳到伺服器上

導致伺服器端無法檢測DOM XSS,導致DOM XSS比較難以發現,原始碼中並無xss程式碼。

<script>

var a=document.URL;->變數a為現在的url地址

a=unescape(a);->對現在的url地址進行解碼

document.write(a.substring(a.indexOf("message=")+8,a.length));->將message後的字串擷取然後打印出來

js中substring函式講解

定義和用法

substr() 方法可在字串中抽取從 start 下標開始的指定數目的字元。

與substring()和slice()類似

語法

stringObject.substr(start,length)
引數描述
start 必需。要抽取的子串的起始下標。必須是數值。如果是負數,那麼該引數宣告從字串的尾部開始算起的位置。也就是說,-1 指字串中最後一個字元,-2 指倒數第二個字元,以此類推。
length 可選。子串中的字元數。必須是數值。如果省略了該引數,那麼返回從 stringObject 的開始位置到結尾的字串。

返回值

一個新的字串,包含從 stringObjectstart(包括 start 所指的字元) 處開始的 length 個字元。如果沒有指定 length,那麼返回的字串包含從 startstringObject 的結尾的字元。

indexOf函式

定義和用法

indexOf() 方法可返回某個指定的字串值在字串中首次出現的位置。

語法

stringObject.indexOf(searchvalue,fromindex)
引數描述
searchvalue 必需。規定需檢索的字串值。
fromindex 可選的整數引數。規定在字串中開始檢索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略該引數,則將從字串的首字元開始檢索。

說明

該方法將從頭到尾地檢索字串 stringObject,看它是否含有子串 searchvalue。開始檢索的位置在字串的 fromindex 處或字串的開頭(沒有指定 fromindex 時)。如果找到一個 searchvalue,則返回 searchvalue 的第一次出現的位置。stringObject 中的字元位置是從 0 開始的。