xss漏洞


在學習xss漏洞之前我們先學習一下,什么叫做同源策略。

所謂同源策略指的是,瀏覽器對不同源的腳本或文本的訪問方式進行限制。

所謂同源指的是,域名,協議,端口相同。

在HTML語言中,有部分標簽在引用第三方資源時,不受同源策略的限制:

<script>

<img>

<iframe>

<link>

下面我們來說xss漏洞的原理:

跨站腳本攻擊(cross site scripting)的縮寫,惡意攻擊者往web頁面里插入惡意script代碼,當用戶瀏覽該頁之時,嵌入其中web里面的script代碼會被執行,從而達到惡意攻擊用戶的目的。

xss漏洞發生在目標網站中目標用戶的瀏覽器層面上,當用戶瀏覽器渲染整個HTML文檔的過程中,出現了不被預期的腳本指令並執行時,xss就會發生。

ps:xss漏洞通常指黑客通過“HTML注入”纂改了頁面,插入了惡意的腳本,從而在用戶瀏覽頁面時,控制用戶瀏覽器的一種攻擊。

xss漏洞分為三種DOM型,存儲型,反射型  

DOM型:攻擊代碼在URL中,輸出在DOM節點中

存儲型:攻擊代碼在數據庫中,輸出在http響應中

反射型:攻擊代碼在URL中,輸出在http響應中

 

xss漏洞產生的原因:web應用程序對用戶的輸入過濾不足造成的。攻擊者利用網站漏洞把惡意代碼插入到頁面中,其他用戶瀏覽該頁面時,惡意代碼被執行。對受害用戶可采取cookie資料獲取,釣魚網站,會話劫持等攻擊

 

如何預防xss漏洞

一,給cookie的屬性設置為httponly

這樣能夠避免js讀取Cookie信息(設置后有助於緩解XSS,但是XSS除了劫持Cookie之外,還可以模擬用戶的身份進行操作)

二,進行輸入檢查

如果僅僅在客戶端通過JS來做輸入校驗,有可能會被攻擊者繞過,WEB開發中的普遍做法是同時在客戶端和服務端做校驗。這種輸入檢查的方式也稱之為XSS Filter。

三,輸出檢查

一般說來,除了富文本輸出之外,在變量輸出到HTML頁面時,可以使用編碼或者轉義的方式來防御XSS攻擊。

四,防御DOM BasedXSS

前面提到的集中方法,對於這種類型不太適用,需要特別對待,那如何才能防御呢?

首先是$var輸出到<script>是,應該執行一次javasriptEncode,其次在doument.write輸出到HTML頁面時,如果是輸出到事件或者腳本,可以再做一次javaScriptEncode,如果是輸出到HTML內容或者屬性,則可以做一次HtmlEncode。

上面提到的這些防御方法都屬於安全生產的環節,也就是說實在開發同學寫代碼的時候要特別注意,這種是否做的規范,可以通過工具掃描代碼的方式來實現,也就是白盒測試,如果代碼沒有做輸入或者輸出檢查,則發報告提示開發來進行修改。但是有些場景白盒沒法覆蓋到,例如輸出jsonp類型的接口,對於callback參數的原味輸出,白盒有時候就掃不出來,這時候,可以通過黑盒測試工具,模擬入參的各種情況,也就是窮舉,來構造,如果發生了XSS請求,則發出報告即可。

 

摘抄:

XSS跨站漏洞分為大致三種:儲存型XSS,反射型XSS,和DOM型XSS,一般都是由於網站對用戶輸入的參數過濾不嚴格而調用瀏覽器的JS而產生的。

  1. 儲存型XSS:

    一般是構造一個比如說"<script>alert("XSS")</script>"的JS的彈窗代碼進行測試,看是否提交后在頁面彈窗,這種儲存型XSS是被寫入到頁面當中的,如果管理員不處理,那么將永久存在,這種XSS攻擊者可以通過留言等提交方式,把惡意代碼植入到服務器網站上, 一般用於盜取COOKIE獲取管理員的信息和權限。

  2. 反射型XSS:

    一般是在瀏覽器的輸入欄也就是urlget請求那里輸入XSS代碼,例如:127.0.0.1/admin.php?key="><script>alert("xss")</script>,也是彈窗JS代碼。當攻擊者發送一個帶有XSS代碼的url參數給受害者,那么受害者可能會使自己的cookie被盜取或者“彈框“,這種XSS一次性使用,危害比儲存型要小很多。

  3. dom型:

    常用於挖掘,是因為api代碼審計不嚴所產生的,這種dom的XSS彈窗可利用和危害性並不是很大,大多用於釣魚。比起存儲型和反射型,DOM型並不常用。

跨站腳本攻擊(Cross Site Scripting),為了不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS。惡意攻擊者往Web頁面里插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。

XSS攻擊分成兩類,一類是來自內部的攻擊,主要指的是利用程序自身的漏洞,構造跨站語句,如:dvbbs的showerror.asp存在的跨站漏洞。


免責聲明!

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



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