BungeeCord dan Minecraft: Masalah Keamanan dan Bahaya

Bungee secara singkat



BungeeCord adalah server proxy yang memungkinkan proyek game menggabungkan beberapa server Minecraft dengan kemampuan untuk mengganti pemain dengan cepat.



Pada artikel ini saya akan berbagi pengalaman saya dengan kernel, berbicara tentang masalah keamanan pada server yang menggunakannya, dan juga memberikan beberapa tip sederhana yang dapat membantu mencegah peretasan pada server semacam itu.



Secara singkat di mana BungeeCord paling sering digunakan:



  • Server dengan beberapa mode permainan (termasuk server dengan mini-game)
  • Server dengan beban tinggi dan kebutuhan untuk distribusi online
  • Server yang menggunakan perlindungan berbasis BotFilter terhadap serangan bot (fitur karakteristik dari server tersebut adalah "drop check" atau captcha saat login)


gambar



Kerentanan paling umum dari server tersebut:



  • Akses tidak terkontrol ke perintah server proxy
  • Bypass server otorisasi
  • Data pemain spoofing
  • Kerentanan dalam menetapkan modul server


Bagaimana itu bekerja



Sebagian besar proyek yang dikelola oleh BungeeCord adalah rangkaian server berikut (yang dapat ditempatkan di setidaknya satu IP dengan port berbeda, bahkan pada mesin di berbagai belahan dunia).



Proksi



Tahap pertama - sebenarnya, ini adalah server itu sendiri, tempat para pemain terhubung. Dia tidak memiliki spawn point atau dunia game - tugasnya adalah mengarahkan yang terhubung ke tahap berikutnya.



Tampaknya semuanya sederhana di sini - tetapi tidak.



Daya tarik utama, dan pada saat yang sama masalah pada tahap ini, adalah pengalihan itu sendiri - server tidak hanya mengalihkan pemain ke IP lain, tetapi juga memainkan peran sebagai server perantara.

Sederhananya, semua perintah yang dikirim pemain, semua paket sinkronisasi, setiap pesan dalam obrolan diproses di sini terlebih dahulu.



Bagaimana ini mengancam kita?



Izinkan saya menjelaskan dengan contoh hipotesis: Pengembang kami, Drygok, dengan gagah berani melakukan tugasnya, memiliki hak atas server mendekati maksimum. Dia dengan sempurna melindungi akunnya dengan sistem otorisasinya sendiri - kata sandi yang rumit, otentikasi dua faktor, dan bahkan mengikat ke kisaran alamat IP tertentu dari penyedia, setelah itu dia meninggalkan server dengan tenang, tetapi setelah 10 menit semua pemain "terbang keluar" dan server berhenti karena seseorang menjalankan perintah / end atas namanya.



Apa yang terjadi? Sederhana saja: Orang yang tidak dikenal memasuki permainan dengan nama panggilan pengembang kami dan, mengabaikan permintaan server untuk masuk, memasukkan perintah yang diproses oleh server Proxy itu sendiri, yang berarti itu tidak dapat dicegah bahkan untuk pengguna yang tidak sah.



gambar



Bagaimana mencegahnya?



Cara termudah untuk mencegah situasi seperti itu adalah dengan menonaktifkan semua perintah kernel internal dan mengatur ulang hak apa pun pada tahap ini. Bahkan untuk seorang pengembang. Khusus untuk seorang developer.



Server otorisasi



Tahap kedua dalam rantai adalah server tempat pemain mendaftar dan masuk.



Di sinilah pengguna pertama-tama akan merasakan tanah kubus padat di bawah kaki geometris mereka.



Seringkali, server pada tahap ini terlihat seperti ini:



  • Sepotong kecil tanah di ruang tak berujung dari dunia kosong, tempat pemain berdiri sebelum otorisasi yang berhasil (atau tidak demikian)
  • Plugin dasar:

    SkinsRestorer - , , -

    ( , )

    , ( )

    , ( AI , , .)

    ,

    AutoSaveWorld

  • Kurangnya kendali atas hak
  • Kurangnya sistem perlindungan terhadap kerentanan kernel atau game itu sendiri


gambar



Masalah utama pada tahap ini adalah hak darurat bagi para pemain. Jarang ada orang yang mengkonfigurasinya, karena hanya pemain resmi yang dapat menggunakannya, dan ketika pemain tersebut diotorisasi, mereka segera mengalihkan ke tahap berikutnya.



Bagaimana ini mengancam kita?



Dalam beberapa kasus, pemain dapat mencegah pengalihan ke server lain setelah otorisasi: Seringkali, koneksi ulang yang cepat ke server game dicegah oleh kernel atau plugin dari server tersebut. Jadi, ketika pemain terhubung kembali segera setelah otorisasi berhasil, server pada tahap berikutnya dapat menolak koneksi dan pemain resmi akan tetap berada di server otorisasi.



Lebih lanjut, pemain yang memiliki hak tinggi akan dengan tenang mengetahui daftar plugin yang diinstal (/ plugins), dan kemudian, mempelajari kemampuannya dengan hak yang dimilikinya, dia memulai bisnis gelapnya.



Saya akan memberikan dua contoh yang secara pribadi saya temui lebih dari satu kali.



Contoh pertama. Akses ke ASW.



