IRCdForum.Net  

Ana Sayfa

Geri Git   IRCdForum.Net > Webmaster ve E-Ticaret > Webmaster Forumu > vBulletin Destek

vBulletin Destek IRCdForum.Net üzerinde de profesyonel geliştirmelerle kullanılan yazılım olan vBulletin ile ilgili kaliteli paylaşımlara ulaşabilirsiniz.


vBulletin 3.8 - Adminlere E-posta ve SMTP Ayarlarını Kapatma [Cyb. Sec.] ~ 2026 Premium Paylaşım!

IRCdForum.Net üzerinde de profesyonel geliştirmelerle kullanılan yazılım olan vBulletin ile ilgili kaliteli paylaşımlara ulaşabilirsiniz.


Kullanıcı Etiket Listesi

12Beğeniler

  
 
LinkBack Konu Araçları Görünüm Modları
Eski 03 Ağustos 2026, 20:57   #1
Çevrimiçi
Regex
Çevrimiçi
rgxadmn
Regex Kullanıcısının Avatarı

Varsayılan vBulletin 3.8 - Adminlere E-posta ve SMTP Ayarlarını Kapatma [Cyb. Sec.] ~ 2026 Premium Paylaşım!

Tarih: 3 Ağustos 2026 Pazartesi
Fikir: Dea Dia
Coder: Regex
Dün @Dea Dia'nın forumunun mail sunucusuyla ilgili ayarları düzenler ve bir yandan da bunun üzerine @Dea Dia ile sohbet ederken aklına bir fikir geldi. Dedi ki; forumda admin yetkisi verip vBulletin seçenekler kısmına erişim açtığımız yöneticiler olabiliyor. Bunların e-posta ayarlarına erişmelerine gerek var mı? Hesap çalınabilir, bir şey olabilir vs. bunları kısıtlayabilir misin?

Aynı zamanda siber güvenlik uzmanı olduğumdan bu fikri direkt ilgimi çekti ve anında kulak kesildim; böyle bir şeyi erteleyemezdim. Ben de bugün ilk boşluğumda kodları yazdım ve @Dea Dia'nın forumunda hayata geçirdim. Ancak baktım ki ne zamandır vBulletin 3.8 için diğer webmasterları da düşünen bir paylaşım forumlar üzerinden yapmamışım, yazdığım kodları açıklamalarıyla birlikte paylaşayım dedim. Fikir babası (anası mı demek lazım ki sjsjsjs) @Dea Dia'dan da izin alıp açıyorum bu konuyu. ^^

---

Ön Not: Kodlar vBulletin 3.8.11 için yazılmıştır. Kodları 3.8.4, 3.8.6, 3.8.7 gibi ortamlarda denemedim ancak muhtemelen çalışır. Daha yüksek vBulletin sürümleri için uygun değildir.

vBulletin 3.8'de bir üyeye admin erişimi verdikten sonra adminpermissions kısmından vBulletin Ayarlarını Yönetebilir yetkisi verilen bütün yöneticiler, varsayılan olarak E-posta Ayarları grubunu da görüntüleyebiliyordu. Bugün geliştirdiğim ve aşağıda nasıl uygulanacağını anlattığım düzenleme sayesinde e-posta ayarları kullanıcı ID bazında sınırlandırılacak ve yalnızca userID bazlı muaf kullanıcılar, ayrıca bunlar adminseler ve vBulletin ayarlarına da erişmelerine izin verilmiş iseler, e-posta ayarları kısmını görüntüleyebilecek ve orada işlem yapabilecekler. Burada kısıtlamadan muaf tutulmamış diğer adminler ise;
  • E-posta Ayarlarını seçenekler listesinde göremez
  • Doğrudan tarayıcıya URL girip ayar grubuna erişemez
  • Manipüle edilmiş POST isteği gönderip, SMTP ayarlarını değiştiremez
  • Tekil e-posta ayarlarını düzenleyemez, silemez ve/veya doğrulatamaz
  • Ayar yedeği indirerek SMTP parolasını öğrenemez
  • Ayar XML dosyası yükleyerek kısıtlamayı aşamaz.

Düzenlenecek dosya:
Kod:
/admincp/options.php
0- Her halükarda orijinal dosyanın yedeğini alın

1- Sunucu Taraflı Erişim Kontrolü (Back-End Development);

Bul:

