İçeriğe atla

Yüzde 20 indirim. Yeni Müşterilere Virüs Temizlemeye Özel İndirim Bitiş: 29 Eki 2026 23:59.

Kampanyanın bitmesine 7 saat 9 dakika kaldı.Hemen al
256-bit SSL · bilgileriniz şifrelenir
Blog'a dön
YAZILIM GÜVENLİĞİ

PHP ve Laravel Backdoor & Web Shell Temizleme Rehberi (Manuel Analiz)

Dijital Kalkan Güvenlik Ekibi9 dk okuma
PHP ve Laravel Backdoor & Web Shell Temizleme Rehberi

Özel yazılım PHP sistemleri ve Laravel gibi modern MVC çatıları, standart içerik yönetim sistemlerine (WordPress, Joomla vb.) kıyasla çekirdek yapısı gereği daha güvenli kabul edilir. Ancak kontrolsüz dosya yükleme (unrestricted file upload) formları, güvenli olmayan üçüncü taraf Composer paketleri, zayıf veritabanı sorguları veya sunucu düzeyindeki yetkilendirme hataları özel yazılımları da siber korsanların açık hedefi haline getirir.

Özel geliştirilen bir web uygulamasına zararlı kod bulaştığında en büyük tehlike; standart otomatik virüs temizleyicilerin uygulamanın iş mantığını (business logic) bilmediği için framework dosyalarını bozması veya kritik verileri silmesidir. Bu kapsamlı rehberde, PHP ve Laravel uygulamalarında gizlenen web shell ve backdoor (arka kapı) zararlılarının framework mimarisini bozmadan nasıl tespit edilip manuel olarak temizleneceğini ele alıyoruz.

Özel PHP ve Framework Sistemlerine Virüs Nasıl Bulaşır?

Saldırganlar özel yazılımlarda genellikle yazılımcının gözden kaçırdığı güvenlik zafiyetlerinden faydalanır:

  • Savunmasız Upload Formları: Profil fotoğrafı veya evrak yükleme alanında MIME type ve uzantı doğrulamasının yalnızca JavaScript ile yapılması; saldırganın doğrudan .php veya çift uzantılı (örneğin shell.php.jpg) dosya yüklemesine imkan tanır.
  • Laravel Storage & Public Symlink İstismarı: storage/app/public dizinine yüklenen bir dosyanın doğrudan webden çalıştırılabilir olması.
  • Eski Composer Paketleri: Bilinen uzaktan kod çalıştırma (RCE) zaafiyeti barındıran kütüphanelerin güncellenmemesi.
  • Güvensiz eval() ve unserialize() Kullanımı: Kullanıcıdan gelen kontrolsüz girdilerin dinamik olarak çalıştırılması.

Web Shell ve Backdoor Çeşitleri (eval, gzinflate, base64)

Bir PHP projesine sızan saldırganın ilk amacı, sisteme kalıcı erişim sağlamak için bir Web Shell yerleştirmektir (b374k, WSO, c99, Alfa Shell vb.). Ancak günümüz saldırganları doğrudan açık metin shell bırakmaz; kodları çok katmanlı olarak şifreler (obfuscation):

  • eval(gzinflate(base64_decode('...'))) gibi klasik şifreleme kalıpları.
  • Dinamik fonksiyon çağrıları: $a = 'assert'; $a($_POST['cmd']); gibi statik tarayıcılardan kaçan yöntemler.
  • PHP çekirdek fonksiyonlarına benzeyen sahte fonksiyon adları veya meşru Laravel Controller dosyalarının içine tek satır olarak gizlenen arka kapılar.

Laravel mimarisinde yalnızca public/ dizini dışarıya açık olmalıdır. Ancak php artisan storage:link komutu kullanıldığında, depolama alanına yüklenen bir betik doğrudan çalıştırılabilir hale gelebilir.

