Autor del tema
#0

Forumunuz ne kadar popülerse, script kiddie'lerin ve botların o kadar hedefi olur.
En yaygın saldırı yöntemi, bir eklenti veya upload açığı bulup içeriye "Shell" (zararlı PHP dosyası) atmak ve sunucuda komut çalıştırmaktır.
1. PHP Fonksiyonlarını Kısıtlamak
Saldırgan bir şekilde içeriye .php dosyası atsa bile, sunucu üzerinde komut çalıştıramamalıdır.
Shell dosyaları genelde Linux komutlarını çağırmak ister.
Biz bu çağrıları php.ini seviyesinde engelleyeceğiz.
Yapılması Gereken:Sunucundaki php.ini dosyasını aç ve disable_functions satırını bul. Aşağıdaki listeyi oraya ekle:
DİKKAT

Bu işlemden sonra PHP servisini yeniden başlatmalısın.
Shell dosyaları genelde Linux komutlarını çağırmak ister.
Biz bu çağrıları php.ini seviyesinde engelleyeceğiz.
Yapılması Gereken:Sunucundaki php.ini dosyasını aç ve disable_functions satırını bul. Aşağıdaki listeyi oraya ekle:
CODE
1disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_sourceDİKKAT

Bu işlemden sonra PHP servisini yeniden başlatmalısın.
Not: XenForo'nun resim işleme (ImageMagick) veya bazı yedekleme eklentileriexecfonksiyonuna ihtiyaç duyabilir. Eğer hata alırsan sadeceexeci listeden çıkarabilirsin, ancakshell_execvesystemkesinlikle kapalı kalmalıdır.
2. Dizin Kilitleme (En Kritik Hamle)
XenForo'da kullanıcıların dosya yüklediği iki ana klasör vardır: /data ve /internal_data. Saldırganlar shell dosyasını avatar veya eklenti dosyası gibi gösterip buraya yüklemeye çalışır.
Eğer bu klasörlerde PHP çalışmasını engellersen, saldırgan dosyayı yüklese bile dosyayı açtığında kodlar çalışmaz, sadece ekrana yazı olarak gelir.
Nginx Kullanıyorsan (Server Block içine ekle):
CODE
1234location ~ ^/(data|internal_data)/.*\.php$ {
deny all;
return 403;
}Apache / LiteSpeed Kullanıyorsan (.htaccess dosyasına ekle):/data ve /internal_data klasörlerinin içindeki .htaccess dosyalarına şu kodu ekle:
CODE
1234<Files *.php>
Order Deny,Allow
Deny from all
</Files>Bu ayar, shell yiyen sitelerin %90'ını kurtaran altın kuraldır.
3. Dosya Yazma İzinleri (CHMOD)
Sunucunda her dosya yazılabilir olmamalıdır. Özellikle
config.php dosyası sadece okunabilir olmalıdır.- Klasörler: 755 (Sadece sahibi yazabilir)
- Dosyalar: 644 (Sadece sahibi yazabilir)
- Config Dosyası:
src/config.phpdosyasını yapılandırdıktan sonra izinlerini 444 yapın. Böylece PHP üzerinden bile bu dosya değiştirilemez.
4. Admin Paneli (ACP) Güvenliği
Bir saldırgan shell atamasa bile Admin hesabını ele geçirirse "Şablonlar" (Templates) üzerinden zararlı kod ekleyebilir.
- Config ile Editörü Kapatın: src/config.php dosyasına şu kodu ekleyerek Admin panelinden şablon ve dosya düzenlemeyi tamamen kapatın. Bu, admin şifreniz çalınsa bile saldırganın tema içine shell kodu gömmesini engeller.
CODE1
$config['designer']['enabled'] = false;