Php2shell Nedir? PHP Shell Saldırıları ve Güvenlik Rehberi
Php2shell nedir, PHP tabanlı web uygulamalarında nasıl çalışır? Shell yükleme teknikleri, tespiti ve sunucu güvenliği adımlarını kapsamlı rehberimizde keşfedin.
İçindekiler
Php2shell, web sunucularındaki yazılım zafiyetlerinden yararlanarak komut satırı erişimi sağlayan ve PHP dilinde yazılmış zararlı bir shell betiğidir. Saldırganlar, sunucuda yetkisiz komut çalıştırmak, dosya dizinlerini değiştirmek ve veritabanı erişimi elde etmek amacıyla PHP shell kodlarını hedef sisteme enjekte ederler.
Php2shell Nedir ve Çalışma Prensibi Nasıldır?
Web uygulama güvenliği dünyasında sıkça karşılaşılan zararlı yazılımlardan biri olan Php2shell, arka kapı (backdoor) işlevi gören özel bir kod bloğudur. Temel olarak sunucuya yüklendiğinde, web tarayıcısı üzerinden uzak komut satırı arabirimi sunar. Bu sayede saldırgan, doğrudan sunucu işletim sistemiyle etkileşime geçebilir.
Zararlı Yazılımın Sunucuya Sızma Yolları
Php2shell ve benzeri shell betikleri, sistemlere genellikle kötü yapılandırılmış web uygulamaları veya güncellenmemiş yazılımlar üzerinden sızar. En yaygın sızma vektörleri şunlardır:
- Güvensiz Dosya Yükleme (Unrestricted File Upload): Kullanıcıların profil fotoğrafı veya belge yüklemesine izin veren formlarda MIME türü ve uzantı kontrollerinin yetersiz olması.
- LFI (Local File Inclusion) ve RFI (Remote File Inclusion): PHP uygulama kodlarındaki dinamik dosya çağırma hatalarından yararlanarak sunucuya zararlı dosya dahil edilmesi.
- Zayıf CMS Eklentileri: WordPress, Joomla veya Drupal gibi içerik yönetim sistemlerinde kullanılan güvensiz eklenti ve temalar.
- SQL Injection (SQLi): Veritabanı sorgularındaki açıklardan yararlanarak sunucuya doğrudan zararlı betik yazılması (INTO OUTFILE yöntemleri).
Uzman İpucu: Dosya yükleme fonksiyonlarında yalnızca dosya uzantısını kontrol etmek yeterli değildir. Saldırganlar
.php.jpegveya.phtmlgibi çift uzantı (double extension) veya null byte teknikleriyle bu denetimleri kolayca aşabilirler.

Php2shell ve PHP Shell Saldırı Törleri
Saldırganların sunucuya yetkisiz erişim sağlarken kullandığı shell mekanizmaları farklı teknik mimarilere sahiptir. Php2shell, işlevselliğine göre farklı metodolojiler sunar.
1. Bind Shell Mekanizması
Bind Shell mimarisinde, hedef sunucu üzerinde belirli bir ağ portu dinlemeye alınır. Saldırgan doğrudan bu porta bağlanarak sunucuda komut satırı yetkisi elde eder. Ancak modern güvenlik duvarları (Firewall) gelen bağlantıları kısıtladığı için bu yöntem günümüzde daha az etkilidir.
2. Reverse Shell (Ters Bağlantı) Mekanizması
Php2shell türevlerinin en sık kullandığı yöntemdir. Bu senaryoda zararlı betik, hedef sunucudan saldırganın kendi makinesine doğru bir dış bağlantı başlatır. Sunucudan dışarıya giden trafiğin varsayılan olarak açık olması, güvenlik duvarlarının bu saldırıyı fark etmesini zorlaştırır.
3. Web Shell Arabirimleri
Web shell betikleri, HTTP/HTTPS protokolleri üzerinden doğrudan web tarayıcısı ile çalışır. Saldırgan herhangi bir ek bağlantı noktası açmadan, tıpkı bir web sayfasını ziyaret eder gibi komut çalıştırabilir, dosya yükleyebilir veya veritabanını manipüle edebilir.
Php2shell Saldırısı Nasıl Tespit Edilir?
Sunucunuza bir shell yüklendiğinde, sistemde belirgin performans düşüşleri ve alışılmadık davranışlar ortaya çıkar. Erken tespit, veri sızıntılarını ve sunucunun kopyalanmasını engellemek için kritik önem taşır.
Sunucu Günlüklerinin (Logs) İncelenmesi
Anormal HTTP istekleri, tespitteki en büyük yardımcınızdır. Web sunucusu erişim loglarında (Access Logs) aşağıdaki durumları kontrol etmelisiniz:
- Şüpheli dizinlerde (örneğin
/wp-content/uploads/) doğrudan çalıştırılan.phpdosyalarının HTTP POST istekleri. - Base64 ile kodlanmış karmaşık parametreler içeren URL dizilimleri.
- Bilinmeyen veya nadir kullanılan User-Agent bilgileri ile yapılan tekrarlı erişimler.
Şüpheli Kod Kalıplarının Analizi
Saldırganlar gizlenmek için PHP kodlarını obfuscate (karmaşıklaştırma) işlemine tabi tutarlar. Komut satırından Linux sunucularda arama yaparken şu komut kümesini kullanabilirsiniz:
grep -rnw '/var/www/html/' -e 'eval(' -e 'base64_decode(' -e 'passthru(' -e 'shell_exec('
Uyarı: Temiz yazılımlar da meşru amaçlarla
base64_decodekullanabilir. Bu nedenle bulguları silmeden önce kodun bağlamını detaylıca incelemelisiniz.

Php2shell ve Shell Tehditlerine Karşı Alınacak Güvenlik Önlemleri
Sunucunuzu Php2shell ve diğer PHP tabanlı arka kapı saldırılarına karşı korumak, katmanlı bir güvenlik yaklaşımı gerektirir.
1. Tehlikeli PHP Fonksiyonlarını Devre Dışı Bırakın
PHP konfigürasyon dosyanızda (php.ini) sistem seviyesinde komut çalıştırabilen işlevleri kapatmak, shell yazılımlarının çalışmasını doğrudan engeller:
disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source
2. Dosya İzinlerini Mimarisine Uygun Düzenleyin
Web sunucusunun çalıştığı kullanıcı grubuna gereksiz yazma yetkisi verilmemelidir. Dizinler için ideal izin modu 755, dosyalar için ise 644 olmalıdır. Yükleme (upload) klasörlerinde kesinlikle PHP kod çalıştırma yetkisi engellenmelidir.
Nginx İçin Yükleme Dizininde PHP Çalıştırmayı Engelleme:
location ~* ^/uploads/.*\.php$ {
deny all;
}
3. Web Uygulama Güvenlik Duvarı (WAF) ve Web Server Hardening
ModSecurity veya Cloudflare gibi WAF çözümleri, bilinen zararlı imzaları (signatures) ve anormal HTTP yüklerini anında engeller. Ayrıca sunucunuzda açık kaynaklı tespit araçları (Maldet, ClamAV) çalıştırarak düzenli taramalar planlamalısınız.