ソース:
訳:
対象シナリオ
- XSS に対して脆弱なエンドポイントを見つけるために何時間も苦労した結果、最終的に興味深いと思われるエンドポイントを見つけました。
- それはサインアップページを公開していました。 これの興味深い点は、それが隠されていたことです。 URL は次のようになりました。
https://www.redacted.com/engine/signup/create.php
- そこで XSS ペイロードを試しましたが、すべてがフィルタリングされていました。 そこで私は、姓、名、住所のフィールドに中括弧 {} を追加することを思いつきました。
- 驚いたことに、3 つのフィールドすべてで中括弧に対する特定のフィルタリングが実行されていませんでした。
- 次のペイロードを試しました:- {{ <svg/onload=prompt("XSS")> }}
{{ <svg/onload=prompt(“XSS”)> }}
- 問題は、何らかの理由で直接ペイロードが通過しなかったことです。 burp を使用してリクエストをインターセプトし、エンコードされたペイロードを追加する必要がありました。
- XSS が起動されました。 問題は、これは単なる自己 XSS であるということです。
自己 XSS から保存された XSS へ
- 対象の Web サイトには、プロジェクトを作成できるセクションがありました。 プロジェクトは、ファイルを保存できるフォルダーであると考えてください。
- プロジェクト管理者は、これを他の「認証されたユーザー」と共有できます。
- プロジェクトには名前を付け、リンクを使用して共有する必要があります。
- さて、私はプロジェクトにペイロードを付けて名前を付けました。 したがって、ファイル名は次のようになります:- {{ <svg/onload=prompt("XSS")> }}
- めちゃくちゃな瞬間。 ファイル名の制限は維持されず、好きなようにプロジェクトに名前を付けることができました。
- プロジェクトの共有リンクをコピーし、他の認証されたユーザーに送信します。 前に述べたように、認証されたユーザーのみがプロジェクトを表示できます。 したがって、アプリケーションは、共有プロジェクトを表示する前にユーザーにログインを強制します。
- 認証されたユーザーがリンクをクリックすると、出来上がりです。 XSS ポップアップ。