Hello there, ('ω')ノ
CloudflareのWAFをバイパスします!を。
脆弱性:
XSS
WAFバイパス
記事:
https://medium.com/@friendly_/bypassing-cloudflares-waf-b1b83a50fb2f
XSSをテストする場合:
\"><h1>Hi</h1>などの単純なペイロードを使用して。
サイトのWAFはトリガーされず、誤検知の出力が得られないため。
単純なタグ(提供)を使用して。
HTML入力がサニタイズされているかどうか。
これで理解ができたので、XSSがどのように発生するかを説明できて。
URLを見るとき、常にパラメータまたは非表示のパラメーターを探しますが。
このシナリオでは少し異なって。
サイトにアクセスして数回クリックすると、パラメータを確認できて。
下記がページに反映されて。
?country=NYC
目的は、Reflect Cross Site Scriptingをテストすることでしたが。
WAF(Cloudflare)が導入されていることはわかっていたので。
次に、このバイパスに適切なペイロードを作成するために。
単純なタグの使用を開始して。
<svg>を使用するのは素晴らしいことですが、<iframe>の方が簡単で。
<iframe>タグが機能して。
HTMLインジェクションができたので、今度はそれをエスカレーションすることに。
下記のように<iframe>タグが挿入されて。
このペイロードを作成しているときに、次のペイロードを使用できることがわかって。
<iframe/src=javascript:alert)>
ペイロードを作成し、完全なレンダリングが適切に行われるのを確認して。
しかし、Cloudflare WAFを持っているのを見て、括弧を取得しようと決めて。
%28 や ( , (などの多数のエンコーディングを試すと。
%28 ⇦ (
( ⇦ (
https://unicode-table.com/jp/html-entities/
しかし、これらのどれも正しく機能せず、レンダリングされず。
それから他のいくつかの方法を探すことに。
サイトはURLエンコードとHTMLエンコードで適切にレンダリングされるので。
(を見つけて。
これは、( に変換され、次にURLエンコードして%26%23x0000000%3bになって。
https://gist.github.com/jimmy-ly00/aa7308405c0f949e94015134f8246cc0
それを行った後、私の最終的なペイロードは次のようになって。
\"><iframe/src=javascript:alert%26%23x000000028%3b)>
これが機能する理由は、サイトがURLを適切にデコードしてから。
下記のHTMLエンコードで適切にレンダリングしているためで。
したがって、反映されたXSSにつながって。
( ⇨ (
Best regards, (^^ゞ