だから私はすぐにそれをクラックしようとし始めました。

それで、このサイトは何ですか? ドキュメントによると、Tracker Issue(Buganizer Systemとも呼ばれます)は、製品開発中にバグや新機能のリクエストを追跡するためにGoogleが使用するツールです。 特定のプロジェクトでGoogleチームと協力する必要がある一般ユーザーおよびパートナーユーザーが使用するために、Googleの外部で利用できます。
言い換えれば、誰かがGoogle製品に問題があると、バグ追跡システムに行きます。 理にかなっていますよね? 外部ユーザーとして、私たちは氷山の一角に過ぎません。事前承認された小さなカテゴリのセットと、脆弱性レポートなどのGoogle従業員による外部アカウントの追加に関連する問題です。 しかし、どのくらいの情報が表面下にあるのでしょうか?

最新の公開されたバグに割り当てられたIDを観察することにより、このツールが内部からどれだけ使用されるかを簡単に推定できます。 営業時間中、マウンテンビューでは1時間あたり約2000〜3000の問題が発生します。 このシステムからのデータ漏洩は大きな価値があるようです。 それをハックしましょう!
この翻訳は、 ビデオ監視サービス 、 仮想携帯電話事業者向けのアプリケーションを専門的に開発し、 CおよびC ++プログラム(IPTVプレーヤー)を開発するEDISON Softwareによってサポートされました。
脆弱性#1:Google従業員アカウントの取得
バグトラッカーを発見したときに最初に気づいたのは、次のような特別なアドレスにメールを送信してディスカッションに参加する機会でした。
buganizer-system + componentID + issueID @ google.com
(ここで、componentIDはカテゴリを表す番号であり、issueIDは応答しているディスカッションの一意の識別子です)
それは、ハッカーがそのようなメールシステムを使用して組織のチャットシステムに侵入することを可能にしたチケットトリックと呼ばれる最近の発見を思い出しました。
これが@ google.comのメールアドレスであることを考えると、それを使用してGoogle Slackにサインアップしようとしました。 私が見たログイン確認ページは非常に有望に見えました:

悲しいかな、Slackからの手紙は1つもありません。
次に考えられることは、 google .comドメインでGoogleアカウントを取得することです。これにより、Buganizerで追加の権限が与えられることを期待しています。 Googleの外部からこのようなアカウントを登録することはできませんでした:

ただし、このフィルターの回避策が見つかりました。他の偽のメールアドレスで登録したが、メールで受信したリンクをクリックしてもアカウントを確認できない場合、メールアドレスを変更せずに変更できました制限。 この方法を使用して
buganizer-system+123123+67111111@google.com
新しいGoogleアカウントのメール
buganizer-system+123123+67111111@google.com
を
buganizer-system+123123+67111111@google.com
に変更し
buganizer-system+123123+67111111@google.com
。
すぐに、対応する問題のページにメッセージの形式で確認メールが届きました:

いいね! 確認リンクをクリックし、トラッカーの問題にログインして...

企業のログインページにリダイレクトされました。 いいえ、Googleの認証情報はそこで受け入れられませんでした。 残念。
ただし、このアカウントは、旅行する機能(おそらく無料ですか?)を含む、インターネット上の他の場所で多くの追加の利点を与えてくれました。そのため、セキュリティ問題は悪意のあるユーザーに多くの扉を開きました。
合計: 11時間 | 報酬: $ 3,133.7 | 優先度: P1
脆弱性2:内部チケットの通知を受け取る
ユーザーインターフェイスに精通したときに注目を集めたバグトラッカーのもう1つの機能は、ディスカッションをマークする機能です。 ディスカッションマークは、議論されている問題に関心があり、誰かがコメントを追加したときに電子メール通知を受け取りたいことを示します。

この機能で気付いた興味深いことは、アクセスできないディスカッションにマークを付けようとしたときにエラーが発生しなかったことです。 このエンドポイントではアクセス制御ルールが適用されなかったため、2番目のアカウントにログインし、メインアカウントから脆弱性メッセージにフラグを立てて、リクエストのバグIDを置き換えました。 それから私はこのメッセージを見ました、それはアクションが成功したことを意味します:
1人がこの問題を指摘しました。これは、Googleの未解決の脆弱性を簡単に探ることができるということですか? この問題に関するコメントをすぐに投稿して、2番目のアカウントに通知が送信されるかどうかを確認しました。

