XSS
Hello there, ('ω')ノ 目的:HTML フィルター(HTMLJanitor)の抜け穴を DOM Clobbering で突き、print() を実行させる。 想定ブラウザ:Chrome 推奨(この手法は Firefox では想定通り動かないことがある) 全体の進め方(非エンジニア向けの道筋) まず観…
Hello there, ('ω')ノ まず理解すべきポイント HTML フィルターが属性を制御している HTMLJanitor は不正な属性(例: onload や onclick)を削除して安全化する仕組み。 → しかし内部的に attributes プロパティに依存している。 DOM Clobbering とは? HTM…
Hello there, ('ω')ノ 1. 通常のDOMの仕組み HTML要素には id や name を付けられます。 例えば: <input id="user"> するとJavaScriptからはこうアクセスできます: document.getElementById("user"); // <input id="user"> これは普通の動きです。 2. プロパティと名前が衝突するケース ブラ…
Hello there, ('ω')ノ DOMで追加された要素はなぜ「ソース」に無いのに「Elements」では見えるのか document.write と DevTools で読み解く表示の流れ この記事では、次の2点をセットで解説します。 - 要素(Elementsパネル)にあるのに、ページのソースには…
Hello there, ('ω')ノ 動画 www.youtube.com ねらい 検索ページが、URLのクエリ(location.search)をそのままdocument.writeでページに書き込んでいます。これにより、検索語がタグや属性の中へ無加工で挿入され、XSSが成立します。ゴールはalert(1)を出す…
なぜ「window.○○ || {…}」が危険パターンなのか 一言で この書き方は「window上に“それっぽい値”があれば何でも採用する」という意味になります。 すると攻撃者がDOM Clobberingなどで window.○○ を“偽物”で先に埋めれば、アプリはそれを正しい設定オブジェ…
Hello there, ('ω')ノ ねらい このLABは、コメント欄に許可された“安全そうなHTML”だけで、グローバル変数を書き換えるDOM Clobbering(DOM汚染)を起こし、アプリのJSがそれを信じて使った瞬間にXSS(alert)を発火させるのがゴールです。 ポイントは、アプ…
Hello there, ('ω')ノ ねらい このLABは、検索結果に反射型XSSがある一方で、レスポンスヘッダのCSP(Content-Security-Policy)によって実行が止められます。ところがCSPの中にあるreport-uri の token パラメータがユーザ入力に依存しており、ここからCSP…
Hello there, ('ω')ノ ねらい このLABは、商品ページの在庫チェッカーで使われているJavaScriptが、URLのlocation.search(クエリ文字列)から値を取り出し、そのままdocument.writeで<select>配下に書き込む、という危険な実装になっている点を突きます。…
Hello there, ('ω')ノ ラボの概要 このラボでは、submit feedback ページにおいて、DOMベースのクロスサイトスクリプティング(DOM XSS)脆弱性が存在します。 具体的には、jQueryの $ セレクタ関数が location.search から取得したデータを使用して、アン…
Hello there, ('ω')ノ 概要 このラボでは、jQueryの$()セレクタ関数がlocation.hashの値をもとに特定のブログ記事に自動スクロールする機能を持っています。この実装により、DOMベースのクロスサイトスクリプティング(DOM XSS)の脆弱性が生じています。攻…
Hello there, ('ω')ノ 概要 jQueryはかつて非常に広く利用されていたJavaScriptライブラリであり、その柔軟なセレクター関数$()はDOM操作に頻繁に使用されていました。しかし、この機能は過去に多くのDOMベースXSS(クロスサイトスクリプティング)脆弱性を…
Hello there, ('ω')ノ 背景 モダンなWebアプリケーションは、多くの場合、jQueryや他のJavaScriptフレームワークを使って構築されています。こうしたライブラリの中にも、DOM XSS(クロスサイトスクリプティング)を引き起こす「シンク(sink)」が存在しま…
Hello there, ('ω')ノ 脆弱性の概要 このラボでは、検索機能の中でDOMベースのクロスサイトスクリプティング(XSS)脆弱性があります。具体的には、次のような流れです: ブラウザのURLクエリパラメータ(location.search)から値を取得 それをそのままdiv.…
Hello there, ('ω')ノ 🔍 状況の背景 多くのDOMベースXSSでは、innerHTMLシンクを通してHTMLにJavaScriptを埋め込もうとします。しかし、モダンブラウザでは次の制限があるため、従来のXSS手法が通用しません: <script>タグはinnerHTMLに書いても実行されない。 <svg onload=...> のよ</svg>…
Hello there, ('ω')ノ このラボの目的 このラボでは、DOMベースのクロスサイトスクリプティング(XSS)脆弱性を突き、alert関数を実行する必要があります。 このアプリは、URLのクエリパラメータ(location.search)の値をJavaScriptで取得し、それを docum…
Hello there, ('ω')ノ DOMベースXSSの基本原理 DOMベースXSSは、ユーザー入力(ソース)がJavaScriptコードによって危険な関数(シンク)に渡され、結果として悪意のあるスクリプトがブラウザ上で実行されてしまう脆弱性です。 ソースからシンクへの流れ D…
Hello there, ('ω')ノ DOMベースXSSのテスト目的 DOM-based XSS(ドムベースクロスサイトスクリプティング)は、JavaScriptの動作を通じて発生する脆弱性のため、通常のHTMLソースを確認するだけでは検出できません。ここでは、Google Chromeなどのブラウザ…
Hello there, ('ω')ノ DOM-based XSSの概要 DOM-based XSS(ドムベースクロスサイトスクリプティング)は、クライアントサイドのJavaScriptによって発生するXSS脆弱性です。サーバーではなく、ブラウザ上のJavaScriptコードが攻撃ベクトルになります。 発…
Hello there, ('ω')ノ 🔍 脆弱性のポイント ユーザーの入力が JavaScriptコード中の文字列リテラル に埋め込まれています。 < や > は < や > に変換されており、HTMLタグを直接挿入するXSSは防がれています。 しかし、シングルクォート ' や セミコロン…
Hello there, ('ω')ノ JavaScriptのコード内で、ユーザー入力が文字列リテラルとして埋め込まれている場合、適切な対策が施されていないと、攻撃者はその文字列から抜け出して任意のコードを実行することが可能です。 攻撃の概要 例えば、以下のようなコー…
Hello there, ('ω')ノ はじめに Webアプリケーションの脆弱性の一つであるクロスサイトスクリプティング(XSS)は、ユーザーの入力を適切に処理しないことにより、悪意のあるスクリプトが実行される可能性があります。特に、<input type="hidden">のような非表示の入力フィールド…
Hello there, ('ω')ノ 目的 このラボでは、コメント機能に格納型XSS(Stored XSS)の脆弱性が存在し、ユーザー名に設定されたリンクが href 属性内でそのまま反映される仕様を突きます。href に javascript: スキームを使ってスクリプトを実行し、XSSを達成…
Hello there, ('ω')ノ 目的 このセクションでは、XSSがスクリプト実行可能な属性(scriptable attribute)に反映される場合の挙動と攻撃方法について解説します。 ️ 脆弱性の概要 一部のHTML属性、例えば以下は直接JavaScriptコードを実行することが可能で…
Hello there, ('ω')ノ 🎯 目的 このラボでは、ユーザーの入力がHTML属性内に反映され、山括弧(<、>)がHTMLエンコードされている状況で、属性にイベントハンドラを挿入してJavaScriptを実行するXSS攻撃を行います。 ️ 脆弱性の概要 入力は以下のような形でHTM…
Hello there, ('ω')ノ ️ 脆弱性の背景 HTMLタグの属性値(例えば href や value、title など)にユーザー入力がそのまま埋め込まれている場合、XSS(クロスサイトスクリプティング)攻撃が可能になるケースがあります。 攻撃の基本アイデア HTMLの属性内に…
Hello there, ('ω')ノ 目的 このラボでは、コメント機能に保存型XSS(Stored XSS)の脆弱性があります。ユーザーが投稿したコメントが適切にサニタイズされずに他の閲覧者に表示されることで、JavaScriptが実行されてしまいます。 攻撃手順(解説付き) 1.…
Hello there, ('ω')ノ 目的 このラボでは、検索機能に反射型(Reflected)XSSの脆弱性があります。ユーザーが入力した検索ワードがHTML内にエスケープ処理なしで挿入されているため、JavaScriptが実行可能です。 攻撃手順(解説付き) 1. ブラウザでラボを…
Hello there, ('ω')ノ 🎯 攻撃の対象:「HTMLタグ間のテキスト」コンテキストとは? XSSの脆弱性調査中、攻撃対象の入力値がHTML要素のタグとタグの間のテキストとして出力されるケースがあります。 例: <p>こんにちは、[ユーザー入力]</p> このような出力場所を「HT…
Hello there, ('ω')ノ コンテキストとは? コンテキストとは以下の2点を指します: レスポンス中の、ユーザー入力が反映される場所(HTMLのどこか) その入力に対して、アプリケーション側でどのようなフィルターやサニタイズ処理が行われているか なぜ重…