RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是跨站腳本攻擊?一篇帶你了解什么叫做XSS

馬哥Linux運(yùn)維 ? 來源:稀土掘金 ? 2023-12-20 09:49 ? 次閱讀

XSS簡介

(1)XSS簡介

XSS作為OWASP TOP 10之一。

XSS中文叫做跨站腳本攻擊(Cross-site scripting),本名應(yīng)該縮寫為CSS,但是由于CSS(Cascading Style Sheets,層疊樣式腳本)重名,所以更名為XSS。XSS(跨站腳本攻擊)主要基于javascript(js)來完成惡意的攻擊行為。

XSS是一種經(jīng)常出現(xiàn)在web應(yīng)用中的計(jì)算機(jī)大全漏洞,也是web中最主流的攻擊方式。那么什么是XSS呢?

XSS是指惡意攻擊者利用網(wǎng)站對用戶提交的數(shù)據(jù)進(jìn)行轉(zhuǎn)義處理或者過濾不足的缺點(diǎn),進(jìn)而添加一些代碼,嵌入到web頁面中去。使別的用戶訪問都會執(zhí)行相應(yīng)的嵌入代碼。

從而盜取用戶資料、利用用戶身份進(jìn)行某種動作或者訪問者進(jìn)行病毒侵害的一種攻擊方式。

(2)XSS原理

利用我們所知道的各種黑魔法,向web頁面插入js代碼,讓js代碼可以被瀏覽器執(zhí)行,訪問該頁面 的用戶則被攻擊。

(3)XSS的危害

針對用戶 竊取cookie劫持的會話 網(wǎng)絡(luò)釣魚 放馬挖礦 廣告刷流量 針對web服務(wù) 劫持后臺(常見) 篡改頁面 傳播蠕蟲 內(nèi)網(wǎng)掃描(常見)

(4)XSS類型

反射型:

反射型也稱為非持久型,這種類型的腳本是最常見的,也是使用最為廣泛的一種,主要用于將惡意的腳本附加到URL地址的參數(shù)中。

存儲型:

攻擊者將已經(jīng)構(gòu)造完成的惡意頁面發(fā)送給用戶,用戶訪問看似正常的頁面后收到攻擊,這類XSS通常無法直接在URL中看到惡意代碼,具有較強(qiáng)的持久性和隱蔽性。

DOM

DOM型XSS無需和后端交互,而是基于JavaScript上,JS解析URL中惡意參數(shù)導(dǎo)致執(zhí)行JS代碼

2.XSS分類詳解

(1)存儲型XSS

存儲型XSS:持久性,代碼是存儲在web服務(wù)器中的,比如在個人信息或發(fā)表文章等地方插入代碼,如果沒有過濾或者過濾不嚴(yán),那么這些代碼將存儲在服務(wù)器中,用戶訪問該頁面的時(shí)候觸發(fā)代碼執(zhí)行。這種XSS比較危險(xiǎn),容易造成蠕蟲、盜竊cookie。每一個訪問特定頁面的用戶,都會受到攻擊。

特點(diǎn):

XSS攻擊代碼存儲于web server上;攻擊者一般是通過網(wǎng)站的留言、評論、博客、日志等功能(所有能夠向web server輸入內(nèi)容的地方),將攻擊代碼存儲到web server上的 存儲型XSS攻擊流程:

58d5c52a-9e67-11ee-8b88-92fbcf53809c.jpg

(2)反射型XSS

反射型跨站腳本也稱作非持久型、參數(shù)型跨站腳本、這類型的腳本是最常見的 ,也是使用最為廣泛的一種,主要用于將惡意的腳本附加到URL地址的參數(shù)中。


  http://www.test.com/search.php?key=">


一般使用的將構(gòu)造好的URL發(fā)給受害者,是受害者點(diǎn)擊觸發(fā),而且只執(zhí)行一次,非持久化。

反射型XSS攻擊流程:

58f4b3a4-9e67-11ee-8b88-92fbcf53809c.jpg

反射型XSS-DVWA:


  Payload:
  Low:
  Mid:
  High:


(3)JS簡介

JavaScript一種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動態(tài)功能。

在1995年時(shí),由Netscape公司的Brendan Eich,在網(wǎng)景導(dǎo)航者瀏覽器上首次設(shè)計(jì)實(shí)現(xiàn)而成。因?yàn)镹etscape與Sun合作,Netscape管理層希望它外觀看起來像Java,因此取名為JavaScript。但實(shí)際上它的語法風(fēng)格與Self及Scheme較為接近。為了取得技術(shù)優(yōu)勢,微軟推出了JScript,CEnvi推出ScriptEase,與JavaScript同樣可在瀏覽器上運(yùn)行。為了統(tǒng)一規(guī)格,因?yàn)镴avaScript兼容于ECMA標(biāo)準(zhǔn),因此也稱為ECMAScript。

