Shikata Ga Nai

Private? There is no such things.

XSS

LAB: DOM Clobbering を使った HTML フィルター回避 — “どう考え、何を試し、何を観察するか”を完全ガイド

Hello there, ('ω')ノ 目的:HTML フィルター(HTMLJanitor)の抜け穴を DOM Clobbering で突き、print() を実行させる。 想定ブラウザ:Chrome 推奨(この手法は Firefox では想定通り動かないことがある) 全体の進め方(非エンジニア向けの道筋) まず観…

LAB: DOM Clobbering を利用した HTML フィルター回避(Clobbering DOM attributes to bypass HTML filters)

Hello there, ('ω')ノ まず理解すべきポイント HTML フィルターが属性を制御している HTMLJanitor は不正な属性(例: onload や onclick)を削除して安全化する仕組み。 → しかし内部的に attributes プロパティに依存している。 DOM Clobbering とは? HTM…

DOM Clobbering の「上書き」とは?

Hello there, ('ω')ノ 1. 通常のDOMの仕組み HTML要素には id や name を付けられます。 例えば: <input id="user"> するとJavaScriptからはこうアクセスできます: document.getElementById("user"); // <input id="user"> これは普通の動きです。 2. プロパティと名前が衝突するケース ブラ…

【有料試作版】PortSwigger LAB解説:続・DOM XSS in document.write sink using source location.search(document.write × location.search でDOM XSS)

Hello there, ('ω')ノ DOMで追加された要素はなぜ「ソース」に無いのに「Elements」では見えるのか document.write と DevTools で読み解く表示の流れ この記事では、次の2点をセットで解説します。 - 要素(Elementsパネル)にあるのに、ページのソースには…

【有料試作版】PortSwigger LAB解説:DOM XSS in document.write sink using source location.search(document.write × location.search でDOM XSS)

Hello there, ('ω')ノ 動画 www.youtube.com ねらい 検索ページが、URLのクエリ(location.search)をそのままdocument.writeでページに書き込んでいます。これにより、検索語がタグや属性の中へ無加工で挿入され、XSSが成立します。ゴールはalert(1)を出す…

【有料試作版】PortSwigger LAB解説:続・Exploiting DOM clobbering to enable XSS(DOM ClobberingでXSS発火)

なぜ「window.○○ || {…}」が危険パターンなのか 一言で この書き方は「window上に“それっぽい値”があれば何でも採用する」という意味になります。 すると攻撃者がDOM Clobberingなどで window.○○ を“偽物”で先に埋めれば、アプリはそれを正しい設定オブジェ…

【有料試作版】PortSwigger LAB解説:Exploiting DOM clobbering to enable XSS(DOM ClobberingでXSS発火)

Hello there, ('ω')ノ ねらい このLABは、コメント欄に許可された“安全そうなHTML”だけで、グローバル変数を書き換えるDOM Clobbering(DOM汚染)を起こし、アプリのJSがそれを信じて使った瞬間にXSS(alert)を発火させるのがゴールです。 ポイントは、アプ…

【有料試作版】PortSwigger LAB解説:Reflected XSS protected by CSP, with CSP bypass(CSPを“ヘッダ注入”でねじ曲げてXSS)

Hello there, ('ω')ノ ねらい このLABは、検索結果に反射型XSSがある一方で、レスポンスヘッダのCSP(Content-Security-Policy)によって実行が止められます。ところがCSPの中にあるreport-uri の token パラメータがユーザ入力に依存しており、ここからCSP…

【有料試作版】PortSwigger LAB解説:DOM XSS in document.write sink using source location.search(select要素内のdocument.writeを悪用)

Hello there, ('ω')ノ ねらい このLABは、商品ページの在庫チェッカーで使われているJavaScriptが、URLのlocation.search(クエリ文字列)から値を取り出し、そのままdocument.writeで<select>配下に書き込む、という危険な実装になっている点を突きます。…

LAB: jQueryのアンカーhref属性とlocation.searchによるDOM型XSS

