BungeeCordとMinecraft:セキュリティの問題と危険性

バンジーの概要



BungeeCordは、ゲームプロジェクトが複数のMinecraftサーバーを組み合わせて、プレーヤーをサーバー間ですばやく切り替えることができるプロキシサーバーです。



この記事では、カーネルに関する私の経験を共有し、カーネルを使用するサーバーのセキュリティ問題について説明し、そのようなサーバーのハッキングを防ぐのに役立つ可能性のあるいくつかの簡単なヒントも示します。



BungeeCordが最も一般的に使用される場所を簡単に説明します。



  • いくつかのゲームモードを備えたサーバー(ミニゲームを備えたサーバーを含む)
  • 負荷が高く、オンライン配布が必要なサーバー
  • ボット攻撃に対するBotFilterベースの保護を使用するサーバー(このようなサーバーの特徴的な機能は、ログイン時の「ドロップチェック」またはキャプチャです)


画像



このようなサーバーの最も一般的な脆弱性:



  • プロキシサーバーコマンドへの制御されていないアクセス
  • 承認サーバーのバイパス
  • プレイヤーデータのなりすまし
  • ステージングサーバーモジュールの脆弱性


使い方



BungeeCordによって実行されるプロジェクトのほとんどは、次のサーバーチェーンを表しています(世界のさまざまな地域のマシン上でも、さまざまなポートを持つ少なくとも1つのIPに配置できます)。



プロキシ



最初の段階-実際、これはプレーヤーが接続されているサーバー自体です。彼はスポーンポイントやゲームワールドを持っていません-彼の仕事は接続を次のステージにリダイレクトすることです。



ここではすべてが単純に見えるでしょうが、そうではありません。



主な魅力であり、同時にこの段階での問題は、リダイレクト自体です。サーバーは、プレーヤーを別のIPにリダイレクトするだけでなく、中間サーバーの役割を果たします。

簡単に言うと、プレーヤーが送信するすべてのコマンド、すべての同期パケット、チャット内の各メッセージが最初にここで処理されます。



これはどのように私たちを脅かしますか?



架空の例で説明しましょう。私たちの開発者であるDrygokは、勇敢に仕事をしており、サーバーに対する権限を最大に近づけています。彼は自分のアカウントを独自の認証システムで完全に保護しました。複雑なパスワード、2要素認証、さらにはプロバイダーの特定の範囲のIPアドレスへのバインドでさえ、安心してサーバーを離れますが、10分後にすべてのプレーヤーが「飛び出し」、サーバーが停止します。誰かが彼らに代わって/ endコマンド実行したからです。



どうした?簡単です。未知の人物が開発者のニックネームでゲームに参加し、サーバーのログイン要求を無視して、プロキシサーバー自体によって処理されるコマンドを入力しました。つまり、権限のないユーザーでも阻止することはできません。



画像



防ぐ方法は?



この状況を防ぐ最も簡単な方法は、すべての内部カーネルコマンドを無効にし、この段階ですべての権限をリセットすることです。開発者にとっても。特に開発者にとって。



承認サーバー



チェーンの第2段階は、プレーヤーが登録してログインするサーバーです。



ここで、ユーザーは幾何学的な足の下にある固い立方体の地面を最初に感じます。



ほとんどの場合、この段階のサーバーは次のようになります。



  • 空の世界の無限のスペースにある小さな土地。プレイヤーは承認が成功する(またはそうでない)前に立っています。
  • 基本的なプラグイン:

    SkinsRestorer - , , -

    ( , )

    , ( )

    , ( AI , , .)

    ,

    AutoSaveWorld

  • 権利の管理の欠如
  • カーネルの脆弱性またはゲーム自体に対する保護システムの欠如


画像



この段階での主な問題は、プレイヤーの緊急の権利です。許可されたプレーヤーだけがそれらを使用できるため、誰かがそれらを構成することはめったにありません。プレーヤーが許可されると、すぐに次のステージにリダイレクトされます。



これはどのように私たちを脅かしますか?



場合によっては、プレーヤーは承認後に別のサーバーへのリダイレクトを防ぐことができます。多くの場合、ゲームサーバーへの高速再接続は、そのサーバーのカーネルまたはプラグインによって妨げられます。そのため、承認が成功した直後にプレーヤーが再接続すると、次の段階のサーバーが接続を拒否する可能性があり、承認されたプレーヤーは承認サーバーに残ります。



さらに、昇格した権利を持つプレイヤーは、私たちの国にインストールされているプラ​​グインのリスト(/プラグイン)を静かに学び、次に、彼が持っている権利でそれらの機能を学び、彼のダークビジネスを開始します。



