Privilege Escalation: Unauthorized Low-Privilege Users Creating Feature Bundles からAPIの脆弱性を学ぶ

ソース:

medium.com

脆弱性API

 

訳:

この重要な脆弱性の調査において、権限の低いユーザーがどのようにして Examtegg (プライベート プログラム) で機能バンドルを作成し、システム セキュリティを回避し、500 ドルの報酬を得ることができるのかをご覧ください。 

 

Examtegg (プライベート プログラムの仮想名) は、企業がアプリケーションをより効果的に管理できるようにするさまざまなサービスと機能を提供するプラットフォームです。
これらの機能の中には、「機能バンドル」と呼ばれる重要な機能があります。
機能バンドルを使用すると、管理者と許可された担当者が特定の機能またはコンポーネントをグループ化できるため、これらの機能へのユーザー アクセスの管理が容易になります。
これは、適切なユーザーがアプリケーション内の適切な機能にアクセスできるようにするための便利なツールです。

 

脆弱性: 機能バンドルの不正作成

ここでのセキュリティの問題は、これらのバンドルを作成できないはずの低い権限を持つユーザーが作成できることです。 これは、権限のないユーザーが許可されるべきではない構成をいじることができ、セキュリティが危険にさらされ、システム全体の安定性が危険にさらされる可能性があることを意味します。 

 

再現する手順:

この問題を再現するには、2 つのアカウントが必要です。
1 つは管理アクセス権があり、もう 1 つは制限付きの低レベルのアクセス許可があります。
脆弱性がどのように再現されるかは次のとおりです。

  1. Frontegg で権限の低いユーザー アカウントから始めます。 これは、オフィスの鍵を持っているなど、アクセスが制限されているものですが、建物全体の鍵はありません。
  2. この低特権ユーザー アカウントにリンクされた認証ベアラー トークンを取得します。 これを、立ち入り禁止のオフィスエリアへの鍵と考えてください。
  3. 今度はそのキーを使用します。 取得した認可ベアラー トークンを使用して、/entitlements/resources/feature-bundles/v1 エンドポイントの POST リクエストを作成します。
  4. そのリクエストは以下のリクエストのようになります:-

 

POST /entitlements/resources/feature-bundles/v1 HTTP/2
Host: api.au.examtegg.com
Content-Length: 103
Authorization: Bearer [Your Authorization Bearer Token]
Content-Type: application/json
Accept: application/json, text/plain, */*

{"name":"test122","assignOnSignup":false,"defaultTimeLimitation":null,"description":"","metadata":"{}"}

 

どうやってその POST リクエストを作成したのか疑問に思われるかもしれません。
最初は管理者アカウントを使用して機能バンドルを作成しました。
このプロセス中に生成されたリクエストをキャプチャし、低レベルのユーザー アカウントからの同じリクエストを巧みに利用しました。
これは、管理者から鍵を借りて、それを使用して施錠されたままになっているはずのドアを開けるのに似ています。
この巧妙な回避策により、重大なセキュリティ上の欠陥が明らかになります。 

 

 5. このリクエストを送信すると、ステータス コード 201 — 作成済みの応答が届き。

 6. 完全なアクセス権を持つ管理者アカウントに切り替えます。
  機能バンドルセクションに移動します。
  そこに、作成したばかりのバンドルが表示されます。

 

なぜ問題なのか:

  • 機能バンドルの不正な作成: この権限を持たないユーザーが機能バンドルを作成できるようになりました。
  • システムのセキュリティ設定が無視されており、それは問題です。
  • 管理者は混乱をクリーンアップする必要があり、それはより多くの仕事です。
  • 承認されていない機能バンドルには安全ではない設定が含まれている可能性があり、それはリスクです。
  • プラットフォームは制御を失い、全体的なセキュリティに影響します。

 

ほなほな。