web-dev-qa-db-ja.com

POSTリクエストでXSSを悪用してパラメーターが本体に入る場合は?

私の理解によると、(GETリクエストで)XSSを悪用している間、攻撃者はJSペイロードを使用して悪意のあるリンクを作成し、それを被害者に送信します。被害者がリンクをクリックすると、スクリプトはクッキーを攻撃者のサーバーに送信します。

パラメータが本文に含まれている場合、XSSの脆弱性をどのように利用できますか?ペイロード(リンクまたはファイル)をどのように正確に作成し、被害者に送信する必要がありますか?

1
Raghav

POST bodyを含むリンクを作成することはできません。そのため、多少異なるルートをたどる必要があります。

ペイロードを含む独自のページを作成する必要があります。

<form action="http://target.com" method="post" onload="this.submit()">
  <input type="hidden" value="payload" name="fieldname">
</form>

または、JavaScriptフェッチAPIを使用するだけで同じ効果を得ることができます。次に、被害者をだましてこのページにアクセスさせる必要があります。

URLが異なり、おそらく少し怪しげに見えるため、これは少し難しくなります。それを避けたい場合は、オープンリダイレクトの脆弱性を探しに行き、それらを利用して被害者をページに誘導することができます。

もちろん、ペイロードがサーバーに格納されていて、後でアクセスできるページに表示されている場合、これははるかに簡単です。被害者にそのページを訪問させるだけです。これは、ストアードXSSと呼ばれるものです。

6
Anders