Hello there, ('ω')ノ ラボの概要 このラボでは、submit feedback ページにおいて、DOMベースのクロスサイトスクリプティング(DOM XSS)脆弱性が存在します。 具体的には、jQueryの $ セレクタ関数が location.search から取得したデータを使用して、アン…

LAB: DOM XSS in jQueryのセレクタシンクとhashchangeイベントを利用した攻撃

Hello there, ('ω')ノ 概要 このラボでは、jQueryの$()セレクタ関数がlocation.hashの値をもとに特定のブログ記事に自動スクロールする機能を持っています。この実装により、DOMベースのクロスサイトスクリプティング(DOM XSS)の脆弱性が生じています。攻…

DOMベースXSSのクラシックパターン:jQueryの`$()`セレクターと`hashchange`イベントを悪用する攻撃手法

Hello there, ('ω')ノ 概要 jQueryはかつて非常に広く利用されていたJavaScriptライブラリであり、その柔軟なセレクター関数$()はDOM操作に頻繁に使用されていました。しかし、この機能は過去に多くのDOMベースXSS(クロスサイトスクリプティング)脆弱性を…

第三者ライブラリを利用したDOM XSS:jQueryとattr()による攻撃

Hello there, ('ω')ノ 背景 モダンなWebアプリケーションは、多くの場合、jQueryや他のJavaScriptフレームワークを使って構築されています。こうしたライブラリの中にも、DOM XSS(クロスサイトスクリプティング)を引き起こす「シンク(sink)」が存在しま…

LAB: DOMベースXSS – `innerHTML`シンクとlocation.searchソースの利用

Hello there, ('ω')ノ 脆弱性の概要 このラボでは、検索機能の中でDOMベースのクロスサイトスクリプティング(XSS)脆弱性があります。具体的には、次のような流れです: ブラウザのURLクエリパラメータ(location.search)から値を取得 それをそのままdiv.…

DOMベースXSSで`innerHTML`シンクを使った攻撃方法

Hello there, ('ω')ノ 🔍 状況の背景 多くのDOMベースXSSでは、innerHTMLシンクを通してHTMLにJavaScriptを埋め込もうとします。しかし、モダンブラウザでは次の制限があるため、従来のXSS手法が通用しません: <script>タグはinnerHTMLに書いても実行されない。 <svg onload=...> のよ</svg>…

LAB: ドキュメント書き込みのシンクでのDOMベースXSS

Hello there, ('ω')ノ このラボの目的 このラボでは、DOMベースのクロスサイトスクリプティング(XSS)脆弱性を突き、alert関数を実行する必要があります。 このアプリは、URLのクエリパラメータ(location.search)の値をJavaScriptで取得し、それを docum…

DOM XSSの様々なソースとシンクの攻撃手法まとめ

Hello there, ('ω')ノ DOMベースXSSの基本原理 DOMベースXSSは、ユーザー入力(ソース)がJavaScriptコードによって危険な関数(シンク)に渡され、結果として悪意のあるスクリプトがブラウザ上で実行されてしまう脆弱性です。 ソースからシンクへの流れ D…

DOMベースのXSSのテスト方法:初心者でもわかる手順解説

Hello there, ('ω')ノ DOMベースXSSのテスト目的 DOM-based XSS(ドムベースクロスサイトスクリプティング)は、JavaScriptの動作を通じて発生する脆弱性のため、通常のHTMLソースを確認するだけでは検出できません。ここでは、Google Chromeなどのブラウザ…

DOMベースのクロスサイトスクリプティング(DOM-based XSS)とは?

Hello there, ('ω')ノ DOM-based XSSの概要 DOM-based XSS(ドムベースクロスサイトスクリプティング)は、クライアントサイドのJavaScriptによって発生するXSS脆弱性です。サーバーではなく、ブラウザ上のJavaScriptコードが攻撃ベクトルになります。 発…

LAB: JavaScript文字列中の反射型XSS(HTMLエンコードされた山括弧)