AutoSaveWorldMerupakan plugin yang sangat berguna dan sekaligus berbahaya untuk server mana pun. Kemampuannya dalam saya menceritakan kembali, secara singkat:



  • Selamatkan dunia secara otomatis
  • Pencadangan dunia otomatis
  • Membersihkan dunia sesuai dengan pengaturan yang ditentukan
  • Menghubungkan, memulai ulang, dan memutuskan plugin tanpa memulai ulang server game (/ asw pmanager)
  • Memulai, menghentikan, dan mengontrol proses yang muncul (/ proses asw)


Kami tertarik dengan item terakhir dari daftar ini.



Tidak, ini bukan kesalahan. Pada sejumlah besar server, memang ada plugin yang memungkinkan Anda memulai proses apa pun dengan akses yang sesuai, yang disediakan beberapa server untuk semua pemain pada tahap ini.



Dalam hal ini, beberapa /asw process start QQHABR rm -rf / (JANGAN LAKUKAN PERINTAH INI!) Akan menjadi masalah terkecil. Saya pikir tidak ada gunanya mengatakan apa yang bisa dilakukan "cracker" dengan akses ke terminal.



Contoh dua. SkinsRestorer yang tidak berbahaya.



SkinsRestorerMerupakan plugin yang sangat populer yang digunakan pada sejumlah besar server. Ini terutama digunakan untuk memulihkan kulit yang hilang karena penggunaan kulit proxy, tetapi juga memiliki kemampuan untuk menginstal sendiri. Peluang ini adalah potensi kerentanan.



Dengan menggunakan perintah / skin, Anda tidak hanya dapat memuat skin pemain lain dengan nama panggilannya, tetapi juga mengaturnya sendiri dengan menentukan alamat gambar (/ skin URL). Bahaya tim ini terletak pada kenyataan bahwa akses awalnya ditujukan untuk para pemain (dan tidak hanya jika hak dikonfigurasi dengan tidak benar, seperti dalam kasus ASW).



Bagaimana ini bisa digunakan? Mengunggah gambar ke alamat yang ditentukan adalah permintaan GET biasa. Permintaan yang dibuat dari server itu sendiri.



Ada banyak opsi untuk penggunaan lebih lanjut - dimulai dengan panggilan ke API tertutup (misalnya, mengeluarkan donasi), akses yang disediakan untuk alamat IP tertentu, dan diakhiri dengan banjir reguler.



gambar



Bagaimana mencegahnya?



Anda dapat mencegah ini dengan membatasi hak pemain (yang disarankan untuk dilakukan di server mana pun), memblokir semua perintah yang mungkin kecuali untuk otorisasi dan perintah pendaftaran, dan juga melarang instalasi kulit Anda sendiri dengan URL (saya sarankan melakukan ini di semua server)



Pusat



Hub - ruang bersama di mana pemain pergi untuk memilih server dan mode game



gambar



Paling sering, Hub, seperti server game utama, unik untuk setiap server, tetapi beberapa masalah keamanan sama untuk mereka.



Koneksi langsung



Dengan menghubungkan ke server ini secara langsung (ke IP-nya), pemain dapat melewati tahap sebelumnya, termasuk otorisasi



Bagaimana ini mengancam kita?



Setelah melewati tahap otorisasi, pemain dapat menggunakan semua hak pengguna yang nama panggilannya digunakan untuk terhubung



Bagaimana mencegahnya?



Sebagian besar inti server memiliki pengaturan bawaan untuk memblokir koneksi tanpa menggunakan BungeeCord. Misalnya Spigot di spigot.yml:



settings:
bungeecord: true


Jika Anda menggunakan pengaturan ini, pastikan untuk membaca paragraf berikutnya!



Data pemain spoofing



Hampir semua inti server yang memblokir koneksi langsung ke server (termasuk Spigot) memiliki kerentanan aktif terkait dengan substitusi data pemain melalui server BungeeCord mereka sendiri: Pemain menempatkan server proxy-nya dengan koneksi pengalihan ke server game utama kami, jadi intinya server game menentukan bahwa BungeeCord digunakan untuk menghubungkan dan mempercayai semua data yang dikirim darinya (IP proxy tidak diperiksa untuk kecocokan dengan IP server dalam kasus ini)



Bagaimana ini mengancam kita?



Paling sering, berikut ini diganti dengan cara ini: IP pemain (melewati sesi dan mendapatkan akses ke akun orang lain) dan UUID (digunakan oleh beberapa plugin dan server itu sendiri untuk mengidentifikasi pemain, melewati kontrol hak dan mengakses hak pemain lain).



Saat menggunakan BungeeCord, Anda perlu memperbaikinya sendiri, jika tidak maka penyerang dapat memperoleh akses tidak hanya ke akun pemain, tetapi juga kemampuan administrator!



Bagaimana mencegahnya?



Cara termudah untuk mencegahnya adalah dengan menutup port yang tidak diperlukan untuk koneksi pihak ketiga, dan => kemungkinan koneksi ke server melewati server proxy.



Disarankan untuk menutup untuk koneksi eksternal semua port dari semua server kecuali server BungeeCord utama!



Server game



Server game dengan mode mereka sendiri. Semua hal di atas relevan.



All Articles