Security-testing-testing-ajax-security
提供:Dev Guides
AJAXセキュリティ
非同期JavascriptおよびXML(AJAX)は、リッチなユーザーエクスペリエンスを提供するためにWebアプリケーションを開発するために使用される最新の手法の1つです。 これは新しいテクノロジーであるため、まだ完了していない多くのセキュリティ問題が確立されており、以下はAJAXのいくつかのセキュリティ問題です。
- 保護する入力が多いほど、攻撃対象領域は大きくなります。
- また、アプリケーションの内部機能も公開します。
- 認証情報とセッションの保護の失敗。
- クライアント側とサーバー側の間には非常に狭い境界線があるため、セキュリティミスを犯す可能性があります。
例
AJAXセキュリティの例を次に示します-
2006年、ワームはXSSとAJAXを使用してyahooメールサービスに感染し、Yahoo Mailのonloadイベント処理の脆弱性を利用しました。 感染した電子メールが開かれると、ワームはJavaScriptを実行し、感染したユーザーのすべてのYahoo連絡先にコピーを送信しました。
ハンズオン
- ステップ1 *-XMLインジェクションを使用して、許可された報酬のセットにさらに報酬を追加する必要があります。 以下は、シナリオのスナップショットです。
- ステップ2 *-Burp Suiteを使用して要求と応答の両方をインターセプトすることを確認します。 以下と同じ設定。
- ステップ3 *-シナリオに記載されているアカウント番号を入力します。 対象となるすべての報酬のリストを取得できます。 5つのうち3つの報酬を受け取る資格があります。
- ステップ4 *-「送信」をクリックして、応答XMLで何が得られるかを見てみましょう。 以下に示すように、資格がある3つの報酬はXMLとして渡されます。
- ステップ5 *-これらのXMLを編集して、他の2つの報酬も追加しましょう。
- ステップ6 *-すべての報酬がユーザーに表示され、選択できるようになります。 追加したものを選択し、「送信」をクリックします。
- ステップ7 *-次のメッセージが表示され、「*おめでとうございます。 このレッスンは正常に完了しました。」
予防メカニズム
クライアント側-
- .innerHtmlの代わりに.innerTextを使用します。
- evalを使わないでください。
- セキュリティのためにクライアントロジックに依存しないでください。
- シリアル化コードを書くことは避けてください。
- XMLを動的に構築しないでください。
- クライアントに秘密を送信しないでください。
- クライアント側のコードで暗号化を実行しないでください。
- クライアント側でセキュリティに影響するロジックを実行しないでください。
サーバー側-
- CSRF保護を使用します。
- シリアル化コードを書くことは避けてください。
- サービスはユーザーが直接呼び出すことができます。
- 手作業でXMLを作成することは避け、フレームワークを使用してください。
- 手作業でJSONを作成することは避け、既存のフレームワークを使用してください。