目錄
一、XSS的原理和分類
二、常見的XSS標簽和屬性
三、Xss漏洞分類
1. 反射性xss
反射性 XSS 典型攻擊場景
基于 URL 參數的反射性 XSS
基于表單參數的反射性 XSS
利用 HTML 標簽屬性的反射性 XSS
2.存儲型XSS
存儲型XSS的高頻攻擊場景
社交平臺評論區
論壇發帖與私信系統
?電商平臺商品描述
3.基于DOM的 XSS
攻擊原理剖析
DOM 型 XSS 典型攻擊場景與案例
基于 URL 參數的 DOM 型 XSS
基于localStorage/sessionStorage的 DOM 型 XSS
一、XSS的原理和分類
二、常見的XSS標簽和屬性
1.直接執行腳本的標簽
<script>alert('1')</script>
<svg onload=alert('1')>
<svg><script>alert(1)</script></svg>
2.利用事件屬性執行腳本?
<img src=x onerror=alert('1')>
<body onload=alert('1')>
<iframe onload=alert('1')></iframe>
<input type="text" onfocus=alert('1') autofocus>
3.?偽協議觸發腳本
<a href="javascript:alert('1')">點擊</a>
<iframe src="javascript:alert('1')"></iframe>
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4="></object>
三、Xss漏洞分類
1. 反射性xss
反射型XSS 是非持久性、參數型的跨站腳本。反射型XSS 的JS 代碼在Web 應用的參數(變量)中,如搜 索框的反射型XSS。在搜索框中,提交PoC[scriptalert(/xss/)/script],點擊搜索,即可觸發反射型XSS。 注意到,我們提交的poc 會出現在search.php 頁面的keywords 參數中。
反射性 XSS 典型攻擊場景
基于 URL 參數的反射性 XSS
????????場景:搜索框、商品詳情頁等通過 URL 傳遞參數的功能點。
基于表單參數的反射性 XSS
????????登錄頁、評論表單等 POST 請求參數未過濾的場景。
利用 HTML 標簽屬性的反射性 XSS
????????原理:通過 HTML 標簽屬性(如onclick
、href
、src
)觸發腳本執行。
2.存儲型XSS
存儲型XSS的高頻攻擊場景
社交平臺評論區
????????場景:用戶發表評論時,嵌入惡意腳本,后續訪客瀏覽該評論時觸發攻擊。
論壇發帖與私信系統
????????場景:攻擊者發布包含惡意腳本的帖子或私信,受害者訪問時自動執行腳本。
?電商平臺商品描述
????????場景:商家在商品描述中植入惡意腳本,用戶瀏覽商品詳情頁時觸發。
3.基于DOM的 XSS
攻擊原理剖析
1.數據源獲取:
前端 JS 通過location.href、document.URL、localStorage等方式獲取用戶可控數據(如 URL 參數、Cookie)。
2.DOM 動態操作:
JS 使用innerHTML、outerHTML、document.write()等危險 API,將未過濾的數據源直接寫入 DOM。
3.腳本執行:
瀏覽器解析 DOM 時,執行嵌入的惡意腳本。
DOM 型 XSS 典型攻擊場景與案例
基于 URL 參數的 DOM 型 XSS
????????場景:前端通過 URL 參數動態更新頁面內容(如單頁應用路由、個性化參數)。
????????????????漏洞代碼(JavaScript):
// 錯誤示例:使用innerHTML直接渲染URL參數
function renderPage() {const hash = window.location.hash.slice(1); // 獲取#后的參數document.getElementById('content').innerHTML = '<h1>' + hash + '</h1>';
}
window.onload = renderPage;
? ? ? ? ? ? ? ??惡意 URL:
http://example.com/#<script>alert('1');</script>
????????????????攻擊效果:
????????????????????????頁面加載時,hash
參數被寫入innerHTML
,觸發腳本執行。
基于localStorage
/sessionStorage
的 DOM 型 XSS
????????場景:前端從本地存儲中讀取用戶數據并渲染。
????????????????漏洞代碼(JavaScript):
// 錯誤示例:從localStorage獲取數據并渲染
const username = localStorage.getItem('username');
document.getElementById('welcome').innerHTML = `歡迎你,${username}!`;
????????????????攻擊步驟:
? ? ? ? ? ? ? ? ? ? ? ? 1、攻擊者誘導用戶訪問惡意頁面,執行:
localStorage.setItem('username', '<script>alert("XSS");</script>');
? ? ? ? ? ? ? ? ? ? ? ? 2、用戶訪問目標網站時,前端讀取并渲染惡意內容。