XSS注入
介紹:
XSS全稱為Cross Site Scripting,為了和CSS分開簡寫為XSS,中文名為跨站腳本。該漏洞發生在用戶端,是指在渲染過程中發生了不在預期過程中的JavaScript代碼執行。XSS通常被用於獲取Cookie、以受攻擊者的身份進行操作等行為。
反射型XSS:
反射型一般通過點擊鏈接來觸發
舉個栗子:代碼為<?php echo "<p>hello, $_GET['a']</p>";?>
注入方式為:/?a=</p><script>alert("xss")</script><p>
通過前面的</p>來閉合代碼中的<p>,在html中插入JavaScript代碼<script>alert("xss")</script>來達到彈出xss的窗口,后面的<p>來閉合后面的</p>
XSS分類:
儲存型XSS:
多儲存在評論區,留言處。儲存型XSS相對反射性XSS危害更大,攻擊者可以把攻擊載荷儲存在數據庫,造成持續攻擊。
DOM XSS:
DOM型XSS不同之處在於DOM型XSS一般和服務器的解析響應沒有直接關系,而是在JavaScript腳本動態執行的過程中產生的。
代碼:
<html> <head> <title>DOM Based XSS Demo</title> <script> function xsstest() { var str = document.getElementById("input").value; document.getElementById("output").innerHTML = "<img src='"+str+"'></img>"; } </script> </head> <body> <div id="output"></div> <input type="text" id="input" size=50 value="" /> <input type="button" value="submit" onclick="xsstest()" /> </body> </html>
注入方式:x' onerror='javascript:alert(/xss/)
Blind XSS:
Blind XSS是儲存型XSS的一種,它保存在某些存儲中,當一個“受害者”訪問這個頁面時執行,並且在文檔對象模型(DOM)中呈現payload。 它被稱為Blind的原因是因為它通常發生在通常不暴露給用戶的功能上。
XSS注入的危害:
- 用戶的Cookie被獲取,其中可能存在Session ID等敏感信息。若服務器端沒有做相應防護,攻擊者可用對應Cookie登陸服務器。
- 攻擊者能夠在一定限度內記錄用戶的鍵盤輸入。
- 攻擊者通過CSRF等方式以用戶身份執行危險操作。
- XSS蠕蟲。
- 獲取用戶瀏覽器信息。
- 利用XSS漏洞掃描用戶內網。
XSS注入的一些繞過姿勢:
1、大小寫繞過 如:<sCrIpT>alert(1)</sCrIpT>
2、利用其他標簽進行注入 如:<audio src=x onerror=alert(47)>
<img src=document.domain onerror=alert(document.domain)>
<a href=javascript:alert(document.domain)>M</a>
3、編碼繞過 如:%3Cscript%3Ealert(%221%22)%3C/script%3E
4、拼接 如:<script>top["al"+"ert"](1)</script>
5、偽協議 如:<a href=javascript:/0/,alert(%22M%22)>M</a>