保存された DOM XSS

Apr 07 2023
重大なセキュリティ上の欠陥の発見と対処
Web アプリケーションのテスト中に、Stored DOM XSS の脆弱性を発見しました。オンライン アプリケーションには、ユーザーがデータベースに保存するデータを入力し、脆弱性が存在する後続のページに表示される領域があります。
作者によるスクリーンショット

Web アプリケーションのテスト中に、Stored DOM XSS の脆弱性を発見しました。オンライン アプリケーションには、ユーザーがデータベースに保存するデータを入力し、脆弱性が存在する後続のページに表示される領域があります。

攻撃者はこの欠陥を利用して被害者のブラウザで任意のコードを実行し、機密情報を盗んだり、被害者のマシンを完全に侵害したりする可能性があります。

プログラムの後続のページに表示されるフィールドに、慎重に作成された入力をユーザーが入力すると、脆弱性がアクティブになります。

入力は、データベースに保存されて後続のサイトに表示される前に適切にサニタイズされないため、攻撃者が任意の HTML および JavaScript コードを挿入することができます。

被害者が脆弱な Web サイトにアクセスすると、このコードが被害者のブラウザによって実行され、攻撃者が機密データを盗んだり、被害者に代わってアクティビティを実行したりできるようになります。

再現する手順:

  1. 通常のユーザーとして Web アプリケーションにログインします。
  2. データが入力され、データベースに保存されるセクションに移動します
  3. 次のペイロードをテキスト フィールドに入力します。
  4. "><img src="x" onerror="alert(1)">
    

6. 警告メッセージ「1」が表示されます。

コンセプトの証明:

ここでは、保存された dom xss を練習するためのラボを提供しています。

影響:

この脆弱性は、攻撃者がユーザー パスワード、セッション トークン、プライベート データなどの機密データを取得するために使用される可能性があります。

被害者に代わって送金、不正な購入、アカウント設定の変更などを行うだけでなく、被害者はこれを使用してこれを行う可能性があります。被害者のアカウントに対する完全なアクセス権を攻撃者に与えるため、この脆弱性は重大な結果をもたらします。

推奨事項:

  • データベースに保存する前、またはアプリケーションの他のページに表示する前に、すべてのユーザー入力をサニタイズします。
  • コンテンツ セキュリティ ポリシー (CSP) ヘッダーを実装して、インライン スクリプトの実行を防止し、外部スクリプトのソースを制限します。
  • Web アプリケーションの定期的なセキュリティ評価を実行して、その他の脆弱性を特定して対処します。