· kaynak Hacker News – Front Page (native)
ColdFusion ve Lucee sunucularında istenmeyen PHP: bulmak ve kaldırmak için PowerShell rehberi
Engellenen bir admin girişi, bir ColdFusion yöneticisini internete açık bir phpMyAdmin kurulumuna ve yaklaşık 4.500 başıboş PHP dosyasına götürdü. Ortaya çıkan rehber, IIS sunucularının nasıl denetleneceğini ve istenmeyen PHP'nin güvenle nasıl kaldırılacağını gösteriyor.

Beklenmedik bir nedene sahip engellenmiş bir giriş
21 Ekim 2026'da PHP, kimlik doğrulaması olmadan yapılan bir isteğin sunucuda kod çalıştırmasına izin veren iki kritik açığı için acil yamalar yayınladı; bu açıklara PHP2Shell adı verildi. Hacker News'in ana sayfasına ulaşan Gregory Alexander'ın blog yazısına göre, web isteklerini karşılayan her PHP yapılandırması etkileniyordu: PHP-FPM, Apache'nin mod_php'si, php-cgi, FrankenPHP ve LiteSpeed dahil; yamalı sürümler 8.5.12, 8.4.27, 8.3.36 ve 8.2.35 olarak yayınlandı.
Alexander'ın siteleri PHP değil, ColdFusion üzerinde çalışıyor. Ancak bir test blogunun admin paneline giriş yapmayı denediğinde IIS, 403 Forbidden yanıtı verdi ve multipart form-data isteklerinin bir PHP riskini azaltma önlemi tarafından engellendiğini açıkladı. Hosting sağlayıcısı, açıklara tepki olarak sunucu genelinde, ne çalıştırdığına bakılmaksızın kutudaki her sitede bu içerik türünü kullanan tüm istekleri reddeden bir URL Rewrite kuralı eklemişti; bu içerik türü, tarayıcıların dosya yükleyebilen tüm formlarda kullandığı kodlamadır. Onun dört ColdFusion sitesinde admin girişleri ve tüm görsel ve dosya yüklemeleri aynı anda başarısız oldu.
Alexander'a göre multipart isteklerini engellemek PHP'nin kendi önerisi değildi. Resmi tavsiye, yamalı sürümleri kurmak ve o zamana kadar session.upload_progress.enabled'ı devre dışı bırakıp post_max_size'ı düşürmekti. Bu riskini azaltma önlemlerinden birkaçı yükleme işlemeyle ilgiliydi, bu da sağlayıcının seçimini muhtemelen açıklıyor; ancak PHP kullanmayan kiracılar için kural tamamen yan hasardı.
Kuralı .php adresleriyle sınırlandırdıktan sonra her şey tekrar çalıştı. Bu da bariz soruyu gündeme getirdi: Sunucuda hiç PHP ne arıyordu? Cevap, tek bir MySQL veritabanını yönetmek için yıllar önce istenmiş, hâlâ bir site klasöründe duran ve giriş sayfası internete açık olan bir phpMyAdmin kurulumuydu. Sonraki dosya taraması, iki phpMyAdmin kopyası arasında yaklaşık 4.500 PHP dosyası buldu; bunlardan biri, IIS'nin Default Web Site'ının sunucunun çıplak IP adresini ziyaret eden herkese sunduğu web kökündeydi.
Bir sunucuyu denetlemek için dört kontrol
Yazıdaki tespit prosedürü PowerShell ile birkaç dakika sürer:
Önce, IIS'nin .php dosyalarını hiç PHP'ye devredip vermediğini kontrol edin; bunun için handler mapping'leri *.php yoluna göre filtreleyerek listeleyin. IIS yalnızca FastCGI gibi bir handler mapping php-cgi.exe'ye işaret ettiğinde PHP çalıştırır.
İkinci olarak, web kökünü PHP dosyaları için tarayın. Windows'un kendi dir komutu /s /b parametreleriyle, yüklenmiş görsellerle dolu sunucularda özyinelemeli PowerShell'den çok daha hızlıdır ve sonuçları klasöre göre gruplandırmak kümeleri hızla ortaya çıkarır.
Üçüncüsü, sessiz bir süreç listesine güvenmeyin. Çalışan bir php-cgi.exe'nin yokluğu yalnızca kimsenin yakın zamanda bir PHP sayfası istemediği anlamına gelir, çünkü IIS onu talep üzerine başlatır. Önemli olan handler mapping'dir.
Dördüncüsü, dışarıdan yoklayın. Kendi alan adlarınıza phpmyadmin/, pma/ veya info.php gibi yaygın yolları istemek, saldırganların ne gördüğünü gösterir. 200 yanıt veren her şey incelenmeyi hak eder, çünkü botlar gün boyu phpMyAdmin girişlerini denemekle uğraşır ve her deneme PHP'yi başlatır ve veritabanına ulaşır.
Önemli bir uyarı daha ekliyor: Tanımadığınız PHP dosyaları, özellikle yükleme veya görsel klasörlerinde duran ya da yakın zamanda değiştirilenler, olası bir sızma olarak ele alınmalıdır. Saldırganlar rutin olarak yükleme dizinlerine küçük PHP web shell'leri bırakır ve en son değiştirilen dosyaları listelemek denetimin bir parçasıdır.
PHP'yi güvenle kaldırmak
Temizlik, her adımın geri alınabilmesi için sıralanmıştır:
- Önce IIS yapılandırmasının anlık görüntüsünü appcmd'nin backup komutuyla alın; bir şey ters giderse tek satırla geri yüklenir.
- phpMyAdmin'i ve diğer PHP uygulamalarını silmek yerine web klasörlerinin dışına taşıyın, çünkü yapılandırmasında bir veritabanı parolası olabilir. Remote Desktop üzerinden HeidiSQL veya MySQL Workbench gibi bir masaüstü istemcisi, herkese açık bir giriş sayfası olmadan onun yerini alır.
- .php uzantısını request filtering üzerinden sunucu düzeyinde engelleyin, böylece bu tür istekler herhangi bir handler çalışmadan önce reddedilir.
- Handler mapping'i ve onun FastCGI girdisini kaldırın.
- PHP'yi en son, ona bağımlı hiçbir şey kalmadığında kaldırın.
Alexander PHP'nin artık kullanılmadığını doğruladıktan sonra sağlayıcı, genel geçerli kuralı kapattı. Yazı ayrıca PHP'yi tutmanız gerekiyorsa bir riskini azaltma kuralının nasıl düzgün şekilde sınırlandırılacağını, Apache altında Linux'ta Lucee için notları ve yol boyunca karşılaşılan tuzakların bir listesini de kapsıyor.
Neden önemli
Bu hikâye, bilinmeyen yazılımın kimsenin kullanmadığı durumlarda bile bir yük olduğunu ne güzel illustrating ediyor. Yöneticinin unuttuğu PHP, sağlayıcının acil müdahalesini belirledi ve bu müdahale de hiç PHP çalıştırmayan dört ColdFusion sitesini bozdu. Paylaşılan altyapıdaki sunucu geneli önlemler, kiracılar gerçekte hangi stack'i çalıştırırsa çalıştırsın her kiracıyı vurur.
Temel ders basit bir hijyen meselesiidir: handler mapping'lerinizi bilin, başıboş dosyaları tarayın ve kendi sunucularınızı dışarıdan yoklayın. Kullanılmayan yazılım zamanında yamanamaz, internete açık bir phpMyAdmin girişi credential-stuffing botları için kalıcı bir hedeftir ve ihtiyacınız olmayanı kaldırmak, mevcut en ucuz güvenlik çözümü olmaya devam eder.
- #php
- #coldfusion
- #iis
- #windows-server
- #security