Hello there, ('ω')ノ
IDORを使用したCSRF-致命的なコンボを。
脆弱性:
CSRF
IDOR
記事:
https://shahjerry33.medium.com/csrf-with-idor-a-deadly-combo-203e93967702
概要 :
今回は、スコープ内に非常に多くのドメインがあったので。
それらのいくつかをテストすることを考えて。
ドメインの1つで。
この脆弱性であるクロスサイトリクエストフォージェリを見つけて。
これを安全でない直接オブジェクト参照と組み合わせると。
誰のアカウントも削除できて。
そのドメインでさまざまな脆弱性を検索していましたが。
自分で登録できるアカウントには、2つの異なるタイプがあることがわかって。
1.オープンソースアカウント
2.トライアルアカウント
トライアルアカウントでは、29日間のトライアルを取得し。
キャンセルすることもできるので、最初にInsecure Direct Object Reference攻撃を。
試すことを考えましたが、うまくいかず。
IDORの助けを借りて、CSRFを進めると成功して。
トライアルアカウントで登録した場合、「エンタープライズキャンセル」の。
オプションがありましたが、このオプションをクリックすると。
アカウントが自動的に削除されて。
リクエストには、2つのパラメータがあって。
googleAnalyticsId=<Value>&mktToken=<Value>
プライベートブラウザで別のアカウントのリクエストをキャプチャしたとき。
たとえば値が渡されていないパラメータしかなくて。
(googleAnalyticsId=&mktToken=)なので、CSRF攻撃に対して。
脆弱である可能性があると思いましたが。
GETリクエストにはアカウントのユーザ名が含まれていたので。
CSRFリクエストを作成することを考えることに。
GET /userName1/account/cancelTrial/?&googleAnalyticsId=&mktToken=
そこで、ユーザ名を変更してCSRFリクエストを作成することを考えることに。
GET /userName2/account/cancelTrial/?&googleAnalyticsId=&mktToken=
しかし、まだ何かが残っていたので。
リファラであるリファラヘッダをチェックすることに。
https://example.com/userName1/account/account
そこで、referrerヘッダをRefererに変更すると。
CSRF攻撃では、攻撃は成功しました。
https://example.com/userName2/account/account
CSRFとは、クロスサイトリクエストフォージェリで。
攻撃者がユーザに意図しないアクションを実行させることを。
可能にするWebセキュリティの脆弱性で。
これにより、攻撃者は異なるWebサイトが相互に干渉するのを防ぐように。
設計された同一生成元ポリシーを部分的に回避できて。
IDORとは、安全でない直接オブジェクト参照で、アプリケーションが。
ユーザ提供の入力を使用してオブジェクトに直接アクセスするときに。
発生するアクセス制御の脆弱性の一種で。
この脆弱性をどのように見つけたかというと。
1.2つの異なるブラウザ(通常とプライベート)から。
https://example.comにアクセスして。
2. 次に、両方のブラウザでトライアルアカウントを作成して。
3.リンクを確認してダッシュボードに移動して。
4.次に、2番目のアカウント(2番目のブラウザ)から。
https://example.com/<userName2>/account /
のアカウントのリンクにアクセスして。
ここで、エンタープライズ(試用版)アカウントのキャンセルの。
オプションを見つけて。
アカウント1(defendingera:被害者)
アカウント2(pentesterworld:攻撃者)
アカウントの削除
5.次に、ボタンをクリックし、Burp Suiteを使用して。
リクエストをキャプチャして。
下記が、cancelTrial/Deletionリクエストで。
ここで、googleAnalyticsId=&mktToken=の。
パラメータ値を削除したことがわかって。
6.次に、ユーザ名をGETリクエストURLおよびリファラヘッダで変更して。
pentesterworld(攻撃者のアカウント)⇨ defendingera(被害者のアカウント)
7.次に、defendingera(被害者のアカウント)に変更したリクエストで。
CSRF PoCを生成し、.htmlとして保存して。
PoC-(概念実証)
8.それを実行し、最初のブラウザアカウントでページをリロードすると。
アカウントが削除されて。
PoCの実行
アカウントが削除されて。
ここで、ターゲットアカウントの電子メールIDは下記で。
sovovem334@yektara.com(Temp Mail)
脆弱性をよりよく理解するために。
2つの異なるブラウザ(FirefoxとFirefox Private)で開いて。
両方のアカウント(account1とaccount2)のリクエストを比較して。
Burp Suiteの「Comparer」モジュールを使用してリクエストを比較して。
注:ここでは、pentesterworldが攻撃者のアカウントであり。
defendingeraが被害者のアカウントで。
緩和 :
適切なCSRFトークンをリクエストに追加し、サーバ側だけでなく。
クライアント側でも検証する必要があって。
Best regards, (^^ゞ