Hello there, ('ω')ノ
非表示の入力フィールドのXSSを。
脆弱性:
XSS
記事:
https://f4t7.medium.com/xss-in-hidden-input-field-1b98a5fece26
今回はは、コンテンツ分割要素を使用して。
ページから非表示にされた入力フィールドで見つけたXSSについて。
XSS(クロスサイトスクリプティング)は、攻撃者が独自のjavascriptコードを挿入し。
アプリケーションに独自の記述されたコードを考えさせ。
最終的に次のような悪意のある目的に使用する可能性がある脆弱性の一種で。
セッションCookie、資格情報、クレジットカードを盗む情報に多く。
Stored XSSとは、攻撃者が悪意のあるペイロード/javascriptコードを。
アプリケーションサーバー内に永続的に保存できる場合で。
方法論:
入力フィールドを非表示にする方法はいくつかありますが。
その2つは次のとおりで。
1.<input>タグ内で、type=” hidden”属性を使用します。
2.<input>タグを別の要素内に配置し、そのstyleをdisplay:noneに設定します
属性が<input>タグ内で呼び出される前に値が反映されている場合は。
type=”hidden”は、バイパスできて。
つまり、下記の通りで。
<input name=”xyz” value=”somevalue” type=”hidden”>
これは、type=”text”として別のタイプ属性を挿入することでバイパスできて。
<input name=”xyz” value=”somevalue” type=”text” type=”hidden”>
これは隠しフィールドを上書きして。
私の場合、<input>タグは次のように<div>要素内にありました。
<div style=”display:none”>
<input type=”text” value=”somevalue”>
</div>
入力フィールドが非表示になっているため。
入力フィールドが表示されず、マウスオーバー。
または同様の属性を使用できず。
そこで、入力フィールドに自動的にフォーカスするオートフォーカスという。
ユニバーサル属性を試し、onfocus=”alert(document.cookie)”を使用することに。
ペイロードを挿入した後、次のようになって。
<div style=”display:none”>
<input type=”text” value=”somevalue” autofocus onfocus=”alert(document.cookie)”>
</div>
リクエストを送信してブラウザを開きましたが、なにも起こらず。
<input>タグが非表示になっているため、オートフォーカスできず。
XSSをどのように実行したかというと。
複数の属性を試した後、patternと呼ばれる属性に出くわして。
この属性は、値とpatternを比較するために使用されて。
patternが一致し、有効である場合は他のことを行い。
無効な場合は他のことを行うので。
ペイロードを提供した後の応答は次のようになって。
<div style=”display:none”>
<input type=”text” value=”somevalue” pattern=”somethingelse” oninvalid=”alert(document.cookie)”>
</div>
もう一度リクエストを送信してブラウザを開くと。
画面にポップアップが表示されて。
Best regards, (^^ゞ