Hello there, ('ω')ノ
XSS用のCloudflareをバイパスすることができた方法を。
脆弱性:
XSS
記事:
https://infosecwriteups.com/how-i-was-able-to-bypass-cloudflare-for-xss-e94cd827a5d6
まずは、ログインページに「rurl」というパラメータがあったので。
オープンリダイレクトを試すと成功して。
オープンリダイレクトの脆弱性がある場合は、「a」タグ内の。
「href」属性に挿入されているので、xssを試すことができるので。
xssペイロード「javascript:alert(1)」を試すと。
下記のCloudflareという応答を得ることができて。
バイパス時間:
このような状況に対処するためのお気に入りの方法の1つは。
すべての仮定を1つずつ試すことで。
なので「javascript:」を試すことに。
■JavaScriptキーワード全体が削除されましたか?
■「:」の部分は削除されましたか?
これで200の応答を得たので、「javascript:alert」について進めることに。
■alertキーワードは削除されましたか?
■alert(1)の括弧が削除されている場合は?
なので、主な問題は括弧にあるので。
「alert`1`」で括弧をバイパスしようとすると成功せず。
しかしながら、throwのような他のテクニックがあって。
多くのフィルタは、関数の呼び出しとパラメーターの受け渡しに不可欠なので。
括弧をブロックするので。
フィルタが挿入されたベクトルの括弧を削除する場合は。
それをバイパスする方法がいくつかあって。
Gareth Heyesが見つけた従来の方法を見ることに。
https://portswigger.net/research/xss-without-parentheses-and-semi-colons
throwテクニックを使用して、括弧を使用せずに関数に引数を渡すメソッドで。
throwテクニックは、エラーがトリガーされると。
関数呼び出しを割り当てるためにonerrorイベントハンドラーを悪用するので。
throwを使用したXSSペイロードは、下記のようになって。
javascript:window.onerror=alert;throw 1
このペイロードを試すと、再びcloudflareの応答が。
したがって、ここでは、「base64」、「UrlEncoding」、「Htmlencoding」などの。
他のエンコード手法を使用してさまざまなペイロードを試して。
下記が、最終的なペイロードで。
javascript%3avar{a%3aonerror}%3d{a%3aalert}%3bthrow%2520document.cookie
Best regards, (^^ゞ