
Bug Bountyについてはすでに多くのことが語られていますが、企業にとってこのようなプログラムが必要であることは明らかです。 独自のプログラムが存在する間、Mail.ru Mailは250,000ドル以上を支払い、平均支払い額は379ドルでした。これについてはもう少し詳しく説明しました。 そして今日、最近のZeroNights情報セキュリティ会議の例を使用して、特殊なイベントを通じてバグや脆弱性の検索にハッカーを参加させる方法についてお話します。
今年、ZeroNightsカンファレンスがサンクトペテルブルクのA2グリーンコンサートクラブで開催されました。 モスクワからの移動にもかかわらず、この会議では2日間で1000人以上の参加者が集まりました。 会議中、多くのクールな専門家の報告が聞かれました。 筋金入りのハードウェアが必要な場合は、NUClearエクスプローション、グラフィックモードからゴッドモード、GPU仮想化の脆弱性の発見、Marvell Avastar Wi-Fiの調査:ゼロ知識から無線ゼロタッチRCEまでをご覧ください。 今年はWebに関する興味深いレポートも数多くありました。スライドだけでなくWebVillageも見ることができます。 個人的には、Ilya NesterovとSergey Shekyanからの報告は私にとって重要でした。 ボットと実際のユーザーを区別することは、ますます難しくなっています。 レポートの詳細については、 こちらをご覧ください 。
私たちのタスク
次のタスクを設定します。
- コミュニティでBug Bountyブランドとプログラムを宣伝する。
- タスクにうまく対処する優秀なスペシャリストを募集します。
アイデア
このようなプロジェクトで最も難しい課題は、まず参加者を引き付ける興味深いタスクを開発し、次に実際のスキルをテストできるようにすることです。
今年のブースは、空圧郵便を備えたオフィスビルでした。 タスクの本質:航空便の責任者は会計士に手紙を送り、ハッカーの仕事はパスを変更し、特別なダンパーを使用して手紙を傍受することです。
スタンドは次のようになりました。

メール自体の代わりに、テニスボールを使用しました。テニスボールは、必要に応じて、デフォルトでは「アカウンティング」で上から下に移動しました。 Arduino + RPi3を使用して制御されたゲートをアクティブにし、「メール」を他のドライブにリダイレクトする必要がありました。
アクションスキーム:
- ジョブのWi-Fiネットワークに接続しています。
- ダンパーを制御するArduinoに接続されているRaspberry Piネットワークにあります。
- RPiはWebサーバーを回転させています。 2つのタスクを完了する必要があります-脆弱性を悪用し、最後にダンパーをアクティブにするためのボタンを提供し、「メール」のリダイレクトを許可しました

ボールは空気圧の手紙を象徴しています:

研究者の報告から得た課題のアイデア。
タスク
最初のタスクでは、参加者はRPi3ホストを見つけ、Apache Webサーバーの典型的な設定の脆弱性、つまりすべての着信HTTP要求を表示する/ server-statusページを見つける必要がありました。 とりわけ、このページは、GETパラメーターに秘密の値を含むリクエストを受信しました。これにより、最初のレベルを渡すことができました。 この割り当てでは、訪問者はバグバウンティプログラムに参加するための100ドルのプロモーションコードを受け取りました。
解決策
Apache構成の脆弱性は、dirbusterのような通常のツールによって検索されます。サーバーステータス行は、関連するすべての辞書にあります。 さらに、スクリプトやプログラムがなくても、通常の電話からでもタスクを解決できるように、いくつかのヒントを残しました。
2番目のタスクを完了するには、既知の監視ページの内容を慎重に検討する必要がありました。 クライアントアプリケーションコードでは、インターフェイスから呼び出されなかったが、Mongodbの「ブラインド」NoSQLインジェクションという脆弱性を含んだ隠しメソッドを見つける必要がありました。
解決策
ブラインドインジェクションを自動化するには、2つの問題を解決する必要があります。
1つの要求で1ビットの情報を受信できるスクリプトを作成します。 出力では、目的の論理式を要求に挿入し、サーバーの応答でそれが真であるか偽であるかを理解できる必要があります。
データベースからビットごとに関心のある情報を取得する方法を見つけるために(たとえば、secret = 'some_secret'フィールドの値を知りたい場合は、正規表現を使用できます。最初に、最初の文字secret〜 '^ a'、secret〜 '^ b' ... secret〜を見つけます'^ s' ...その後、2番目のシークレット〜 '^ sa'、シークレット〜 '^ sb' ...同様に、シークレットトークン全体を取得します)。
これは唯一の実装ではなく、最も効率的な実装でもありません; sqlmapコードでより良いオプションを見ることができます。
1つの要求で1ビットの情報を受信できるスクリプトを作成します。 出力では、目的の論理式を要求に挿入し、サーバーの応答でそれが真であるか偽であるかを理解できる必要があります。
データベースからビットごとに関心のある情報を取得する方法を見つけるために(たとえば、secret = 'some_secret'フィールドの値を知りたい場合は、正規表現を使用できます。最初に、最初の文字secret〜 '^ a'、secret〜 '^ b' ... secret〜を見つけます'^ s' ...その後、2番目のシークレット〜 '^ sa'、シークレット〜 '^ sb' ...同様に、シークレットトークン全体を取得します)。
これは唯一の実装ではなく、最も効率的な実装でもありません; sqlmapコードでより良いオプションを見ることができます。
主な難点は、非定型のテクノロジースタックでした。MeteorJSは、通常のHTTPリクエストとレスポンスの代わりに、WebsocketとMongoDBとPubsubを積極的に使用し、既存のツールの使用を許可せず、参加者が攻撃を自動化できるようにする必要がありました。 多くの参加者は、MeteorJSプラットフォーム自体の機能の脆弱性を探し、ジョブコードと間違えました。 また、一部の参加者には、Websocketを介したリクエストの自動化が困難でした。

参加者は、このコンテストの賞品としてMail.ru Bug Hunterスウェットシャツを受け取りました。
結果
カンファレンスのわずか2日間で、200人を超える人々がコンテストに参加しました。 100人の参加者が最初のタスクを完了し、45人が2番目のタスクを完了しました。
もちろん、タスクを正常に完了したので、すぐにインタビューを行いました。 100ドルで生成されたカードには遅延効果がありますが、それらのいくつかはすでに有効化されており、H1に良いバグがあります。 ハッカーが新しいバグを探し、システムを改善し、セキュリティを改善するのを助けてくれます。 小さなカード-素晴らしい結果。 そして百ドルは百ドルです。
