Webサイトが_<
_を_<
_にエンコードし、_>
_が_>
_になる場合でも、クロスサイトスクリプティングを実行できますか?スクリプトタグを何で囲みますか?
たとえば、私のサイトの1つでは通常<script>alert(1)</script>
を使用できますが、エンコードが行われるときに同じようにするにはどうすればよいですか?
そうそう!
このHTMLについて考えてみましょう。
<a href="{{str}}">
次のような入力を検討してください:
" onmouseover="alert('GOTCHA')"
あなたは写真を取得します。
JavaScriptがタグ内に注入される場合タグ内の場合、山括弧は必要ありません。私はこの同様のS/Oポストからこれを借りました: https://stackoverflow.com/questions/5696244/xss-is-escaping-and-sufficient
このようなフィルター回避に興味がある場合は、以下を参照してください。
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
これには一般的なものすべてが含まれています。
安全に関する限り:すべてのものをエンコードしてください!攻撃者がどれほど賢いかは決してわかりません。
クロスサイトスクリプティングに関して言えば、最も重要なことはコンテキストです。反映または保存されるコンテキスト。これを、私の経験からの実際の例で示します。バグを探すときに、URLパラメータが変数内に反映されていることに気付きました。
http://www.example.com/blah.php?id=test&var=101011
Varの値は、スクリプトブロック内で、おおよそ次の形式で、ページの読み込み時にページのソースに反映されていました。
var a = "101011";
そして、 '<'だけを注入すると、要求がWAFに転送され、エラーページがスローされるため、これを処理する実際のペイロードは次のとおりです。
Prompt(1)";eval(a);
これはWAFをバイパスし、反映されたXSSの成功事例となりました。そのため、ペイロードはコンテキストに応じて変更する必要があり、タグが不要な場合があります。お役に立てば幸いです。