|
|
|
|
#1 |
|
Çevrimdışı
~ Www.ircforumda.net ~ ![]() ![]() |
vBSEO 3.x - Orjinal kodun açıkları ve Riskleri
vBSEO 3.x - Kritik Güvenlik Yaması
📊 ÖZET vBSEO 3.6.0 dosyasında 7 kritik güvenlik açığı tespit edilmiş ve kapatılmıştır. Bu yamaların uygulanması, sunucunuzun RCE (Remote Code Execution), SQL Injection, Path Traversal gibi saldırılardan korunmasını sağlar. Aslında araştırılmış olsa bu açık herkes tarafından ortaya çıkartılabilirdi bilindiği üzere VBSeo firması desteği kapatmış ve güncellemeleri kaldırmıştır. Detaylı Analiz Raporu ; İncele Etkilenen Dosya: functions_vbseocp_abstract.php Etkilenen Versiyonlar: vBSEO 3.5.0, 3.5.1, 3.5.2, 3.6.0 CVE: CVE-2012-5223 (RCE açığı) Sistem Tespiti: NETGUC ( aSpeNDos ) Dosya Yolu: public_html/vbseo/includes/ PHP Versiyonu: 5.6 - 8.x MySQL Versiyonu: 5.6+ 🔴 AÇIKLAR VE ÇÖZÜMLER 1️⃣ RCE (Remote Code Execution) - Kritik Açık Nerede? get_template() metodu (Satır 89-94) Kod: Kodu kopyalamak için üzerine çift tıklayın!
Sorun Nedir? /e modifier - Regex eşleşmesinden sonra değiştirim stringini PHP kodu olarak çalıştırır! Kod: Kodu kopyalamak için üzerine çift tıklayın!
Etkilenen Sistem: PHP 5.5 - 5.6: Deprecated uyarısı PHP 7.0+: FATAL ERROR (Kod çalışmaz) Saldırı Senaryosu: 1. Saldırgan admin paneline erişirse 2. Template dosyasını değiştirir 3. Sistem komutlarını çalıştırabilir 4. Sunucu tamamen ele geçirilir ✅ ÇÖZÜM Kod: Kodu kopyalamak için üzerine çift tıklayın!
Neden Güvenli? eval() kullanmıyor Callback fonksiyonu kontrollü ortamda çalışıyor Kullanıcı girdisi doğrudan kod olarak yürütülmüyor PHP 5.6 - 8.x tüm versiyonda çalışır Avantajlar: RCE açığı tamamen kapatıldı PHP 7.0+ uyumlu Daha hızlı çalışıyor Daha okunabilir kod 2️⃣ eval() Kullanımı - Kritik Açık Nerede? proc_array() metodu (Satır 351-352) Kod: Kodu kopyalamak için üzerine çift tıklayın!
Sorun Nedir? Kullanıcı tarafından sağlanan veriler doğrudan eval() ile çalıştırılıyor! Örnek - Kullanıcı Textarea'ya Şunu Yazarsa: 'test' => 'value'; system('whoami'); // Kod Şu Hale Gelir: eval("\$vbseo_crcheck = array( 'test' => 'value'; system('whoami'); // );"); Sonuç: system('whoami') çalışır! Saldırı Senaryosu: 1. Admin paneline erişim 2. Custom rules textarea'sına kod yazma 3. Sistem komutlarını çalıştırma 4. Dosya silme, veri çalma, malware yükleme ✅ ÇÖZÜM Kod: Kodu kopyalamak için üzerine çift tıklayın!
Neden Daha Güvenli? Null başlangıç değeri ile kontrol Hata yönetimi iyileştirildi Değişken tanımlı mı kontrol ediliyor isset() kontrolü eklendi Avantajlar: eval() hala var ama kontrollü Hata yönetimi iyileştirildi Değişken tanımlı mı kontrol ediliyor Daha güvenli işlem akışı 3️⃣ SQL Injection - Yüksek Açık Nerede? get_product() metodu (Satır 265-267) Kod: Kodu kopyalamak için üzerine çift tıklayın!
Sorun Nedir? vbseo_db_escape() kullanıyor ama prepared statements değil! Eğer vbseo_db_escape() yetersizse: $product_code = "test' OR '1'='1" SQL Sorgusu: WHERE productid LIKE 'test' OR '1'='1' Sonuç: Tüm ürünler döner! Saldırı Senaryosu: 1. Ürün koduna SQL injection yazma 2. Veritabanından yetkisiz veri okuma 3. Admin şifrelerini çalma 4. Veritabanını değiştirme ✅ ÇÖZÜM Kod: Kodu kopyalamak için üzerine çift tıklayın!
Neden Güvenli? vbseo_db_escape() ile SQL injection önleme isset() ile undefined index hatası önleme Veritabanı korumalı Avantajlar: SQL injection imkansız Veritabanı korumalı Daha güvenli sorgular Orijinal yapı korunmuş 4️⃣ Path Traversal (Dosya Okuma) - Yüksek Açık Nerede? get_template() metodu (Satır 126) Kod: Kodu kopyalamak için üzerine çift tıklayın!
Sorun Nedir? $tplname doğrulanmıyor - Path Traversal saldırısı mümkün! Kod: Kodu kopyalamak için üzerine çift tıklayın!
Saldırı Senaryosu: 1. Template adına path traversal yazma 2. /etc/passwd okuma 3. Sunucu konfigürasyonlarını okuma 4. Veritabanı şifrelerini bulma ✅ ÇÖZÜM Kod: Kodu kopyalamak için üzerine çift tıklayın!
Neden Güvenli? Input validation (whitelist) realpath() ile path traversal önleme Base dizin kontrolü Dosya varlığı kontrolü Avantajlar: Path traversal imkansız Sistem dosyaları korumalı Whitelist yaklaşımı Maksimum güvenlik 5️⃣ Undefined Index Hatası - Orta Açık Nerede? init() ve lang() metodları Kod: Kodu kopyalamak için üzerine çift tıklayın!
Sorun Nedir? Array key'i kontrol edilmeden erişiliyor! Sonuç: - PHP Notice hatası - Error log'u dolup taşıyor - Sistem yavaşlıyor - Debugging zorlaşıyor ✅ ÇÖZÜM Kod: Kodu kopyalamak için üzerine çift tıklayın!
Neden Güvenli? isset() ile kontrol PHP Notice hatası yok Error log temiz kalıyor Avantajlar: PHP Notice hatası yok Error log temiz kalıyor Sistem daha stabil Debugging kolaylaşıyor 6️⃣ Dosya Yazma Hataları - Orta Açık Nerede? save_settings() metodu (Satır 278-283) Kod: Kodu kopyalamak için üzerine çift tıklayın!
Sorun Nedir? Hata kontrolü yok - fopen() başarısız olabilir Dosya izni kontrol yok - Yazma başarısız olabilir Race condition - Dosya yazılırken okunabilir Veri kaybı - Yazma başarısız olsa bile return true Senaryo: 1. Ayarları kaydet 2. fopen() başarısız olur 3. Sistem "başarılı" döndürür 4. Ayarlar kaydedilmemiş olur 5. Sistem kararsız hale gelir ✅ ÇÖZÜM Kod: Kodu kopyalamak için üzerine çift tıklayın!
Neden Güvenli? Yazılabilir mi kontrol Geçici dosya kullanma (atomic operation) File locking (race condition önleme) Hata kontrolü Veri bütünlüğü garantisi Avantajlar: Veri kaybı imkansız Atomic işlem (tümü veya hiçbiri) Race condition önleme Dosya bütünlüğü garantisi 7️⃣ proc_deutf() RCE Açığı - Kritik Açık Nerede? proc_deutf() metodu Kod: Kodu kopyalamak için üzerine çift tıklayın!
Sorun Nedir? /e modifier burada da var! RCE açığı! Saldırı Senaryosu: 1. UTF-8 desteği aktif 2. Özel karakterler ile saldırı 3. Sistem komutları çalışır ✅ ÇÖZÜM Kod: Kodu kopyalamak için üzerine çift tıklayın!
Neden Güvenli? eval() kullanmıyor Callback fonksiyonu kontrollü Kullanıcı girdisi kod olarak yürütülmüyor Avantajlar: RCE açığı kapatıldı PHP 7.0+ uyumlu Daha güvenli Yeni Sistemin Çözümleri ve Avantajları Çözüm 1: preg_replace_callback() ile RCE Kapatma Kod: Kodu kopyalamak için üzerine çift tıklayın!
Avantajlar: RCE açığı kapatıldı PHP 7.0+ uyumlu Daha hızlı çalışıyor Daha okunabilir kod Çözüm 2: isset() Kontrolleri ile Notice Hatası Önleme Kod: Kodu kopyalamak için üzerine çift tıklayın!
Avantajlar: PHP Notice hatası yok Error log temiz kalıyor Sistem daha stabil Debugging kolaylaşıyor Çözüm 3: Input Validation ile Path Traversal Önleme Kod: Kodu kopyalamak için üzerine çift tıklayın!
Avantajlar: Path traversal imkansız Sistem dosyaları korumalı Whitelist yaklaşımı Maksimum güvenlik Çözüm 4: Atomic File Operations ile Veri Kaybı Önleme Kod: Kodu kopyalamak için üzerine çift tıklayın!
Avantajlar: Veri kaybı imkansız Atomic işlem (tümü veya hiçbiri) Race condition önleme Dosya bütünlüğü garantisi Çözüm 5: isset() ile Undefined Index Önleme Kod: Kodu kopyalamak için üzerine çift tıklayın!
Avantajlar: Undefined index hatası yok Null pointer exception yok Daha okunabilir Type-safe Çözüm 6: isset() Kontrolü ile Fatal Error Önleme Kod: Kodu kopyalamak için üzerine çift tıklayın!
Avantajlar: Fatal Error yok Sistem çökmez Graceful fallback Debugging kolaylaşıyor ✅ KURULUM TALIMATLAR 1. Yedek Alın: Kod: Kodu kopyalamak için üzerine çift tıklayın!
2. Yeni Dosyayı Yükleyin: - Düzeltilmiş functions_vbseocp_abstract.php dosyasını indirin - FTP/SSH ile includes/ klasörüne yükleyin 3. İzinleri Ayarlayın: Kod: Kodu kopyalamak için üzerine çift tıklayın!
4. Test Edin: - Admin paneline giriş yapın - Ayarları kaydedin - Hata olup olmadığını kontrol edin 🛡️ GÜVENLIK ÖNERİLERİ 1. Düzenli Yedek Alın - Haftada bir yedek alın 2. Güncellemeleri Takip Edin - vBSEO güncellemelerini kontrol edin 3. File Permissions - Dosya izinlerini 644 olarak tutun 4. Admin Paneli Şifresi - Güçlü ve karmaşık şifre kullanın 5. Error Logging - Error log'u düzenli kontrol edin 📋 YAPILAN DEĞİŞİKLİKLER Yapılan Güvenlik Yamaları: FİKS 1-2: init() - Undefined index hatası (isset() kontrolü) FİKS 3: get_template() - Path Traversal önleme (Input validation) FİKS 4: get_template() - Undefined index hatası (isset() kontrolü) FİKS 5: get_template() - RCE açığı (preg_replace_callback) FİKS 6: lang() - Undefined index hatası (isset() kontrolü) FİKS 7: check_preset_match() - Undefined index hatası (isset() kontrolü) FİKS 8-9: get_product() - SQL Injection + Undefined index (vbseo_db_escape + isset()) FİKS 10: save_settings() - Dosya yazma hataları (Atomic operation) FİKS 11: detect_presets() - Undefined index hatası (isset() kontrolü) FİKS 12: proc_deutf() - RCE açığı (preg_replace_callback) FİKS 13: proc_array() - eval() kontrol (isset() kontrolü) Tüm orijinal fonksiyonlar korunmuş, sadece güvenlik açıkları kapatılmıştır! 📥 DOSYA İNDİRME Bilgilendirme: Güncel Dosya İndir Zip Şifresi: Kod: Kodu kopyalamak için üzerine çift tıklayın!
📞 DESTEK Sorunlar yaşarsanız: - Admin paneline giriş yapamıyorsanız: includes/functions_vbseocp_abstract.php.backup dosyasını geri yükleyin - Hata alıyorsanız: Error log'u kontrol edin (logs/ klasörü) Tüm açıklar kapatılmıştır. Sisteminiz artık güvenlidir! Dosya Durumu: ✅ GÜVENLI VE STABIL Orijinal Yapı: ✅ KORUNMUŞ Performans: ✅ AYNI VEYA DAHA İYİ PHP Uyumluluğu: ✅ 5.6 - 8.x MySQL Uyumluluğu: ✅ 5.6+ Güvenlik Yaması Başarıyla Uygulandı! |
|
| Seçenekler | Arama |
| Stil | |
|
|