Hello there, ('ω')ノ
アクセス制御の破綻でチーム全体の乗っ取りと権限のエスカレーションが発生するを。
脆弱性:
アクセス制御の破損、権限昇格
記事:
今回のターゲットは、チームに member と admin の 2 つの権限を提供し。
チームはクレジットカードなどの機密データをいくつか持っていて。
機能をテストした後、ユーザを招待する機能に行きって。
新しいメンバーをチームに招待できるのは管理者だけで。
ご覧のとおり、リクエストには Cookies と Authorization ヘッダを。
含む Graphql へのリクエストがあり。
およびリクエストパラメータ:
1.チーム ID を保持するアカウント ID
2.inviteeEmailAddress:招待されるユーザの電子メール アドレス
3.inviterId:このチームの管理者の ID
4.roleName:2 つの値の間で保持でき( member または admin )
最初に試したのは、Cookie を削除してからauthorizationヘッダを削除することで。
サーバーが 200 OK で応答し、要求が正常に処理されたことに気付いて。
下記は、認証要素または認可要素を含まない変更されたリクエストで。
メールへの招待状を無事に受け取り。
これで、リクエストがパラメータのみに依存することがわかり。
2 つの攻撃シナリオがあり。
1.権限昇格
チームのメンバーとして、チーム ID を確認できて。
したがって、招待者ID(管理者ID)を取得するだけで済んで。
しかし、どうすればこのユーザIDを取得できるか。
まず、チーム ページのメンバー セクションで管理者のメールを見つけて。
そして、彼とどのようにやり取りするかを考え始め。
どのユーザにも公開プロファイルがないことに注意して。
掘り下げた後、被害者のユーザを自分のチーム(Hacker Team)に。
招待することにして。
被害者のアカウントに自分のチーム (Hacker Team) に参加するための。
招待状を送信した後に。
彼のメンバーシップが彼の確認のために保留中であることに気付き。
Burp Suiteの履歴を調べた後、チーム データを取得するリクエストを見つけたので。
このリクエストをもう一度繰り返したところ、被害者 ID が見つかり。
被害者からのやり取りなしで被害者のIDを取得したことに注意して。
次に、必要なパラメータを指定して招待リクエストを再度送信すると。
最後に、自分の電子メールへの招待を受け取り、それを受け入れた後に。
管理者になり、彼からのクリックなしで被害者チームを引き継ぐことができて。
Best regards, (^^ゞ