xss講解

xss漏洞發生在前端,攻擊的是瀏覽器的解析引擎javascript

xss就是讓攻擊者的javascript代碼在受害者的瀏覽器上執行php

xss攻擊者的目的就是尋找具備xss漏洞的網頁,讓受害者在不知情的狀況下,在有xss漏洞的網頁上執行攻擊者的js代碼html

xss是提早埋伏好漏洞陷阱,等着受害者上鉤。前端

既然攻擊者是執行javascript代碼,因此攻擊的語句應該能讓javascript運行。java

javascript運行條件:"<script></script>"標籤中,onclick=事件屬性中數據庫

xss的攻擊payload必定知足上述條件瀏覽器

xss學習主要是以測試看到效果爲主,一般的明顯效果就是使用alert彈個框,彈框意味着咱們的js執行了。服務器

xss攻擊,必定牢記「輸入輸出」,輸入指的是攻擊者對服務器網頁輸入惡意代碼,輸出指的是瀏覽器接收到代碼後能解析並輸出到前端。cookie

xss的原理就是開發者沒有對輸入內容進行過濾,致使經過攻擊者精心構造的前端代碼,輸入後和原有的前端代碼產生混淆,造成新的頁面語句,而且新的頁面語句能被瀏覽器解析並輸出。dom

xss測試步驟:

一、找到輸入點,隨便亂輸,輸完字符後,查看輸出。

二、打開網頁源代碼,在源代碼中查看輸出的位置。

三、以testxss.php爲例

輸入內容:abcd

輸出的位置:<input type="text" value="abcd">

咱們的目的是進行xss攻擊,執行js代碼。執行js代碼的條件是要有script標籤或事件屬性。

<script>alert(1)</script> 這個是必定能在頁面上執行彈警告框的

若是咱們直接輸入上述代碼,會變成:

<input type="text" value="<script>alert(1)</script>"> 這個並不符合html的語法

爲了使alert能夠執行,就須要把上面的內容變換一下:

<input type="text" value=""><script>alert(1)</script>">  變成這樣的話,就是input和script兩個標籤都能執行

所以,咱們的輸入就變成

"><script>alert(1)</script>

那此時瀏覽器在解析的時候,就會解析出兩個元素,一個是input,一個是script,從而執行了咱們在script中的js代碼,完成了xss攻擊

要使用事件屬性觸發:

<img src=1 onclick="alert(1)">
payload1:"><img src=1 onclick="alert(1)">
payload2: " onclick="alert(1)

反射型XSS

咱們構造好一個urlxss的payload,發送給受害者,受害者點擊惡意連接後會在受害者的瀏覽器上執行惡意代碼。反射型xss是一次性的,並且比較容易被發現。一般惡意鏈接會被修改爲短連接,或釣魚圖片的形式。

存儲型xss

存儲型又叫永久性xss,常見於留言板。由於存儲型xss的頁面會將用戶輸入的內容存入到數據庫內,因此當其餘人每訪問一次的時候,服務器都會從數據庫將攻擊者輸入的內容調取到前端瀏覽器解析,所以每一次訪問就至關於一次xss攻擊。

以dvwa靶場中的存儲型xss爲例:xss(stored)

這是一個留言板,攻擊者輸入的惡意代碼被存入數據庫,當其餘受害者訪問該留言板的時候,後臺就會把數據庫的惡意代碼調取到前端能夠被解析的位置,天然每一次訪問都會中招。

DOM型xss

不與服務器交互,本質上也是一種反射型xss。主要利用js使用dom對前端html進行操做時候產生的漏洞。DOM型xss的難點就在於經過閱讀javascript來肯定輸出的位置,纔好構建輸入的payload。

DOM型XSS可經過開發者工具觀察js變化

實戰中如何利用xss呢?

經過xss獲取受害者cookie信息。

條件:

一、有一個xss漏洞頁面;

二、攻擊者須要一個xss信息接收平臺

實驗目的:獲取受害者cookie,並以受害者的身份瀏覽網站。

實驗工具:攻擊者接收xss平臺:192.168.100.1 攻擊者帳號:gordonb/abc123

服務器:裝有dvwa的網站 192.168.100.200 受害者帳號: admin/password

實驗過程:攻擊者gordonb在目標網站上設下xss陷阱,當受害者中坑後會把cookie信息發給攻擊者,攻擊者就用受害者的cookie訪問網站。

XSS經常使用測試語句:
<script>alert(1)</script>
<img src=1 onerror=alert(1)>
<svg onload=alert(1)>
<a href=javascript:alert(1)>
<input onfocus=write(1) autofocus>
相關文章
相關標籤/搜索