しかし、再び、単一のメッセージは現れませんでした。
私が本当に覚えていない何らかの理由で、私は別のテストを実施することにしました。 そのため、最近のバグIDを取得し、データベース内の最新のバグIDと一致する数千のIDを推定しました。 次に、それらすべてにマークを付けました。
数分以内に、私の受信トレイは次のようになりました。

Inboxを開いたときの最初の考えは「ジャックポット」でした。
しかし、さらに検討すると、これらの議論には特に興味深いものはありませんでした。 どうやら、私は人々が異なる言語でフレーズの意味を伝えるための最良の方法を議論した翻訳に関連した議論を傍受することができただけでした。
重大度レベルを上げる方法を見つけることを期待して、見つかった脆弱性に関するメッセージを送信せずに、数時間待つことにしました。 最終的に、Googleのセキュリティチームは、考えられるピボットの方法とオプションを探すことにおそらく興味があることに気づいたので、詳細を送信しました。
合計: 5時間 | 報酬: 5000ドル | 優先度: P0
脆弱性3:ゲームオーバー
外部ユーザーとしてTracker Issueにアクセスすると、その機能のほとんどが非表示になり、非常に限られた権限しか与えられません。 Googleの従業員ができることをすべて見たい場合は、JavaScriptファイルでAPIエンドポイントを見つけることができます。 これらの機能の一部は完全に無効になっており、他の機能はインターフェイスに単純に隠れています。
この限定バージョンのシステムを開発する際、問題に興味を失ったり、それに関する情報を含む電子メールを受信したくない場合に備えて、誰かがメソッドのCCのリストから自分自身を削除する可能性を残してくれました。 これは、次のようにPOST要求を送信することで実現できます。
POST /action/issues/bulk_edit HTTP/1.1 { "issueIds":[ 67111111, 67111112 ], "actions":[ { "fieldName":"ccs", "value":"test@example.com", "actionType":"REMOVE" } ] }
しかし、ここでいくつかの欠陥に気付きました。これは大きな問題につながる可能性があります。
- 不正なアクセス制御 :このアクションを実行する前に、現在のユーザーが
issueIds
に示された問題に実際にアクセスできることを明示的に確認することはありませんでした。 - サイレント障害 :現在CCリストにない電子メールアドレスを指定すると、エンドポイントはメッセージが正常に削除されたことを示すメッセージを返します。
- 問題の詳細な説明は回答にあります 。アクション中にエラーがなかった場合、システムの別の部分はユーザーが適切なアクセス権を持っていると判断しました。 したがって、このバグIDに関するすべての詳細は、HTTP応答の本文で返されます。
これで、データベース内の各問題の詳細を表示して、上記のクエリの
issueIds
を置き換えることができます。 ビンゴ!
数個の連続したIDのみを調べてから、無関係なアカウントから自分自身を攻撃して、この問題の重大度を確認しました。
はい、脆弱性レポートの詳細とBuganizerに投稿された他のすべてを見ることができました。
さらに悪いことに、1つのリクエストで複数のチケットに関するデータを引き出すことができたので、すべての内部アクティビティをリアルタイムで監視しても、おそらく速度制限は発生しませんでした。
問題の詳細をすぐにGoogleに送信すると、1時間後にセキュリティチームが破損したエンドポイントを切断しました。 印象的な応答時間!
合計: 1時間 | 報酬: 7500ドル | 優先度: P0
最初に情報漏えいを探し始めたとき、それは他のすべてのエラーに関する情報を明らかにするため、Googleバグの聖杯であることを提案しました(たとえば、HackerOne はそのようなものに対して少なくとも10,000ドルを支払います)。
しかし、これを発見して、すべての危険な脆弱性が1時間以内に中和されるため、影響が最小限に抑えられることにすぐに気付きました。
受け取った報酬に非常に満足しており、Googleの他の製品のバグを探すつもりです。
翻訳:ヴャチェスラフ・ブカトフ