XSS クロスサイト攻撃の概要
1. XSS クロスサイト攻撃の原理
クロスサイト スクリプティング (略して XSS) は、コード インジェクション攻撃です。攻撃者は、標的の Web サイトに悪意のあるスクリプトを挿入して、ユーザーのブラウザーで実行します。攻撃者はこれらの悪意のあるスクリプトを使用して、Cookie、SessionID などの機密ユーザー情報を取得し、データ セキュリティを危険にさらす可能性があります。
ページに悪意のある JavaScript スクリプトが挿入されると、ブラウザはこれらのスクリプトが悪意を持って挿入されたものか、通常のページ コンテンツであるかを区別できないため、悪意を持って挿入された JavaScript スクリプトにもすべてのスクリプト権限が付与されます。ページに悪意のある JavaScript が挿入された場合に、悪意のある JavaScript ができることを見てみましょう。
(1) Cookie情報が盗まれる可能性があります。悪意のある JavaScript は、「document.cookie」を介して Cookie 情報を取得し、XMLHttpRequest または Fetch と CORS 関数を使用してデータを悪意のあるサーバーに送信できます。悪意のあるサーバーは、ユーザーの Cookie 情報を取得した後、他のコンピューターでのユーザーのログインをシミュレートできます。その後、転送などの操作を行います。
(2) ユーザーの行動を監視できます。悪意のある JavaScript は、「addEventListener」インターフェイスを使用してキーボード イベントを監視できます。たとえば、ユーザーが入力したクレジット カード情報を取得して悪意のあるサーバーに送信することができます。ハッカーがこの情報を習得すると、多くの違法行為を行うことができます。
(3) DOM を改変して、ユーザーをだましてユーザー名やパスワードなどの情報を入力させることで、偽のログイン ウィンドウを偽造することができます。
(4) ページ内にフローティング ウィンドウ広告を生成することも可能であり、これらの広告はユーザー エクスペリエンスに深刻な影響を与えます。
2. XSS クロスサイト攻撃の分類
2.1 反射
ノンストレージタイプとも呼ばれ、広く使われています。主なことは、URL でコード ブロックを非表示にし、ユーザーがクリックして実行できるようにすることです。
2.2 収納タイプ
コードブロックはサーバーのどこかに隠されています, 例えば, 投稿バーのコメントエリア. 誰かがこの投稿を読み込んでコメントを見ると、コードブロックはすでに実行されています.
2.3 DOM タイプ
dom はサーバーへのストレージを含まないため、dom もリフレクション タイプの範囲内にあると見なされます。
Baidu Encyclopedia: DOM は、追加や編集など、ドキュメント内の情報を分割する機能であり、これらのオブジェクトを使用するために必要なメソッドとプロパティも含まれています。
つまり、特定のメソッドを使用して特定のことを実行したり、特定のデータを直接取得したりするなど、dom の機能に従ってこれらを操作できます。
3. デモ
3.1 反射型
攻撃プロセスが有効になるには、指定された URL へのアクセスをユーザーに許可する必要があり、アクセス プロセス中に生成されたデータはサーバーの影響を受けません。
反映された XSS の全体的なプロセスの概要は、この図です。ハッカーは特定のリンクをクリックするように誘導します。このリンクによって提供されるサービスは、上記の検索機能である可能性があります。
リンクのパラメーターを解析した後、Web ページは通常の検索ロジックを実行しますが、脆弱性のため、Web ページはハッカーによって定義されたスクリプトで埋め尽くされます。ユーザーのブラウザが最終的にハッカーのスクリプトを実行する理由。
反映された XSS 脆弱性は、Web サイトの検索やリダイレクトなど、URL を介してパラメーターを渡す機能で一般的です。
悪意のある URL を有効にするには、ユーザーが積極的に開く必要があるため、攻撃者は多くの場合、複数の手段を組み合わせてユーザーにクリックを誘導します。
POST のコンテンツもリフレクティブ XSS をトリガーする可能性がありますが、そのトリガー条件は比較的厳しい (フォーム送信ページを構築し、ユーザーにクリックを誘導する必要がある) ため、非常にまれです。
3.2 収納タイプ
インタラクティブなデータはデータベースに保存されます。データベースは永続的に保存され、安定性が高いです。
Stored XSS 攻撃の手順:
(1) 攻撃者は、標的の Web サイトのデータベースに悪意のあるコードを送信します。
(2) ユーザーが目的の Web サイトを開くと、Web サイト サーバーはデータベースから悪意のあるコードを取り出し、HTML に結合してブラウザーに返します。
③利用者のブラウザはレスポンス受信後、レスポンスを解析・実行し、そこに混入した悪意のあるコードも実行される。
(4) 悪意のあるコードは、ユーザーのデータを盗み出し、攻撃者の Web サイトに送信するか、ユーザーになりすまして、標的の Web サイトのインターフェースを呼び出し、攻撃者が指定した操作を実行します。
たとえば、メッセージ ボード機能、システムにメッセージ ボード機能がある場合、すべてのユーザーがメッセージを読むことができるように、コンテンツをデータベースに格納する必要があります。
上の図に示すように、次のメッセージを入力すると、アラート (63252) の内容がデータベースに保存されるため、ユーザーがメッセージ ボードにアクセスするたびにアクティブになり、ボックスがポップアップします。インターフェース。
ハッカーが悪意のあるコードをデータベースに書き込み、ユーザーがデータベースにアクセスするたびに悪意のあるコードが実行されると、悲惨な結果になります。
3.3 DOM タイプ
DOM ベースの XSS 攻撃には、ページの Web サーバーは関与しません。具体的には、ハッカーは、ネットワークハイジャックによるページ転送中に HTML ページの内容を改ざんするなど、さまざまな手段でユーザーページに悪意のあるスクリプトを挿入し、ソフトウェアによって乗っ取られますが、それらに共通するのは、Web ページのデータを改ざんすることです。 Web リソースの送信またはユーザーによるページの使用プロセス。
DOM タイプの XSS 攻撃手順:
(1) 攻撃者は、悪意のあるコードを含む特別な URL を作成します。
(2) ユーザーが悪意のあるコードで URL を開く。
(3) ユーザーのブラウザが応答を受信すると、それを解析して実行し、フロントエンドの JavaScript が URL 内の悪意のあるコードを取り出して実行します。
(4) 悪意のあるコードは、ユーザーのデータを盗み出し、攻撃者の Web サイトに送信するか、ユーザーになりすまして、標的の Web サイトのインターフェースを呼び出し、攻撃者が指定した操作を実行します。
DOM 型 XSS と前の 2 種類の XSS の違い: DOM 型 XSS 攻撃では、悪意のあるコードの抽出と実行はブラウザーによって完了されます。これは、フロントエンド JavaScript 自体のセキュリティ上の脆弱性です。 2 種類の XSS は、サーバーのセキュリティ上の脆弱性です。
4.害
1. さまざまなユーザー アカウントを盗むなどのフィッシング;
2. ユーザーの Cookie 情報を盗んでユーザーのプライバシー情報を取得するか、ユーザー ID を使用して Web サイトでさらに操作を実行する。
3. ユーザー(ブラウザ)のセッションを乗っ取り、不正転送、ログの強制公開、メール送信など任意の操作を行う。
4. 広告ページの強制的なポップアップ、トラフィックのスワイプなど。
5. Web ページ上で馬をホストして、ページ情報を任意に改ざんしたり、記事を削除したりするなどの悪意のある操作を実行すること。
6. DDoS 攻撃など、多数のクライアント攻撃を実行します。
7. ユーザーの閲覧履歴、実際の IP、開いているポートなどのクライアント情報を取得します。
8. 被害者のマシンを制御して他の Web サイトを攻撃する。
9. CSRF 脆弱性などの他の脆弱性と組み合わせて、さらなる悪を実行する;
10. ウェブサイトへのさらなる浸透を含め、ユーザーの権利を高めます。
ユーザーの閲覧履歴、実際の IP、開いているポートなどのクライアント情報を取得します。
8. 被害者のマシンを制御して他の Web サイトを攻撃する。
9. CSRF 脆弱性などの他の脆弱性と組み合わせて、さらなる悪を実行する;
10. ウェブサイトへのさらなる浸透を含め、ユーザーの権利を高めます。
11. クロスサイト スクリプティング ワームなどを拡散する。