PHP XXE Enjeksiyon Güvenlik Açığı, saldırganların yapılandırma dosyalarına ve özel anahtarlara erişmesini sağlar


PHP’deki yeni ortaya çıkan bir XML harici varlık (XXE) enjeksiyon güvenlik açığı, saldırganların hassas yapılandırma dosyalarına ve özel anahtarlara erişmek için nasıl birden fazla güvenlik mekanizmasını atlayabileceğini gösterdi.

Web Uygulaması Güvenlik Araştırmacısı Aleksandr Zhurnakov tarafından detaylandırılan güvenlik açığı, görünüşte güvenli uygulamalarda bile uygunsuz XML ayrıştırma konfigürasyonlarının ortaya koyduğu riskleri vurgulamaktadır.

İstismar, PHP’nin LIBXML uzantısının ve sargılarının bir kombinasyonundan yararlanarak saldırganların kısıtlamaları atlamasını sağlayan LIBXML_NONETLIBXML_DTDLOADve diğer bayraklar.

Bu bayraklar, harici varlıkların yüklenmesini veya dış kaynaklara erişmeyi önlemek için tasarlanmıştır, ancak araştırma, gelişmiş yükler ve teknikler kullanılarak nasıl atlatılabileceklerini ortaya koymaktadır.

Güvenlik bayraklarını ve filtreleri atlamak

Güvenlik açığı, PHP’nin XML ayrıştırma işlemini ele alma biçiminden kaynaklanır. DOMDocument sınıf. Varsayılan olarak, harici varlık yükleme devre dışı bırakılır, ancak bazı bayraklar LIBXML_DTDLOAD Saldırganların kötü niyetli DTD dosyaları yüklemesine izin verin.

Bu dosyalar daha sonra verileri sunmak için hazırlanabilir. /etc/passwd veya PHP ambalajcılardan yararlanarak özel anahtarlar php://filter.

Kritik baypaslardan biri değiştirmeyi içerir http:// Gibi alternatif ambalajlarla URL’ler php://filter/resource=etkili bir şekilde LIBXML_NONET kısıtlama.

PHP XXE enjeksiyonuPHP XXE enjeksiyonu
Gelen HTTP isteği

Ayrıca, parametre varlıklarını kötüye kullanarak (%name;), saldırganlar güvenlik kontrolleri uygulanmadan önce XML yapısına kötü niyetli içerik enjekte edebilirler.

Daha da karmaşıklaşan araştırma, yüklerin gibi filtreler kullanılarak nasıl sıkıştırılabileceğini göstermektedir. zlib.deflate ve Base64’te boyutlarını azaltmak için kodlanmış ve GET parametreleri veya sorgu dizeleri için ortak sunucu kısıtlamalarına sığmalarını sağlar.

PT Swarm raporuna göre, bu yaklaşım, sunucuda giden TCP bağlantıları engellendiğinde DNS alt alanları aracılığıyla eksfiltrasyonu da kolaylaştırır.

Gerçek dünya sonuçları ve CVE ataması

Güvenlik açığı belirli uygulamalarda zaten gözlenmiştir.

Örneğin, SimpleSamLPHP’deki (CVE-2024-52596) bir XXE kusuru, kimlik doğrulanmamış kullanıcıların yapılandırma dosyalarını okumasına, özel tuşları çıkarmasına ve kimlik doğrulama iddialarını dövmesine izin verdi.

PHP XXE enjeksiyonuPHP XXE enjeksiyonu
Çalışan XXE yükü

Bu, SimpleSamLPHP bir kimlik sağlayıcısı olarak yapılandırıldığında saldırganların tamamen kimlik doğrulama mekanizmalarını atlamasını sağladı.

Zhurnakov’un araştırması, PHP uygulamalarında güvenli XML ayrıştırma uygulamalarının öneminin altını çizmektedir.

Geliştiricilere tüm gereksiz LIBXML bayraklarını devre dışı bırakmaları tavsiye edilir (LIBXML_DTDLOADLIBXML_NOENTvb.) ve gelişmiş XXE korumalarına sahip en son PHP sürümlerinin LIBXML_NO_XXE PHP 8.4) dağıtır.

Bu güvenlik açığı, karmaşık saldırı vektörlerinin görünüşte küçük yanlış yapılandırmalardan nasıl ortaya çıkabileceğini ve web uygulaması geliştirmede titiz test ve güvenli kodlama uygulamalarına duyulan ihtiyacı vurgulayarak keskin bir hatırlatma görevi görüyor.

Are you from SOC/DFIR Teams? – Analyse Malware Incidents & get live Access with ANY.RUN -> Start Now for Free.



Source link