Web 攻撃と防御のためのビジネス セキュリティ: コールバック カスタム テスト
ビジネスセキュリティとは、ビジネスシステムをセキュリティの脅威から保護するための手段または手段を指します。広義のビジネス セキュリティには、ビジネスを実行するソフトウェアおよびハードウェア プラットフォーム(オペレーティング システム、データベース、ミドルウェアなど)、ビジネス システム自体(ソフトウェアまたは機器)、およびビジネスによって提供されるサービスのセキュリティが含まれる必要があります。狭義のセキュリティとは、業務システム自身のソフトウェアを指し、サービスのセキュリティを指します。
目次:
ステップ 2: URL にコールバック パラメータがあるリンクを見つけます。
ステップ 5: 簡略化された URL で、コールバック パラメータを悪意のある HTML タグに置き換え、それを新しいブラウザで使用します。
免責事項:
この記事に記載されている技術を使用して違法な攻撃を行うことは固く禁じられています。使用しない場合の結果は自己責任であり、アップロード者は一切の責任を負いません。
コールバック カスタム テスト:
テストの原理と方法:
ブラウザには同一オリジン ポリシーがあり、いわゆる同一オリジンとは、同じドメイン名、プロトコル、およびポートを指します。Ajaxを使用して非同期にデータを送信する場合、非同一生成元ドメイン名間の制限があります. 解決策の 1 つはJSONP (JSON with Padding) です. 基本的な原則は、 HTMLの<script> </script>要素タグを 使用してリモートに送信します. JSONPファイルを呼び出す データ転送を実現するために, Callback (コールバック関数) パラメータは一般にJSONPテクノロジ で使用され, コールバック時に使用される関数名を宣言します. ここにはしばしばセキュリティ上の問題があります. Callback 関数を制限するためのホワイトリスト方式がないためです. 攻撃者は、 XSS などの脆弱性をトリガーするCallbackの内容を自動的に定義できます。
テスト プロセス:
テストの前に、攻撃者は Burp Suiteのクローラー機能を使用して Web サイトをクロールし、 Callbackまたは JSONPパラメーターでリクエストを選別します .リクエスト レスポンスのContent-Typeを判断して ください. Content-Typeがtext/htmlの場合は Go次のステップに進み、攻撃者は Content-Typeパラメータを分析します . Callbackパラメータにより、攻撃者がHTMLタグを挿入できる場合 、脆弱性があります.
ステップ1: Burp Suiteのクローラー機能を使って、注目しているディレクトリ(通常はWebサイトのルートディレクトリ)からクロールを開始し、 HTTP履歴タブでクロールを開始する項目を選択し、右クリックして「 Spider from here」を選択します。クロールされた結果はTarget --> Site mapに表示されます。クロール後、Burp Suiteのフィルタリング機能を利用して Callbackパラメータのリンクを探します(キーワード入力後、「1」の位置をクリックするとフィルタリング機能が有効になります)。
ステップ 2: URLにcallbackパラメータがあるリンクを見つけます。
ステップ 3: URL に対応するHTTP 応答(応答パケットを確認)のContent- Type がtext/htmlであるかどうかを確認する . Content-Typeがtext/htmlで ある場合 、入力したタグがブラウザーによって認識されます。次に、対応するリクエストをリピーター (再送信機) に送信します。
ステップ 4: Callbackパラメーターがフィルタリングされ、制御可能かどうかを確認する. この時点で、 Callback パラメーター値の前にいくつかのテキストHTMLタグを追加する必要があり、 wafなどの保護デバイスによる検出を避けるために、スクリプトやその他のタグを直接使用しないでください. ここでは、第 1 レベルのタグ<h1>を使用します。例: callback= <h1>Test</h1> jsonp1 、次にそれを送信して、応答に<h1>Test</h1>コンテンツがあるかどうかを確認します。抜け穴がある場合は、infoのパラメーターを削除します ( URL)を取得してURL を短縮します。
ステップ 5: 簡略化されたURL で、コールバックパラメータを悪意のあるHTMLタグに置き換え 、それを新しいブラウザで使用します。
修理の提案:
(1) HTTPレスポンスのContent-Type をjsonデータ形式として厳密に定義する: Content-Type: application/json
(2) Callback関数のホワイトリストを作成し、入ってくる Callbackパラメーターの値がホワイトリストにない場合は、統合例外ページにジャンプして、それが出力され続けないようにします。
(3) CallbackパラメータでHTMLエンティティ エンコーディングが実行され、「 <」、「> 」、およびその他の文字が除外されます。
学習する書籍: Web 攻撃と防御ビジネス セキュリティの実践ガイド。