0x01 概述
XSS為跨站腳本攻擊,XSS攻擊針對的是用戶層面的攻擊!類型有反射型XSS、存儲型XSS、DOM型XSS,這里的DOM可以理解為頁面,或者是所有的標簽、內容之和
0x02 反射型XSS
反射型XSS攻擊流程為:
即:
發送帶有XSS惡意鏈接----》用戶點擊,訪問目標服務器-----》目標服務器將XSS同正常頁面返回給用戶-----》用戶瀏覽器解析惡意XSS,向惡意服務器請求-----》惡意服務器獲取用戶信息。
所以反射型XSS又稱為非持久型XSS,經過后端,不經過數據庫,需要誘導目標去訪問某個鏈接,一般用來釣魚,盜取cookie。
程序:
1.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>反射型XSS</title>
</head>
<body><form action="action.php" method="post"><input type="text" name="name" /><input type="submit" value="提交"></form>
</body>
</html>
action.php
<?php$name = $_POST["name"];echo $name;
獲取name的值,將name輸出來,輸入<script>alert(1)</script>
,數據提交之后會給后臺處理,彈出1
把1.html想成惡意鏈接,我們訪問就是點擊惡意鏈接,輸入的<script>alert(1)</script>
變成其他獲取用戶信息的代碼,用戶請求目標服務器上的action.php,action.php把惡意代碼XSS返回給用戶,用戶瀏覽器解析,惡意服務器就會獲得我們的信息了。
所以數據的流向是:
前端(用戶訪問的頁面1.html)-----》后端(action.php處輸出1.html內容)-----》前端(用戶看到action.php形成的頁面)
0x03 存儲型XSS
存儲型XSS又稱為持久性XSS,攻擊腳本會永久存放在目標服務器中,也就是說,每次我們訪問頁面,頁面會把我們構造的XSS取出來,然后執行,具體例子可以看一下DVWA的,這個好理解一些
0x04 DOM型XSS
我覺得反射型和DOM型是最難理解,很難區分開,DOM型能夠使程序和腳本動態訪問和更新文檔的內容、結構和樣式,從客戶端獲取DOM中的數據并在本地執行,也具有一次性
程序:
2.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>DOM型XSS</title>
</head>
<body><form action="action2.php" method="post"><input type="text" name="name"><input type="submit" value="提交"></form>
</body>
</html>
action2.php
<?php$name = $_POST['name'];?>
<input id="text" type="text" value="<?php echo $name?>"/>
<div id="print"></div>
<script>var text = document.getElementById("text");var print = document.getElementById("print");print.innerHTML = text.value
</script>
輸入<script>alert(1)</script>
,也會彈出1,可以看到修改了div的內容,也就是修改DOM,數據流向:前端—》前端,很多人看到這里就很想問我們輸入數據不是經過action.php嗎,為什么說數據流向沒有經過action.php,也就是后端,這個只是為了方便處理,我們可以把
<div id="print"></div>
<script>var text = document.getElementById("text");var print = document.getElementById("print");print.innerHTML = text.value
</script>
放在1.html里,然后給<input type="text" name="name">
一個ID,點擊之后能修改div的內容。
0x05 總結
我對反射型XSS和DOM型XSS的理解是:反射型XSS是后端處理,不修改原來的DOM基礎上,將XSS返回給用戶,DOM型XSS是通過修改DOM,讓DOM里有XSS,可以不經過后端。
準備把XSS總結一下,這只是基本原理,后面會寫標簽,過WAF,怎么測試,工具檢測,利用方法