WEB漏洞——XSS


跨站腳本( Cross-site Scripting,簡稱為XSS或跨站腳本或跨站腳本攻擊)是一種針對網站應用程序的安全漏洞攻擊技術,是代碼注入的一種。

XSS攻擊可以分為三種:反射型、存儲型和DOM型

反射型XSS

反射型XSS又稱非持久型XSS,這種攻擊方式往往具有一次性

攻擊方式:攻擊者通過電子郵件等方式將包含XSS代碼的惡意鏈接發送給目標用戶。當目標用戶訪可該鏈接時,服務器接收該目標用戶的請求並進行處理,然后服務器把帶有XSS代碼的數據發送給目標用戶的測覽器,瀏覽器解析這段帯有XSS代碼的惡意腳本后,就會觸發XSS漏洞,一般用於獲取對方cookies值

 

利用xss需要判斷語句輸出到頁面的HTML位置,然后構造JavaScript閉合,下面以BUUCTF的xss靶場舉例

可以看到username是可以變化的,檢查頁面代碼也發現了username,可以進行xss攻擊

直接在username寫入代碼

<script>alert (1);</script>

真實情況下,如果判斷了存在xss漏洞,那么可以去在線的xss平台,生成攻擊代碼,例如獲取cookies值,然后注入到存在xss漏洞的地方進行攻擊。  

 

存儲型XSS

存儲型XSS又稱持久型XSS,攻擊腳本將被永久地存放在目標服務器的數據庫或文件中,具有很高的隱蔽性。

攻擊方式:這種攻擊多見於論壇、博客和留言板,攻擊者在發帖的討程中,將惡意腳本連同正常信息一起注入帖子的內容中。隨着帖子被服務器存儲下來,惡意腳本也永久地被存放在服務器的后端存儲器中。當其他用戶瀏覽這個被注入了惡意腳本的帖子時,惡意腳本會在他們的瀏覽器中得到執行

例如,惡意攻擊者在留言板中加入以下代碼

<script> alert (1);</script>

當其他用戶訪問留言板時,就會看到一個彈窗。可以看到,存儲型XSS的攻擊方式能夠將惡意代碼永久地嵌入一個頁面中,所有訪問這個頁面的用戶都將成為受害者。如果我們能夠謹慎對待不明鏈接,那么反射型XSS攻擊將沒有多大作為,而存儲型XSS則不同,由於它注入在一些我們信任的頁面,因此無論我們多么小心,都難免會受到攻擊。

 

DOM型XSS

DOM全稱 Document Object Model,使用DOM可以使程序和腳本能夠動態訪問和更新文檔的內容、結構及樣式

DOM型XSS其實是一種特殊類型的反射型XSS,它是基於DOM文檔對象模型的一種漏洞,但DOM型和反射型最大的區別是DOM型是不經過后台交互的,在前端的輸入直接被DOM獲取到

攻擊方式:用戶請求一個經過專門設計的URL,它由攻擊者提交,而目其中包含XSS代碼。服務器的響應不會以任何形式包含攻擊者的腳本。當用戶的瀏覽器處理這個響應時,DOM對象就會處理XSS代碼,導致存在XSS漏洞。

 

XSS漏洞防御

因為XSS漏洞涉及輸入和輸出兩部分,所以其修復也分為兩種

  • 過滅輸入的數據,包括  ‘ 、“、<、>、on* 等非法字符
  • 對輸出到頁面的數據進行相應的編碼轉換,包括HTML實體編碼


免責聲明!

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



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