XSS : A Fight With The WAF から学ぶ

ソース:

medium.com

脆弱性XSS

 

訳:

偵察

サイトに入るとすぐに「検索」セクションが目に入りました。
次に、実行した検索がページに反映されるかどうかをテストしました。

 

反映されました!

私が通常行うことは、いくつかの文字を試して、サーバーがそれをどのように処理するかを確認することです。 

 

<>” ‘ / script

 

開発者ツールに移動して、ソース コードでどのように表現されているかを確認して。 

 

フィルタリング済み:-(

もちろん、フィルタリングされています。
このような有名な Web サイトは、間違いなく 1990 年代の些細な XSS 攻撃から身を守ることができます
も待ってください、まだ終わっていません!
このデータはこのタグ内だけでなくどこでも使用できます

別の場所を検索し、かつ要素を検査する代わりにソース コードを表示する場合のトリックは次のとおりです。

 

フィルタリングされていません:-)

濾過されてないよ! ペイロード ( <> “ ' script ) が表示されますが、何もフィルターされていないため、結果として最初の二重引用符が content 属性を閉じているため、メタ タグをエスケープしています。
試して、HTML がページによって正しくレンダリングされるかどうかを確認してみましょう。

 

"/>test<title/>

 

 

簡単ですよね? ここで、概念実証として最も基本的な「/><script>alert()</script> <title>」を挿入するだけで。

 

WAF

通常、WAF をトリガーすると数分間禁止されるため、どうすれば WAF をバイパスできるかを理解するのに何時間も苦労しました。
丸1日後、スクリプトタグ内にすでに存在していた他のタグをエスケープすることで、最終的に適切なペイロードを見つけたので、JSコードを記述するだけですが、WAFは「alert」「src」などのいくつかの単語もブロックしていました。

ついに正しい脱出方法を見つけました。

 

XSS がトリガーされました

%22/%3E%20;\a/l\E\r\T\(\)\;%3CTiTlE/%3E%3E

"/> ;\a/l\E\r\T\(\)\;<TiTlE/>>

 

ほなほな。