ソース:
訳:
AWS Cognito がデータを安全に処理しない仕組みと、単純な XSS 攻撃を使用してこの脆弱性を悪用する方法を検証し。
この問題は最終的にアカウントの完全な乗っ取りにつながる可能性があり、最終的にはアカウントの乗っ取りにつながる可能性があって。
また、最終的にアプリケーションの悪用に役立つ優れた WAF XSS バイパスも確認し。
AWS Cognito の概要
すでに基本を理解している方は、エクスプロイトまで直接下にスクロールして。
本題に入る前に、AWS Cognito が何をするのかを少し理解して。
AWS Cognito は、アマゾン ウェブ サービスが提供するサービスで、開発者がユーザーの認証、認可、ユーザーデータを管理する必要がないように支援して。
という2 つの主要なサービスで構成されています Cognito は、ユーザー プール と アイデンティティ プール 。
ユーザープール
ユーザープールは、ユーザープロファイルの管理と維持を可能にする AWS Cognito のユーザーディレクトリで。
これは、アプリ ユーザーにサインアップおよびサインイン機能を提供するとともに、ユーザー属性、アカウント回復、および多要素認証を処理する機能を提供し。
基本的に、ユーザー プールは安全なユーザー ストアとして機能し、アプリケーション内でのユーザー管理と認証を容易にし。
ID プール
AWS Cognito の ID プールを使用すると、ユーザーに AWS サービスへのアクセスを許可できます。 これにより、ユーザーの一意の ID を作成し、ユーザー プールまたは外部 ID プロバイダー (Google、Facebook、Amazon など) で認証できるようになります。 認証されると、アイデンティティ プールによって一時的な AWS 認証情報が提供され、ユーザーが他の AWS サービスに安全にアクセスできるようになります。

攻撃対象領域
Amazon Cognito は認証を管理するための効果的で安全なソリューションですが、トークンの保管メカニズムに重大な欠陥があって。
具体的には、Cognito はブラウザのローカル ストレージに認証トークンを保存し。
トークンをローカル ストレージに保存すると、いくつかのセキュリティ上の脆弱性が生じ。
ローカル ストレージは JavaScript を通じてアクセスできるため、クロスサイト スクリプティング (XSS) 攻撃の影響を受けやすくなり。
攻撃者が Web アプリケーションに悪意のあるスクリプトを挿入できる場合、これらのトークンにアクセスしてトークンの盗難につながる可能性があって。
これにより、攻撃者がユーザーになりすまし、機密情報やリソースに不正にアクセスできるようになり。
搾取
この情報を念頭に置いて、私はこの侵入テスト中に XSS の脆弱性を見つけることに重点を置き。
いくつか調べた結果、アイテムの削除などの特定のアクション中に表示されるエラー メッセージと通知メッセージ内で HTML レンダリングが行われていることに気付いて。
このエラーは、ページ上の一部の項目に設定できたタイトルを反映して。 幸いなことに、タイトルの長さはほぼ無制限だったので、これをさらに活用することができ。
ただし、Web アプリケーション ファイアウォール (WAF) の存在により、試したほぼすべてのエクスプロイトがブロックされるため、これは非常に困難で。
ブロックされなかったいくつかの基本的な HTML タグを渡すことができたにもかかわらず、WAF は、試したほぼすべてのバイパスおよび難読化テクニックを検出し。
2018 年 2 月 27 日に次のような非常に興味深い Cloudflare バイパスを見つけるまでは:
DOM では次のように変換され。
そして本質的には次のことを意味します:
最後に、JavaScript を悪用してローカル ストレージを取得し、サーバーに送信することができて。
ただし、ブラウザは次の方法で CORS リクエストを行うことを拒否し。 fetch
アプリケーションにはヘッダーが存在しないため、ブラウザーはデフォルトでより厳格なポリシーを使用することになり。
幸いなことに、単純なイメージを使用して、 src
属性をサーバーに追加し、ローカル ストレージ データを含む GET パラメーターを追加して。
これを行う単純な JS ペイロードを次に示します (きれいにフォーマットされています)。
受け取ることです idToken を を取得するための認証フローで使用される 最も重要なのは、 X-Amz-Security-Token 。
このトークンは、JWT と同様に、すべての認証されたリクエストで使用され。
このトークンを使用すると、ペイロードをクリックした被害者として基本的にログインできるようになって。
ほなほな。