私が個人的に何度も会った2つの例を挙げます。



最初の例。ASWへのアクセス。



AutoSaveWorld非常に便利であると同時に、どのサーバーにとっても危険なプラグインです。私の再話におけるその能力、簡単に:



  • 自動的に世界を救う
  • 自動ワールドバックアップ
  • 指定された設定に従って世界を掃除する
  • ゲームサーバーを再起動せずにプラグインを接続、再起動、切断する(/ asw pmanager)
  • 生成されたプロセスの開始、停止、および制御(/ aswプロセス)


このリストの最後の項目に関心があります。



いいえ、これは間違いではありません。膨大な数のサーバーには、適切なアクセスで任意のプロセスを開始できるプラグインが実際にあります。一部のサーバーは、この段階ですべてのプレーヤーに提供します。



この場合、いくつかの/asw process start QQHABR rm -rf / (このコマンドを実行しないでください!)問題が最も少なくなります。「クラッカー」が端末へのアクセスで何ができるかを言う価値はないと思います。



例2。無害なSkinsRestorer。



SkinsRestorer膨大な数のサーバーで使用される非常に人気のあるプラグインです。これは主に、プロキシスキンの使用により欠落しているスキンを復元するために使用されますが、独自のスキンをインストールすることもできます。この機会こそが潜在的な脆弱性です。



/ skinコマンドを使用すると、他のプレーヤーのスキンにニックネームをロードできるだけでなく、画像アドレス(/ skin URL)を指定して独自のスキンを設定することもできます。このチームの危険性は、最初はプレーヤーがアクセスできると想定されているという事実にあります(ASWの場合のように、権限が正しく構成されていない場合だけではありません)。



これはどのように使用できますか?指定されたアドレスへの画像のアップロードは、通常のGETリクエストです。サーバー自体から実行された要求。



さらに使用するための多くのオプションがあります-閉じたAPIの呼び出し(たとえば、寄付の発行)から始まり、特定のIPアドレスにアクセスが提供され、通常のフラッドで終わります。



画像



防ぐ方法は?



これを防ぐには、プレーヤーの権限を制限し(どのサーバーでも行うことをお勧めします)、承認コマンドと登録コマンドを除くすべての可能なコマンドをブロックし、URLによる独自のスキンのインストールを禁止します(すべてのサーバーでこれを行うことをお勧めします)



ハブ



ハブ-プレイヤーがゲームサーバーとモードを選択するために行く共通のスペース



画像



ほとんどの場合、ハブはメインのゲームサーバーと同様にサーバーごとに一意ですが、セキュリティの問題のいくつかは同じです。



直接接続



このサーバーに直接(そのIPに)接続することにより、プレーヤーは承認を含む前の段階をバイパスできます



これはどのように私たちを脅かしますか?



承認段階をスキップすると、プレーヤーは接続にニックネームが使用されたユーザーのすべての権利を使用できます



防ぐ方法は?



ほとんどのサーバーコアには、BungeeCordを使用せずに接続をブロックする設定が組み込まれています。たとえば、spigot.ymlのSpigot:



settings:
bungeecord: true


この設定を使用する場合は、必ず次の段落をお読みください。



プレイヤーデータのなりすまし



サーバー(Spigotを含む)への直接接続をブロックしているほとんどすべてのサーバーコアには、独自のBungeeCordサーバーを介したプレーヤーデータの置換に関連するアクティブな脆弱性があります。プレーヤーは、プロキシサーバーをメインのゲームサーバーへのリダイレクト接続に配置します。ゲームサーバーは、BungeeCordが接続に使用されていると判断し、そこから送信されたすべてのデータを信頼します(この場合、プロキシIPはサーバーIPと一致するかどうかチェックされません)



これはどのように私たちを脅かしますか?



ほとんどの場合、次のように置き換えられます:プレーヤーのIP(セッションをバイパスして他の誰かのアカウントにアクセスする)とUUID(一部のプラグインとサーバー自体がプレーヤーを識別し、権利制御をバイパスして他のプレーヤーの権利にアクセスするために使用)。



BungeeCordを使用する場合は、自分で修正する必要があります。修正しないと、攻撃者がプレーヤーアカウントだけでなく、管理者の機能にもアクセスできる可能性があります。



防ぐ方法は?



これを防ぐ最も簡単な方法は、サードパーティ接続用の不要なポートを閉じ、=>プロキシサーバーをバイパスしてサーバーに接続する可能性があることです。



外部接続のために、メインのBungeeCordサーバーを除くすべてのサーバーのすべてのポートを閉じることをお勧めします。



ゲームサーバー



独自のモードを持つゲームサーバー。上記のすべてが関連しています。



All Articles