Saldırganlar storage/framework/views/ (Blade derleme önbelleği) klasörüne zararlı PHP kodları enjekte edebilir veya public/index.php dosyasının başına sessiz dinleyiciler ekleyebilir. Manuel temizlik sürecinde Blade önbellekleri temizlenmeli (php artisan view:clear), vendor dizini doğrulanmalı ve depolama dizininde PHP çalıştırma yetkisi .htaccess veya Nginx yapılandırmasıyla tamamen engellenmelidir.

Sunucu Kalıcılığı: Gizli Cron Job'lar ve Systemd Servisleri

Dosyaları temizlemenize rağmen virüs birkaç saat sonra kendini yeniden üretiyorsa, saldırgan sunucu seviyesinde kalıcılık (persistence) sağlamıştır:

  • Linux Crontab Kontrolü: crontab -l ve /etc/cron* dizinleri incelenerek her saat başı dışarıdan zararlı dosya çeken scriptler temizlenmelidir.
  • Geçici Dizinler: /tmp ve /dev/shm gibi yazma izni olan dizinlerde çalışan gizli ELF veya PHP süreçleri (process) sonlandırılmalıdır.
  • .env Dosyası İhlali: Saldırganların veritabanı şifrelerini, AWS anahtarlarını ve mail API bilgilerini ele geçirip geçirmediği denetlenmeli, ihlal şüphesinde tüm anahtarlar derhal yenilenmelidir.

Veritabanı İçi Zararlı Stored Procedure ve JS Enjeksiyonları

Saldırganlar sadece dosyalara değil, SQL enjeksiyonu yoluyla veritabanındaki tablolara da sızabilir. Metin alanlarına eklenen zararlı JavaScript kodları (Stored XSS), siteye giren kullanıcıları sahte sayfalara yönlendirir. Veritabanında regex tabanlı aramalar yapılarak script etiketleri ve zararlı iframe kodları temizlenmelidir.

PHP disable_functions ve WAF ile Kalıcı Zırh

Temizlik sonrasında PHP düzeyinde tehlikeli sistem fonksiyonları kapatılmalıdır. php.ini dosyasında aşağıdaki direktif zorunlu kılınmalıdır:

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source

Özel yazılımlarınızın mimarisini koruyarak derinlemesine analiz yaptırmak için PHP ve özel yazılım virüs temizleme servisimizden faydalanabilir; genel web güvenliği süreçlerimiz hakkında bilgi almak için web sitesi virüs temizleme sayfamızı inceleyebilirsiniz.

Sıkça Sorulan Sorular

Otomatik antivirüs tarayıcıları PHP shell'lerini bulabilir mi?

Standart antivirüsler yalnızca bilinen imza veritabanındaki (signature) dosyaları bulabilir. Özel olarak şifrelenmiş veya meşru bir fonksiyonun içerisine gömülmüş tek satırlık backdoor kodlarını tespit edemez; bu nedenle uzman gözüyle manuel denetim zorunludur.

Temizlik sırasında özel yazılımımın kod yapısı veya veritabanı bozulur mu?

Hayır. Dijital Kalkan ekibi olarak framework (Laravel, CodeIgniter vb.) mimarisine hakim mühendislerle çalışırız. Otomatik toplu silme yerine her zararlı satır cerrahi titizlikle ayıklanır; yazılımınızın çalışması asla aksamaz.

.env dosyasındaki API anahtarlarım çalınmış olabilir mi?

Eğer sunucuda bir web shell çalıştıysa, dosya okuma yetkisiyle .env dosyasındaki veritabanı şifreleri, mail SMTP ve API anahtarları ele geçirilmiş olabilir. Temizlik sonrası bu anahtarların tamamının yenilenmesini zorunlu kılıyoruz.

Temizlik süreci ne kadar sürer?

Sisteminiz ilk 2 saat içinde incelenir, acil karantina uygulanır ve 24 saat içinde tüm arka kapılar kapatılarak temiz bir şekilde teslim edilir.