web-dev-qa-db-ja.com

理解POSTベースのXSS

XSS、より具体的には、POSTベースのXSSについて学習しようとしています。しかし、POSTベースのXSSのしくみを実際に理解しているかどうかはわかりません。

GETを使用すると、URLパラメーターを使用してXSSを実行できますが、POSTベースのXSSを利用するには、HTMLフォームを使用する必要があります(リンクタグなどに偽装できますが、最終的には、それはHTMLフォームです)、独自のWebサイト、またはHTMLフォームの作成を許可する他のWebサイトのいずれかで、HTMLフォーム入力内で、悪用可能なパラメーターをハードコードします。

誰かがあなたのウェブサイトに到達したとき、またはユーザー自身がいくつかのボタンをクリックできるときに、フォームを自動送信できます。

全体として、HTMLフォーム部分は、それを行うための主な(唯一の?)方法ですか?

ありがとうございました!

更新:POSTリクエストも実行できるjavascript fetchメソッドがあります

更新2:WebサイトでHTMLフォームを自動送信するユーザーを取得した場合、最初にXSSを実行する必要があるのはなぜですか?自分のWebサイトでJSを実行できます

3
bobjohn43

あなたはそれをきちんと把握しているようです。 POSTリクエストを介してユーザーをリダイレクトできるものはすべて悪用するために使用できます-これは多くの場合HTMLフォームを介して行われますが、それができる唯一の方法というわけではありません。 JavaScript関数もユーザーをリダイレクトできます。

POST XSSとGET XSSの最も重要な違いは、ユーザーをフィッシングする方法です-攻撃しているWebアプリケーションがPOSTリクエストなので、その機能を備えた別のページにアクセスするにはフィッシングする必要があります。POSTとGETSはどちらも、反映されたXSSと保存されたXSSの両方を利用できます。

編集に答えるには、自分のドメインよりも他の誰かのドメイン(ウェブサイト)のコンテキストでJSを実行するほうがはるかに価値があります。バンキングアプリにログインしているときにブラウザーでJSを実行できる場合、セッションを使用してバンキングアプリにさらにリクエストを送信し、それらへの応答を読み取ることができます。 requests *。Webサイトの設定が不適切な場合は、セッショントークンを取得することもできます。 CSRF保護がある場合、XSSがあれば(= CSRF保護をバイパスして)、銀行アプリへのPOSTリクエストを実行できますが、JS経由ではありません)。

*ほとんどの場合、典型的なSOPサブドメインに分割されないと仮定して)

1
Buffalo5ix

正解です。POSTベースのXSSを悪用する場合、悪意のあるユーザーがPOSTリクエストを悪用して、悪用したページに対して行う必要があります。

これはほとんどの場合、攻撃者がホストするHTMLページに自動送信フォームを追加することで行われます。クリックジャッキングのような他のテクニックもありますが、HTMLページをホストするのが最も簡単な方法です。

被害者のブラウザからターゲットサイトでJSを実行できる必要があるため、Fetch APIの使用は役に立ちません。したがって、最初からXSSを利用する必要はありません。

1
Benoit Esnard