3.XSS發(fā)現(xiàn)與防護(hù)

(1)XSS的五種防御方式

HTML節(jié)點(diǎn)內(nèi)容的XSS防御

轉(zhuǎn)義掉<<和>>即轉(zhuǎn)義掉<>即可,轉(zhuǎn)義的時(shí)候有兩種,一種是寫入數(shù)據(jù)庫的時(shí)候進(jìn)行轉(zhuǎn)義,另一種是在解析的時(shí)候轉(zhuǎn)義 這里是在顯示的時(shí)候轉(zhuǎn)義


var escapeHtml = function(str){
    str = str.replace(/>/g,'<')
    str = str.replace(/>/g,'>')
    return str
}
escapeHtml(content)

HTML屬性的XSS防御 轉(zhuǎn)義" &quto;即轉(zhuǎn)義掉雙引號,'轉(zhuǎn)義掉單引號,(另一個要注意的是實(shí)際上html的屬性可以不包括引號,因此嚴(yán)格的說我們還需要對空格進(jìn)行轉(zhuǎn)義,但是這樣會導(dǎo)致渲染的時(shí)候空格數(shù)不對,因此我們不轉(zhuǎn)義空格,然后再寫html屬性的時(shí)候全部帶上引號)這樣屬性就不會被提前關(guān)閉了


