Shikata Ga Nai

Private? There is no such things.

XSS Filter Evasion + IDORを訳してみた

Hello there, ('ω')ノ

 

XSSフィルター回避+IDORを。

 

脆弱性:

 XSS

 IDOR

 

記事:

 https://systemweakness.com/xss-filter-evasion-idor-3d4624758ff0

 

今回のサイトは、顧客を管理して請求書を発行できる。

オンライン支払い統合システムを提供していて。

多くのXSSやCSRFなどを報告しましたが、それらはすべて重複していて。

サイトの機能の一部をテストしているときに、次のようなURLに出くわして。

 /MerchantUser/create_customer/CUS-123456–A1B2C3

 

すぐにテストしたところ、IDOR攻撃に対して脆弱であることがわかって。

同じリンクをコピーして貼り付け、別のアカウントで開くと。

許可なくても、顧客の詳細を表示して編集することができて。

 

12文字の英数字の順列を総当たり攻撃することは実際には不可能ではありませんが。

非現実的で。

そこで、CustomerIDを列挙するための情報開示のバグを探すことに。

残念ながら、何も見つからなかったので。

XSSのエンドポイントをもう一度テストすることに。

 

搾取:

この時点で、このエンドポイントのXSSが実際に可能であることに気づいて。

フィルタがhtmlタグを自動的に削除するため、テストはせず。

PHPのstrip_tags関数を使用していると思って。

タグを使用できない場合は、タグを使用しないで。

 

顧客情報の変更を保存した後、<input>のvalue属性に保存されるので。

属性をエスケープしようとすると成功して。

 “> escaped?

 

 

現在、次のように解析されて。

 <input name=”…” class=”…” value=””>escaped? “>

 

次に、JavaScriptイベントハンドラを追加して、jsコマンドを挿入すると。

フィルターがあるので可能なすべてのイベントハンドラを削除して。

次に、HTMLタグをイベントハンドラと組み合わせるとどうなるか。

次のようなペイロードを思いついて。

 “ onmo<x>useover=”alert(document[‘cookie’])”>

 

フィルタには、onmouseoverイベントハンドラは表示されませんが。

htmlタグのみが表示されるので、下記のように保存されて。

 “ onmouseover=”alert(document[‘cookie’])”>

 

カーソルを合わせると、JavaScriptが実行されて。

まだ満足していないので、ユーザの操作を必要としないペイロードを入力して。

 “ onf<x>ocus=”alert(document[‘cookie’])” autofocus”>

 

IDORに対して脆弱な同じエンドポイントに保存されたXSSを取得して。

他のユーザのcustomerIDを「推測」することはできないため。

IDORを使用してXSSを使用してそれらをターゲットにして。

 

上記のXSSペイロードを情報として顧客を作成することで。

リンクをコピーしてターゲットに送信できて。

ターゲットがリンクを開くと、ブラウザで任意のJavaScriptを実行できるので。

これは、アカウントの乗っ取りや個人情報の盗用に。

エスカレートする可能性があって。

 

Best regards, (^^ゞ