Shikata Ga Nai

Private? There is no such things.

XSS: スクリプト可能な属性における攻撃

Hello there, ('ω')ノ

🎯 目的

このセクションでは、XSSがスクリプト実行可能な属性(scriptable attribute)に反映される場合の挙動と攻撃方法について解説します。


🛠️ 脆弱性の概要

一部のHTML属性、例えば以下は直接JavaScriptコードを実行することが可能です:

  • href<a> タグ)
  • src<iframe><img> など)
  • data<object> タグ)

このような属性に反映される場合、閉じタグや他の属性の追加は不要で、直接JavaScriptプロトコルを使って実行可能です。


💥 例:href 属性でのXSS

HTML内に以下のような構造があるとします:

<a href="USER-INPUT">Click me</a>

ここに次のような入力を与えることで、即座にJavaScriptを実行できます:

javascript:alert(document.domain)

すると、HTMLはこうなります:

<a href="javascript:alert(document.domain)">Click me</a>

ユーザーがリンクをクリックすると、アラートが実行されます。


🔐 対策がなければ危険

  • ブラウザは javascript: プロトコルを持つリンクを認識し、即座にスクリプトを実行。
  • ユーザーが特定のリンクをクリックしただけで情報漏洩セッションの乗っ取りが発生するリスクがあります。

✅ まとめ

  • href 属性のようにスクリプトを直接実行可能な属性が存在します。
  • このような属性では、閉じタグやイベントハンドラの注入すら不要
  • 対策としては、javascript: スキームのフィルタリングや適切なエンコード処理が必須です。

このようなXSSは非常にシンプルですが、ユーザーの操作をトリガーに高いリスクを引き起こします。十分な注意が必要です。

Best regards, (^^ゞ