var escapeHtmlProperty = function(str){
    str = str.replace(/"/g,'&quto;');
    str = str.replace(/'/g,''');
    str = str.replace(/ /g,' ');
    return str;
}


escapeHtmlProperty(content);

其實(shí)以上兩個函數(shù)可以合并成一個函數(shù),這樣不管是內(nèi)容還是屬性都可以使用一個函數(shù)來過濾了。

HTML轉(zhuǎn)義函數(shù)


var escapeHtmlProperty = function(str){
    if(!str) return '';
    str = str.replace(/&/g,'&');
    str = str.replace(/>/g,'<');
    str = str.replace(/>/g,'>');
    str = str.replace(/"/g,'&quto;');
    str = str.replace(/'/g,''');
    return str;
}
escapeHtml(content);

js轉(zhuǎn)義

轉(zhuǎn)義掉""或者替換成json


var escapeForJs = function(str){
    if(!str) return '';
    str = str.replace(/\/g,'\\');
    str = str.replace(/"/g,'"');
}


富文本

由于需要完整的HTML因此不太容易過濾,一般是按照白名單進(jìn)行保留部分標(biāo)簽和屬性來進(jìn)行過濾,除了允許的標(biāo)簽和屬性,其他的全部不允許(也有黑名單的方式,但是由于html復(fù)雜效果比較差,原理就是之前的正則替換) 其實(shí)可以用別人寫好的XSS組件就叫做xss,直接

npm install xss

白名單-使用第三方庫XSS,支持指定白名單


var xssFilter = function(html){
    if(!html) return '';
    var xss = require('xss');
    var ret = xss(html,{
        whileList:{
            img:['src'],
            a:['href'],
            font:['size','color']
        },
        onIgnoreTag: function(){
            return '';
        }
    });
    
    console.log(html,ret);
    
    return ret;
}

(2)XSS蠕蟲攻擊

XSS蠕蟲的破壞力和影響力都是巨大的。XSS蠕蟲主要發(fā)生在用戶之間存在交互行為的頁面中,當(dāng)Web應(yīng)用程序?qū)τ脩糨斎氲臄?shù)據(jù)信息沒有做嚴(yán)格的過濾時(shí),通過結(jié)合Ajax的異步提交,就可以實(shí)現(xiàn)在植入惡意代碼的同時(shí),將惡意代碼進(jìn)行對外發(fā)送,即實(shí)現(xiàn)了代碼的感染和傳播,也就形成了XSS蠕蟲。

(3)挖掘XSS漏洞

掃描工具自動化檢測 AWVS AppScan JSKy 手工測試 源碼分析

(4)XSS漏洞的防范

XSS跨站腳本攻擊漏洞防范

客戶端用戶

IE8及高級版本,開啟XSS篩選器功能 Firefox使用CSP、Noscript等擴(kuò)展功能 瑞星個人防火墻2012版本開啟XSS攔截功能

Web應(yīng)用程序員

使用HttpOnly 完善的輸入、輸出檢查

HttpOnly

HttpOnly最初是由微軟提出的,目前已經(jīng)被多款流行瀏覽器廠商所采用。HttpOnly的作用不是過濾XSS跨站腳本攻擊,而是瀏覽器將禁止頁面的Javascript訪問帶有HttpOnly屬性的Cookie,解決XSS跨站腳本攻擊后的Cookie會話劫持行為。

輸入、輸出檢查

由于三種XSS跨站腳本攻擊類型的漏洞成因可不相同,針對輸入輸出的檢查一部分適用于反射型XSS與存儲型XSS,而另外一些檢查適用于基于DOM的XSS 在大多數(shù)的時(shí)候都是對可信字符的檢查或輸入數(shù)據(jù)格式的檢查,如用戶輸入的注冊賬號信息中只允許包括字母、數(shù)字、下劃線和漢字等,對于輸入的一切非白名單內(nèi)的字符均認(rèn)為是非法輸入。

數(shù)據(jù)格式如IP地址、電話號碼、郵件地址、日期等數(shù)據(jù)都具有一定的格式規(guī)范,只有符合數(shù)據(jù)規(guī)范的輸入信息才允許通過檢查。輸出檢查主要是針對數(shù)據(jù)展示過程,應(yīng)該對數(shù)據(jù)的信息進(jìn)行HTML編碼處理,將可能存在導(dǎo)致XSS跨站腳本攻擊的惡意字符進(jìn)行編碼,在不影響正常數(shù)據(jù)顯示的前提條件下,過濾惡意字符。常見的可能造成的XSS跨站腳本攻擊的字符及其HTML編碼如:


  "  ---  "
  '  ---  &apos
  &  ---  &
  <  ---  &It
  >  ---  >


除了常用的編碼外,任何字符都可以使用其ASCII碼進(jìn)行HTML編碼,如:


  %  ---  &
  *  ---  &

DOM Based XSS輸入、輸出檢查


- 特殊性
  - 基于DOM的XSS跨站腳本攻擊發(fā)生時(shí),惡意數(shù)據(jù)的格式與傳統(tǒng)的XSS跨站腳本攻擊數(shù)據(jù)格式有一定的差異,甚至可以在不經(jīng)過服務(wù)器端的處理和響應(yīng)的情況下,直接對客戶端實(shí)施攻擊行為。
- 輸入檢查
  - 在客戶端部署相應(yīng)的安全檢測代碼的過濾效果要比在服務(wù)器端檢測的效果更加明顯。
  - 客戶端檢測代碼來保證用戶輸入的數(shù)據(jù)只包含字母、數(shù)字和空格。
  - 服務(wù)端實(shí)現(xiàn)上述數(shù)據(jù)檢查的功能
    - URL參數(shù)名稱、個數(shù)檢測
    - 參數(shù)值類型及內(nèi)容檢測
- 輸出檢查
  - 在將用戶可控的DOM數(shù)據(jù)內(nèi)容插入到文檔之前,Web應(yīng)用程序應(yīng)對提交的數(shù)據(jù)中可能存在的各種危險(xiǎn)字符和表達(dá)式進(jìn)行過濾以安全的方式插入到文檔中進(jìn)行展現(xiàn)。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • HTML
    +關(guān)注

    關(guān)注

    0

    文章

    278

    瀏覽量

    35199
  • javascript
    +關(guān)注

    關(guān)注

    0

    文章

    516

    瀏覽量

    53850
  • DOM
    DOM
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    9572
  • XSS
    XSS
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    2373

原文標(biāo)題:你知道跨站腳本攻擊嗎?一篇帶你了解什么叫做XSS

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    預(yù)防腳本攻擊XSS)的方法

    腳本攻擊XSS),是最普遍的Web應(yīng)用安全漏洞。這類漏洞能夠使得攻擊者嵌入惡意
    的頭像 發(fā)表于 09-30 10:05 ?2738次閱讀

    《CDN 之我見》系列二:原理(緩存、安全)

    準(zhǔn)確溯源攻擊手段暴力,流量大,以達(dá)到短時(shí)間不能服務(wù)為主要目的技術(shù)門檻低,但由于需要眾多資源,攻擊成本較高而例如 XSS 、SQL 注入、
    發(fā)表于 06-12 16:59

    文章帶你了解原型制作化技術(shù)

    文章帶你了解什么是原型制作化技術(shù)?
    發(fā)表于 04-26 06:15

    帶你了解步進(jìn)電機(jī)的相關(guān)知識

    帶你了解步進(jìn)電機(jī)的相關(guān)知識:相、線、極性和步進(jìn)方式2017-09-07 16:45這里不說步進(jìn)電機(jī)的 “細(xì)分” 實(shí)驗(yàn),只說下有關(guān)步進(jìn)電機(jī)的基礎(chǔ)概念以及步進(jìn)電機(jī)的三種工作方式——單
    發(fā)表于 07-08 06:48

    基于動態(tài)污點(diǎn)分析的DOM XSS漏洞檢測算法

    針對Web客戶端中基于文檔對象模型的腳本攻擊(DOM XSS)漏洞檢測問題,提出種基于動態(tài)
    發(fā)表于 12-18 16:01 ?0次下載
    基于動態(tài)污點(diǎn)分析的DOM <b class='flag-5'>XSS</b>漏洞檢測算法

    基于Django的XSS防御研究與實(shí)現(xiàn)

    腳本攻擊XSS)是當(dāng)前最流行的Web應(yīng)用攻擊方式之
    發(fā)表于 04-09 11:33 ?0次下載
    基于Django的<b class='flag-5'>XSS</b>防御研究與實(shí)現(xiàn)

    什么是XSS漏洞以及它的修復(fù)方案

    XSS攻擊又分好幾個種類,分存儲型XSS,反射型XSS,DOM型XSS,為了快速的讓大家理解這些專業(yè)術(shù)語,我這面通俗易懂的跟大家介紹
    發(fā)表于 09-09 11:34 ?1525次閱讀

    了解安全測試基礎(chǔ)之XSS

    在web項(xiàng)目安全漏洞中,XSS是最為流程的漏洞類型之,今天就來介紹XSS。
    的頭像 發(fā)表于 06-28 11:15 ?2620次閱讀

    使用雙向長短時(shí)記憶網(wǎng)絡(luò)檢測腳本攻擊

    目前傳統(tǒng)的腳本XSS)檢測技術(shù)大多使用機(jī)器學(xué)習(xí)方法,存在代碼被惡意混淆導(dǎo)致可讀性不高特征提取不充分并且效率低等缺陷,從而導(dǎo)致檢測性能不佳。針對上述問題,提出了使用雙向長短時(shí)記憶網(wǎng)
    發(fā)表于 04-09 16:09 ?10次下載
    使用雙向長短時(shí)記憶網(wǎng)絡(luò)檢測<b class='flag-5'>跨</b><b class='flag-5'>站</b><b class='flag-5'>腳本</b><b class='flag-5'>攻擊</b>

    XSS發(fā)生原理及XSS攻擊的類型

    xss發(fā)生原理 xss就是腳本攻擊,造成這種漏洞存在的根本原因是開發(fā)者的安全意識不夠而留下的
    的頭像 發(fā)表于 08-04 18:00 ?3994次閱讀

    CSRF是什么 CSRF與XSS攻擊的區(qū)別

    CSRF是什么? CSRF(Cross-site request forgery),中文名稱:請求偽造,也被稱為:one click attack/session riding,縮寫為:CSRF
    的頭像 發(fā)表于 08-05 10:09 ?6857次閱讀

    物聯(lián)網(wǎng)是什么,帶你了解物聯(lián)網(wǎng)

    文章帶你了解物聯(lián)網(wǎng)
    的頭像 發(fā)表于 03-23 14:16 ?3924次閱讀

    XSS漏洞掃描器工具

    XSpear是款基于RubyGems的的XSS漏洞掃描器。擁有常見的XSS漏洞掃描攻擊測試功能。還可進(jìn)行參數(shù)分析。
    的頭像 發(fā)表于 01-17 09:28 ?1871次閱讀

    ie瀏覽器限制運(yùn)行腳本

    的安全。在本文中,我將詳細(xì)介紹IE瀏覽器限制運(yùn)行腳本的各個方面和原因。 首先,IE瀏覽器限制運(yùn)行腳本個主要原因是為了防止
    的頭像 發(fā)表于 11-26 11:19 ?1487次閱讀

    IP 地址在XSS中的利用與防范

    ?隨著互聯(lián)網(wǎng)的普及和Web應(yīng)用的廣泛使用,腳本攻擊XSS)成為了網(wǎng)絡(luò)安全領(lǐng)域中的個重要威
    的頭像 發(fā)表于 08-07 16:43 ?246次閱讀
    RM新时代网站-首页