Hello there, ('ω')ノ 🔍 脆弱性のポイント ユーザーの入力が JavaScriptコード中の文字列リテラル に埋め込まれています。 < や > は &lt; や &gt; に変換されており、HTMLタグを直接挿入するXSSは防がれています。 しかし、シングルクォート ' や セミコロン…

JavaScript文字列内でのXSS脆弱性の悪用方法

Hello there, ('ω')ノ JavaScriptのコード内で、ユーザー入力が文字列リテラルとして埋め込まれている場合、適切な対策が施されていないと、攻撃者はその文字列から抜け出して任意のコードを実行することが可能です。 攻撃の概要 例えば、以下のようなコー…

Hidden Inputフィールドを利用したXSSの実践と解説

Hello there, ('ω')ノ はじめに Webアプリケーションの脆弱性の一つであるクロスサイトスクリプティング(XSS)は、ユーザーの入力を適切に処理しないことにより、悪意のあるスクリプトが実行される可能性があります。特に、<input type="hidden">のような非表示の入力フィールド…

LAB: `Stored XSS` - `href属性`へのJavaScriptプロトコル注入

Hello there, ('ω')ノ 目的 このラボでは、コメント機能に格納型XSS(Stored XSS)の脆弱性が存在し、ユーザー名に設定されたリンクが href 属性内でそのまま反映される仕様を突きます。href に javascript: スキームを使ってスクリプトを実行し、XSSを達成…

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

Hello there, ('ω')ノ 目的 このセクションでは、XSSがスクリプト実行可能な属性(scriptable attribute)に反映される場合の挙動と攻撃方法について解説します。 ️ 脆弱性の概要 一部のHTML属性、例えば以下は直接JavaScriptコードを実行することが可能で…

LAB: 属性内に反映されたXSS(HTMLエンコードされた山括弧)

Hello there, ('ω')ノ 🎯 目的 このラボでは、ユーザーの入力がHTML属性内に反映され、山括弧(<、>)がHTMLエンコードされている状況で、属性にイベントハンドラを挿入してJavaScriptを実行するXSS攻撃を行います。 ️ 脆弱性の概要 入力は以下のような形でHTM…

HTMLタグ属性内におけるXSS攻撃手法

Hello there, ('ω')ノ ️ 脆弱性の背景 HTMLタグの属性値(例えば href や value、title など)にユーザー入力がそのまま埋め込まれている場合、XSS(クロスサイトスクリプティング)攻撃が可能になるケースがあります。 攻撃の基本アイデア HTMLの属性内に…

LAB: Stored XSS – HTMLコンテキストにおけるエンコードなし

Hello there, ('ω')ノ 目的 このラボでは、コメント機能に保存型XSS(Stored XSS)の脆弱性があります。ユーザーが投稿したコメントが適切にサニタイズされずに他の閲覧者に表示されることで、JavaScriptが実行されてしまいます。 攻撃手順(解説付き) 1.…

LAB: Reflected XSS – HTMLコンテキストにおけるエンコードなし

Hello there, ('ω')ノ 目的 このラボでは、検索機能に反射型(Reflected)XSSの脆弱性があります。ユーザーが入力した検索ワードがHTML内にエスケープ処理なしで挿入されているため、JavaScriptが実行可能です。 攻撃手順(解説付き) 1. ブラウザでラボを…

HTMLタグ間でのXSS攻撃手法(Stored / Reflected)

Hello there, ('ω')ノ 🎯 攻撃の対象:「HTMLタグ間のテキスト」コンテキストとは? XSSの脆弱性調査中、攻撃対象の入力値がHTML要素のタグとタグの間のテキストとして出力されるケースがあります。 例: <p>こんにちは、[ユーザー入力]</p> このような出力場所を「HT…

クロスサイトスクリプティング(XSS)の「コンテキスト」とは何か?

Hello there, ('ω')ノ コンテキストとは? コンテキストとは以下の2点を指します: レスポンス中の、ユーザー入力が反映される場所(HTMLのどこか) その入力に対して、アプリケーション側でどのようなフィルターやサニタイズ処理が行われているか なぜ重…