- Katılım
- 16 Tem 2019
- Konular
- 714
- Mesajlar
- 3,540
- Online süresi
- 6ay 20g
- Reaksiyon Skoru
- 2,107
- Altın Konu
- 34
- Başarım Puanı
- 309
- TM Yaşı
- 6 Yıl 9 Ay 9 Gün
- MmoLira
- 26,224
- DevLira
- 122
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
Güvenlik ve Temizlik: Admin Web Panel & HEADER_CG_TEXT Kaldırma
Exploitlere açık eski yönetim sistemini kaldırarak sunucu güvenliğini artırın.
Exploitlere açık eski yönetim sistemini kaldırarak sunucu güvenliğini artırın.
Nedir ve Neden Kaldırıyoruz?
Bu sistem, Ymir'in çok eski zamanlarda kullandığı, bir web paneli üzerinden sunucuya TCP bağlantısı kurarak komut göndermesini (Event açma, duyuru geçme, shutdown, user sayısı alma vb.) sağlayan bir altyapıdır.
Kaldırma Sebeplerimiz:
Güvenlik Açığı: Sistemin ana paketi olan HEADER_CG_TEXT, bilinen Buffer Overflow açıklarına sahiptir ve sunucunuzda Core düşmesine (çökmesine) sebep olabilir.
İşlevsizlik: Bu sistemi kullanan orijinal web paneli elimizde yoktur.
Temizlik: Gereksiz config tanımları ve paket işleyicileri kod kirliliği yaratmaktadır.
Bu rehber ile bu sistemi ve ilgili güvenlik açığını tamamen kapatıyoruz.
DİKKAT 
İşlemlere başlamadan önce Server Source yedeğinizi alınız!
ADIM 1: Config Temizliği
Dosya: Server\Source\game\config.cpp
İşlem: Aşağıdaki kod bloklarını bulup silin.
Kod:
// Silinecek Değişkenler:
std::vector<std::string> g_stAdminPageIP;
std::string g_stAdminPagePassword = "SHOWMETHEMONEY";
// Silinecek Fonksiyonlar:
static void FN_add_adminpageIP(char* line) { ... }
static void FN_log_adminpage() { ... }
// Silinecek Tokenler (TOKEN bloğu içindekiler):
TOKEN("adminpage_ip") ...
TOKEN("adminpage_ip1") ...
TOKEN("adminpage_ip2") ...
TOKEN("adminpage_ip3") ...
TOKEN("adminpage_password") ...
// Silinecek Çağrı:
FN_log_adminpage();
Dosya: Server\Source\game\config.h
İşlem: Extern tanımlarını silin.
Kod:
extern std::vector<std::string> g_stAdminPageIP;
extern std::string g_stAdminPagePassword;
ADIM 2: DESC (Bağlantı) Temizliği
Dosya: Server\Source\game\desc.cpp
- Sil:
(Initialize içinde)Kod:
m_bAdminMode = false; - Sil:
(ping_event içinde)Kod:
if (desc->IsAdminMode()) { return (ping_event_second_cycle); } - Sil:
veKod:
SetAdminModefonksiyonlarının tamamını silin.Kod:IsAdminMode
Dosya: Server\Source\game\desc.h
İşlem: Aşağıdakileri header dosyasından silin.
Kod:
void SetAdminMode();
bool IsAdminMode();
bool m_bAdminMode;
ADIM 3: Input İşleyicisi (En Önemli Kısım)
Dosya: Server\Source\game\input.cpp
1. İşlem: Yardımcı fonksiyonları silin:
Kod:
bool IsEmptyAdminPage() { ... }
bool IsAdminPage(const char* ip) { ... }
void ClearAdminPages() { ... }
2. İşlem: HEADER_CG_TEXT kontrol bloğunu tamamen silin.
(Not: Bu blok "if (bHeader == HEADER_CG_TEXT)" ile başlar ve "d->Packet(stResult.c_str()..." ile biter. Yaklaşık 200 satırlık dev bir bloktur.)
Kod:
if (bHeader == HEADER_CG_TEXT)
{
// ... İçindeki her şeyi silin ...
return (c_pSep - c_pData) + 1;
}
3. İşlem (KRİTİK DÜZELTME):
Yukarıdaki bloğu sildiğinizde, bir sonraki `else if` bloğu havada kalacaktır. Onu `if`'e çevirmelisiniz.
Bul:
Kod:
else if (bHeader == HEADER_CG_MARK_LOGIN)
Değiştir:
Kod:
if (bHeader == HEADER_CG_MARK_LOGIN)
ADIM 4: Paket Tanımlarının Temizlenmesi
Dosya: Server\Source\game\packet.h
İşlem: Header ve Struct yapısını silin.
Kod:
HEADER_CG_TEXT = 64,
typedef struct command_text
{
BYTE bHeader;
} TPacketCGText;
Dosya: Server\Source\game\packet_info.cpp
İşlem: Paket kaydını silin.
Kod:
Set(HEADER_CG_TEXT, sizeof(TPacketCGText), "Text");
Tüm işlemleri yaptıktan sonra Game Source build almayı unutmayın.
Artık sunucunuz buffer overflow saldırılarına karşı daha güvenli!
İyi forumlar!
Artık sunucunuz buffer overflow saldırılarına karşı daha güvenli!
İyi forumlar!