PHP Code:
if (!can_administer('canadminsettings'))
{
print_cp_no_permission();

Altına ekle:

PHP Code:
$ircdforum_email_settings_allowed in_array(intval($vbulletin->userinfo['userid']), array(13));

if (!
$ircdforum_email_settings_allowed)
{
$ircdforum_action = (isset($_REQUEST['do']) AND !is_array($_REQUEST['do'])) ? $_REQUEST['do'] : '';

if (
$vbulletin->GPC['dogroup'] == 'email' OR in_array($ircdforum_action, array('backup''backuprestore''download''files''doimport')))
{
    
print_cp_no_permission();
}

$ircdforum_requested_group '';
if (isset(
$_REQUEST['grouptitle']) AND !is_array($_REQUEST['grouptitle']))
{
    
$ircdforum_requested_group $_REQUEST['grouptitle'];
}
else if (isset(
$_REQUEST['group']['grouptitle']) AND !is_array($_REQUEST['group']['grouptitle']))
{
    
$ircdforum_requested_group $_REQUEST['group']['grouptitle'];
}
else if (
$ircdforum_action == 'killgroup' AND isset($_REQUEST['title']) AND !is_array($_REQUEST['title']))
{
    
$ircdforum_requested_group $_REQUEST['title'];
}

if (
$ircdforum_requested_group == 'email')
{
    
print_cp_no_permission();
}

$ircdforum_requested_varname '';
if (
in_array($ircdforum_action, array('editsetting''removesetting''validate')) AND isset($_REQUEST['varname']) AND !is_array($_REQUEST['varname']))
{
    
$ircdforum_requested_varname $_REQUEST['varname'];
}
else if (
$ircdforum_action == 'killsetting' AND isset($_REQUEST['title']) AND !is_array($_REQUEST['title']))
{
    
$ircdforum_requested_varname $_REQUEST['title'];
}
else if (
in_array($ircdforum_action, array('insertsetting''updatesetting')) AND isset($_REQUEST['varname']) AND !is_array($_REQUEST['varname']))
{
    
$ircdforum_requested_varname $_REQUEST['varname'];
}

if (
$ircdforum_requested_varname != '')
{
    
$ircdforum_email_setting $db->query_first("
        SELECT varname
        FROM " 
TABLE_PREFIX "setting
        WHERE varname = '" 
$db->escape_string($ircdforum_requested_varname) . "'
            AND grouptitle = 'email'
        LIMIT 1
    "
);

    if (!empty(
$ircdforum_email_setting['varname']))
    {
        
print_cp_no_permission();
    }
}

if (
$ircdforum_action == 'dooptions' AND !empty($_POST['setting']) AND is_array($_POST['setting']))
{
    
$ircdforum_setting_names = array();

    foreach (
array_keys($_POST['setting']) AS $ircdforum_setting_name)
    {
        
$ircdforum_setting_names[] = "'" $db->escape_string($ircdforum_setting_name) . "'";
    }

    if (!empty(
$ircdforum_setting_names))
    {
        
$ircdforum_email_setting $db->query_first("
            SELECT varname
            FROM " 
TABLE_PREFIX "setting
            WHERE grouptitle = 'email'
                AND varname IN (" 
implode(','$ircdforum_setting_names) . ")
            LIMIT 1
        "
);

        if (!empty(
$ircdforum_email_setting['varname']))
        {
            
print_cp_no_permission();
        }
    }
}


Bu bölümde whitelist mantığıyla çalışan sunucu taraflı bir erişim katmanı oluşturdum. Zurnanın asıl zırt dediği yer burası.

Eğer söz konusu yöneticinin kullanıcı ID'si array(1, 3) içerisinde tanımlanmamış ise e-posta ayarlarıyla ilişkili kritik işlemler kontrol edilecek ve print_cp_no_permission() üzerinden dışarı atılacak. Buradaki kontrol, yalnızca; options.php?do=options&dogroup=email biçimindeki normal erişimle sınırlı değil. Aşağıdaki işlem türleri de kapsandı;
  • Ayar grubunu doğrudan açma,
  • Ayar grubunu düzenleme veya silme,
  • Tekil e-posta ayarını düzenleme,
  • Tekil ayarı silme,
  • AJAX doğrulama isteği gönderme,
  • Manipüle edilmiş ayar kayıt formu gönderme,
  • Ayar yedeği indirme,
  • Ayar yedeğini geri yükleme,
  • Ayar XML dosyası içe aktarma.

dooptions işleminde POST ile gönderilen ayar adlarını doğrudan güvenilir kabul etmedim. Gönderilen ayar anahtarları; veritabanındaki setting tablosuyla karşılaştırılarak doğrulanıyor. Gönderilen değerlerden herhangi biri, email grubuna aitse kayıt işlemi başlamadan önce kesilecek ve böylece form arayüzü kullanılmadan hazırlanmış özel bir POST isteğiyle SMTP ayarlarının değiştirilmesi engellenecek.

Ayrıca ayar yedekleme ve geri yükleme ekranlarını da kısıtlamaya dahil ettim. Bunun nedeni; SMTP kullanıcı adı ve parolası gibi değerlerin vBulletin ayar yedeği içerisinde yer alabiliyor oluşudur. !is_array() kontrolleri ise normalde metin olması gereken parametrelerin dizi biçiminde gönderilmesiyle kontrol akışının manipüle edilmesini önlüyor.

Kendi forumunuz için uygulayacak olduğunuzda erişime yetkili kullanıcıları nasıl değiştirirsiniz?

PHP Code:
array(13
kısmında userID'leri virgülle ayırarak ekleyin. Burada 1 (Dea Dia) ve 3 (ben) varız mesela. Siz burayı 3, 5, 7, 10 gibi üç beş yedi on yaparsanız sadece kullanıcı ID'si 3, 5, 7 ve 10 olan kullanıcılar (aynı zamanda adminseler ve vBulletin ayarlarına erişebilir izinleri açılmışsa), forumun e-posta ayarlarını görüntüleyebilir/değiştirebilir. Yani şöyle:

PHP Code:
array(35710
---

2- E-posta Ayarlarının Seçenekler Listesinden Kaldırılması (Front-End Development);

Dosyanın aşağıdaki başlıkla başlayan bölümüne gelin:

PHP Code:
// ###################### Start modify options ####################### 
(Bu bölüm içerisinde aşağıdaki satır iki defa geçer.)

Bul:

PHP Code:
$settingscache["$setting[grouptitle]"]["$setting[varname]"] = $setting
Bu satırın her iki geçtiği yerde de üstüne ekle:

PHP Code:
if (!$ircdforum_email_settings_allowed AND $setting['grouptitle'] == 'email')
{
continue;

Aynı kodların her iki yere de yapılmasının gereklilik nedeni; vBulletin'in ayar menüsünü iki ayrı görünüm modu için oluşturması. İlk döngü genişletilmiş ayar listesini, ikinci döngü ise varsayılan ayar grubu listesini hazırlar.

Yetkisiz bir admin için $setting['grouptitle'] == 'email' koşulu sağlandığında continue çalışır, böylece döngü doğrudan bir sonraki ayar kaydına geçer ve e-posta ayarları;
  • settingscache dizisine,
  • grouptitlecache dizisine,
  • Varsayılan ayar grubu listesine,
  • Genişletilmiş “Tüm Ayarları Göster” listesine
hiç eklenmez.

Filtreyi ayar verileri önbelleğe alınmadan önce uyguladığım için burada yalnızca bir HTML öğesini gizlemek söz konusu değildir. Zaten öyle bir yaklaşım tembelliğe kaçmak olurdu; ben işimi sağlama aldım.

---

Çalışma Mantığı;

Düzenleme iki ayrı güvenlik katmanından oluşuyor. Birinci katman sunucu taraflı yetki kontrolü, yani yukarıda da belirttiğim gibi işin Back-End kısmı. Yetkisiz admin, URL'i biliyor olsa ya da manuel bir HTTP isteği göndermeye çalışsa dahi; işlem gerçekleştiremez. İkinci katman ise arayüz filtresi, yani işin Front-End kısmı. Bunda ise yetkisiz adminlere e-posta ayarları AdminCP'de hiç gösterilmez.

---

Kritik Güvenlik Notu: Bu düzenleme, e-posta ayarlarını options.php seviyesinde korumaya almak için kodlanmıştır. Burada userID bazlı kısıtlanan yöneticiler için aşağıdaki yetkiler bulunuyorsa veritabanındaki SMTP değerlerine farklı yollarla erişmeleri mümkün olabilir;
  • Plugin ve ürün yönetme yetkisi,
  • SQL sorgusu çalıştırma yetkisi (bunu özel olarak config.php'den tanımlamak gerekir),
  • Sunucu veya dosya sistemi erişimi.

Bu nedenle yalnızca AdminCP'nin gerekli bölümlerini kullanacak yöneticilere eklenti çalıştırma, PHP kodu ekleme veya doğrudan SQL sorgusu yürütme yetkisi verilmemelidir. Çünkü normal bir forum admininin; developer ya da teknik admin değilse buralarla bir işi yoktur. Olmamalıdır. O nedenle yeniden önemle vurgulamak isterim ki; admin eklediğiniz üyelerin bodozlama paneldeki bütün yetki alanlarını açmayın, gerek yok.

---

Umarım işinize yarar; uzun süredir -buna ben de dahil- vBulletin 3 için yeni bir şeyler kodlansa dahi halka açık şekilde paylaşıma sunulmuyordu. Bu yönde istekler gelirse, vaktim elverdikçe yazdığım kodlardan paylaşabilecek olduklarımı paylaşmaya devam edebilirim.
@rgxadmn ~ Vibe coding değil, harbi coding! Rekabet tarzım değil, çok gerekirse fark atarım..


__________________
 
Eski 03 Ağustos 2026, 21:00   #2
Çevrimdışı
Dea Dia
Çevrimdışı
Dea Dia Kullanıcısının Avatarı

Varsayılan Yanıt: vBulletin 3.8 - Adminlere E-posta ve SMTP Ayarlarını Kapatma [Cyb. Sec.] ~ 2026 Premium Payla

İçeriği görmek için buraya tıklayarak kaydolunuz.
Emeğine sağlık böyle daha güzel ve güvenlikli oldu.
__________________
 
Eski 03 Ağustos 2026, 21:03   #3
Çevrimdışı
Eftamintokoftiden
Çevrimdışı
la vida no es justa
Eftamintokoftiden Kullanıcısının Avatarı

Varsayılan Yanıt: vBulletin 3.8 - Adminlere E-posta ve SMTP Ayarlarını Kapatma [Cyb. Sec.] ~ 2026 Premium Payla

İçeriği görmek için buraya tıklayarak kaydolunuz.
@Regex böyle uzun yaz yaz da üstte ya da altta kısa özet diye bir iki cümlelik bir şey yaz ki herkes öğrensin sonuçta herkes ben ve @Dea Dia değil
__________________
NO RESPECT F**K PEACE.
 
Eski 03 Ağustos 2026, 21:06   #4
Çevrimiçi
Regex
Çevrimiçi
rgxadmn
Regex Kullanıcısının Avatarı

Varsayılan Yanıt: vBulletin 3.8 - Adminlere E-posta ve SMTP Ayarlarını Kapatma [Cyb. Sec.] ~ 2026 Premium Payla

İçeriği görmek için buraya tıklayarak kaydolunuz.
Alıntı:
İlk Gönderen Eftamintokoftiden Mesajı Göster
@Regex böyle uzun yaz yaz da üstte ya da altta kısa özet diye bir iki cümlelik bir şey yaz ki herkes öğrensin sonuçta herkes ben ve @Dea Dia değil
Aga bu yazı değil ki kısa olsun, kod bu kod. Buna üşenen de öğrenmesin, uygulamasın, ne yaptığını anlamadan yapacak adam yüzünden SQL'ler patlıyor zaten. Anlamadan uygulamak isteyenler direkt bul/değiştir/altına ekle/üstüne ekle adımlarını uygulayabilir bu arada.
__________________
 
Eski 03 Ağustos 2026, 21:08   #5
Çevrimdışı
Dea Dia
Çevrimdışı
Dea Dia Kullanıcısının Avatarı

Varsayılan Yanıt: vBulletin 3.8 - Adminlere E-posta ve SMTP Ayarlarını Kapatma [Cyb. Sec.] ~ 2026 Premium Payla

İçeriği görmek için buraya tıklayarak kaydolunuz.
Alıntı:
İlk Gönderen Regex Mesajı Göster
Aga bu yazı değil ki kısa olsun, kod bu kod. Buna üşenen de öğrenmesin, uygulamasın, ne yaptığını anlamadan yapacak adam yüzünden SQL'ler patlıyor zaten. Anlamadan uygulamak isteyenler direkt bul/değiştir/altına ekle/üstüne ekle adımlarını uygulayabilir bu arada.
Ben bi’ ara hepsini okumadan 1-2 şey ekleyip bozmuştum. Sen yaptığın için, şimdi başını ve sonunu tek okudum.
__________________
 
Eski 03 Ağustos 2026, 22:08   #6
Çevrimiçi
Beatrice
Çevrimiçi
Beatrice Kullanıcısının Avatarı

Varsayılan Yanıt: vBulletin 3.8 - Adminlere E-posta ve SMTP Ayarlarını Kapatma [Cyb. Sec.] ~ 2026 Premium Payla

İçeriği görmek için buraya tıklayarak kaydolunuz.
Eline sağlık @[Only registered and activated users can see links. ] hayırlı olsun @[Only registered and activated users can see links. ] : )
 
Eski 03 Ağustos 2026, 22:11   #7
Çevrimdışı
Dea Dia
Çevrimdışı
Dea Dia Kullanıcısının Avatarı

Varsayılan Yanıt: vBulletin 3.8 - Adminlere E-posta ve SMTP Ayarlarını Kapatma [Cyb. Sec.] ~ 2026 Premium Payla

İçeriği görmek için buraya tıklayarak kaydolunuz.
Alıntı:
İlk Gönderen Beatrice Mesajı Göster
Eline sağlık @[Only registered and activated users can see links. ] hayırlı olsun @[Only registered and activated users can see links. ] : )
Teşekkür ederim. Hepimize hayırlı olsun.
__________________
 
Eski 14 Ağustos 2026, 12:41   #8
Çevrimiçi
eQuaL
Çevrimiçi
eQuaL Kullanıcısının Avatarı

Varsayılan Yanıt: vBulletin 3.8 - Adminlere E-posta ve SMTP Ayarlarını Kapatma [Cyb. Sec.] ~ 2026 Premium Payla

İçeriği görmek için buraya tıklayarak kaydolunuz.
Bunu deneme fikrim var da forumu patlatmak istemiyorum.
__________________



 
Eski 14 Ağustos 2026, 12:52   #9
Çevrimiçi
Regex
Çevrimiçi
rgxadmn
Regex Kullanıcısının Avatarı

Varsayılan Yanıt: vBulletin 3.8 - Adminlere E-posta ve SMTP Ayarlarını Kapatma [Cyb. Sec.] ~ 2026 Premium Payla

İçeriği görmek için buraya tıklayarak kaydolunuz.
Alıntı:
İlk Gönderen eQuaL Mesajı Göster
Bunu deneme fikrim var da forumu patlatmak istemiyorum.
options.php dosyasının yedeğini alıp deneyebilirsin bence. En olmadı orijinal dosyayı geri yüklersin. Zaten bu kodlarda SQL işlemi olmadığı için forum patlamaz. Ama kendine haksızlık etme, sen zaten HTML'le ve WordPress ile falan da uğraşmışlığı olan adamsın. Konuda da bul, altına/üstüne ekle formatında gayet açıklayıcı verdim kodları. Halledersin.
__________________
 
Eski 14 Ağustos 2026, 12:55   #10
Çevrimiçi
eQuaL
Çevrimiçi
eQuaL Kullanıcısının Avatarı

Varsayılan Yanıt: vBulletin 3.8 - Adminlere E-posta ve SMTP Ayarlarını Kapatma [Cyb. Sec.] ~ 2026 Premium Payla

İçeriği görmek için buraya tıklayarak kaydolunuz.
Alıntı:
İlk Gönderen Regex Mesajı Göster
options.php dosyasının yedeğini alıp deneyebilirsin bence. En olmadı orijinal dosyayı geri yüklersin. Zaten bu kodlarda SQL işlemi olmadığı için forum patlamaz. Ama kendine haksızlık etme, sen zaten HTML'le ve WordPress ile falan da uğraşmışlığı olan adamsın. Konuda da bul, altına/üstüne ekle formatında gayet açıklayıcı verdim kodları. Halledersin.
Mental olarak biraz iyi olduğumda deneyeceğim.
__________________



 
  

Yer İmleri


Şu anda bu konuyu görüntüleyen etkin kullanıcılar: 1 (0 üye ve 1 konuk)
 

Yayınlama Kuralları


Forum saati GMT +3 olarak ayarlanmıştır. Şu an saat: 06:55

Forum
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
IRCdForum.Net, lisanslı vBulletin® kullanmaktadır.
Yasal Uyarı
IRCdForum.Net; 5651 sayılı kanuna göre yer sağlayıcı bir forum sitesidir. Dolayısıyla forumdaki içeriklerden ilgili içeriği paylaşan üyeler sorumludur. Hukuka aykırı içerik bildirimleri için İLETİŞİM linkinden bildirim gönderebilirsiniz.


güzel hosting

IRCdForum.Net; altyapı gücünü Güzel Hosting'den alır.