Shikata Ga Nai

Private? There is no such things.

Bug Bounty Writeup: Stored XSS Vulnerability WAF Bypassを訳してみた

Hello there, ('ω')ノ

 

保存された XSS の脆弱性 WAF バイパスを。

 

脆弱性:

 保存された XSS

 WAF バイパス

 

記事:

 https://medium.com/@lopseg/bug-bounty-writeup-stored-xss-vulnerability-waf-bypass-f38aae7ff9eb

 

今回は、編集済みアプリのカスタム レシートおよび放棄されたカートの

電子メールに挿入された外部リンクで発見された、

保存されたクロスサイト スクリプティング (XSS) の脆弱性について。

脆弱性、その影響、それを再現する手順について説明することに。


脆弱性の説明:

TARGET アプリを使用すると、ユーザは顧客に送信されるカスタム レシートと

カート放棄メールをカスタマイズでき。

ユーザはこれらの電子メール内に外部 Web サイトへのリンクを挿入でき。

ただし、アプリは、二重引用符が外部リンクの一部として挿入される場合、

二重引用符を適切にエンコードできないため、生成されたアンカー タグに

任意の属性を挿入できて。

これにより、保存された XSS の脆弱性が発生し、

攻撃者が任意の JavaScript コードを実行できるようになって。

ユーザが、 http://example.com"%20test=test を外部 URL として挿入すると、

生成されるアンカー タグは次のようになって。

 

<a href="http://example.com" test=test"> CLICK ME </a>

 

XSS ペイロードの作成:

脆弱性を実証するために、WAF をバイパスし、生成されたアンカー タグに

onmouseover JavaScript イベント ハンドラを追加する XSS ペイロードを作成して。

onmouseover 属性は、ユーザがリンク上にマウスを移動するとトリガされ。

以下のペイロードを参照して。

 

http:falselink.com;"onmouseover%20=%0az=top;z[/al/.source%2b/ert/.source](8);//test.com/

 

XSS 脆弱性の概念実証 (POC) は次のとおりで。

 

<a href="http://example.com;" onmouseover="z=top;z[/al/.source%2b/ert/.source](8);//test.com/"

 

影響:

他のユーザのブラウザでカスタム JavaScript コードが実行されるということは、

悪意のあるユーザが他のユーザに代わって権限を昇格したり、

読み取り/書き込みアクションを実行したりするなど、

望ましくないアクションを実行できることを意味して。

これは、XSS の脆弱性により、攻撃者が同一生成元ポリシーを回避できるためで。


再現する手順:

アカウント 1 (所有者) とアカウント 2 (招待された管理者) の

2 つのアカウントがあると仮定して、次の手順に従い。

アカウント 2 として、「AAAAAAAAAAAAAAAAAA」と入力し、

テキストを選択して [リンク] ボタンをクリックし、

URL として http://example.com を貼り付けて。


Burp Suite などのツールを使用してリクエストをインターセプトし、

リクエスト本文のhttp://example.com を http:falselink.com;"onmouseover%20=%0az=top;z[/al/.source%2b/ert/.source](8);//test.com/

に置き換えて。


ここで、アカウント 1 としてログインし、脆弱なページに移動し、AAAAAAAAAAAAAAAAAAAA リンクの上にマウスを置いて。

 

結論:

この記事では、攻撃者が他のユーザのコンテキストで

任意の JavaScript コードを実行できる、

Redacted アプリに保存された XSS の脆弱性について詳しく説明していて。

このような脆弱性を防ぐには、Web アプリケーションがユーザ入力を

適切にエンコードしてサニタイズすることが不可欠で。

 

Best regards, (^^ゞ