こんにちは XSS 攻撃は、クライアントのマシンからの攻撃として扱われます。しかし、サーバー上で XSS 攻撃を行う方法はありますか?
SQL インジェクションの場合のように、クライアント側のインターフェイスを使用してサーバー上でコードを実行する方法があるかどうかを知りたいのですが、ここではデータベース サーバーではなく、単純な Web サーバーまたはアプリケーション サーバーです。
場合によっては、XSS をベクトルとして使用して、クロスサイト リクエスト フォージェリ ( CSRF ) 攻撃をトリガーして活用することもできます。
Web サイトに XSS を配置することは、ユーザーが Web サイトにアクセスしたときに実行する JavaScript を制御するようなものです。管理者が (悪意のあるリンクを送信するか、保存された XSS を介して) XSS コードに出くわした場合、通常のユーザーが通常アクセスできない Web サーバー上で要求またはアクションを実行するように管理者に指示する可能性があります。 . Web ページのレイアウトを十分に理解している場合は、訪問者に代わって Web ページ (バックエンド、ユーザー リストなど) を要求し、結果をインターネット上の任意の場所に送信 (抽出) することができます。
BeEFなどのより高度な攻撃フレームワークを使用して、訪問者のブラウザーの脆弱性を悪用することもできます。問題の訪問者が Web サイトの管理者である場合、Web サーバーをさらに攻撃するための興味深い情報が得られる可能性があります。
XSS 自体では、サーバー上でコードを実行することはできませんが、Web アプリケーションに存在する他の脆弱性を利用するための優れたベクトルです。
あなたの質問への答えは完全に単純ではありません。
具体的には、インターフェイスを介してコードを挿入することにより、XSS を使用してサーバーを攻撃することはできません。
ただし、インターフェイスを介してサーバーにコードを「注入」し、サーバーにコードを実行させる方法があります。手法は大きく異なり、実装に大きく依存します。
たとえば、ユーザーが表示用の画像ファイルをアップロードできる Web アプリケーションがありました。Web アプリケーションには、画像を「修正」するコードが含まれていました。修正コードに脆弱性がありました。悪意のあるユーザーが、慎重に準備された悪意のある .jpg ファイルをアップロードしました。このファイルは、コード内のバッファーをオーバーフローさせ、シェルをシャベルで攻撃者のマシンに押し込みました。このような場合、攻撃は、そのインターフェースを介して Web アプリにコードを「注入」することによって行われました。
ユーザー入力を処理しない限り (DB に保存して他のユーザーに返す以外は)、この種の攻撃からはかなり安全なはずです。おそらく Web アプリの 99% は、自分自身に対するコード インジェクション攻撃よりも、ユーザーから他のユーザーへの XSS 攻撃に対してはるかに心配する必要があります。
XSS や SQL インジェクションなどの脆弱性は、より一般的な問題の特定の例です。攻撃者が制御可能なテキストを他の形式 (SQL、HTML、Javascript など) に不適切に連結することです。
サーバーがそのような形式 (例: eval()
) を実行している場合、同様の脆弱性が存在する可能性があります。