Site icon AdminGuide.Info

WordPress – XMLRPC.PHP Güvenlik Sorunu

Wordpress

“XML-RPC, HTTP üzerinden veri taşıyan ve XML ile kodlanmış bir uzaktan prosedür çağrısıdır. Tehdit Aktörleri, ‘wp.getUsersBlogs’ API çağrısıyla bir WordPress web sitesinde kullanıcı kimlik bilgilerini almak için bu arayüzü kötüye kullanabilir.”

Rutin güvenlik taramaları sırasında yönetiminden sorumlu olduğu web sitelerinden birinde yukarıdaki gibi bir bildirimle bir güvenlik açığı olduğunu öğrendim. Öğrendiğim detayları ve çözüm yollarını da paylaşmak istedim.

WordPress’in kök dizininde bulunan dosya xmlrpc.php, XML-RPC protokolünü kullanarak uzaktan bağlantı kurulmasını sağlar. Üçüncü parti uygulamalar, bu protokolü kullanarak WordPress sitesine bağlanarak içerik yayınlama, yorum yapma ve diğer görevleri gerçekleştirebilir. Bu dosya, özellikle mobil uygulamalar, içerik yönetim araçları ve bazı eklentiler tarafından WordPress sitenizle bağlantı kurar.

Özellikleri:

Güvenlik Açısından xmlrpc.php

Bu dosya bazı güvenlik sorunları yaratabilir; özellikle xmlrpc.php üzerinden brute-force saldırıları düzenlenebilir. Dosya çok sayıda istek alırsa sunucunun kaynaklarını tüketebilir ve sitenin yavaşlamasına ya da çökmesine neden olabilir.

Güvenliği Sağlamak İçin Alınabilecek Önlemler:

WordPress’te xmlrpc.php dosyasına erişimi kısıtlamak, sitenizi istenmeyen saldırılardan ve kaynak tüketiminden korumaya yardımcı olabilir. Aşağıda bu dosyaya erişimi kısıtlamak için izleyebileceğiniz birkaç farklı yöntem şunlardır;

1. .htaccess Dosyası ile Erişimi Engelleme

Eğer siteniz Apache sunucusu kullanıyorsa .htaccess dosyasına birkaç satır kod ekleyerek xmlrpc.php dosyasına erişimi tamamen engelleyebilirsiniz. Bu dosyayı WordPress’in kurulu olduğu kök dizinde bulabilirsiniz.

.htaccess dosyasına şu kodu ekleyin:

<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
</Files>

Bu kod, xmlrpc.php dosyasına yapılan tüm erişimleri engeller.

Not: Bu yöntemle xmlrpc.php dosyasına tam erişimi engellediğiniz için, eğer WordPress mobil uygulaması veya diğer XML-RPC kullanan uygulamalarla erişim sağlamanız gerekiyorsa, bu yöntem uygun olmayabilir.

2. Belirli IP Adreslerine İzin Verme

Eğer yalnızca belirli IP adreslerinin xmlrpc.php dosyasına erişmesine izin vermek istiyorsanız, .htaccess dosyasına şu şekilde bir kod ekleyebilirsiniz:

<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
    Allow from 123.45.67.89
</Files>

Bu kodda 123.45.67.89 yerine izin vermek istediğiniz IP adresini yazmalısınız. Bu yöntem, yalnızca izin verilen IP adreslerinin dosyaya erişmesine olanak tanır. Birden fazla IP eklemek isterseniz, her IP adresi için ayrı bir Allow from satırı ekleyebilirsiniz.

3. Güvenlik Eklentileri ile Erişimi Kısıtlama

WordPress güvenlik eklentileri, xmlrpc.php dosyasına yapılan istekleri denetlemenize yardımcı olabilir. Güvenlik eklentisi kullanarak hem saldırılardan korunabilir hem de gerekli olduğunda XML-RPC erişimini kapatıp açabilirsiniz. İşte bazı popüler güvenlik eklentileri:

4. Cloudflare veya Sunucu Seviyesinde Güvenlik Sağlama

Eğer siteniz Cloudflare gibi bir güvenlik ve hızlandırma servisi kullanıyorsa, Cloudflare üzerinden xmlrpc.php dosyasına gelen istekleri engelleyebilirsiniz:

Aynı şekilde sunucu tarafında güvenlik önlemleri alarak da xmlrpc.php dosyasına erişimi kısıtlayabilirsiniz. Bu işlemler için sunucu sağlayıcınızla iletişime geçebilirsiniz.

5. xmlrpc.php Dosyasını Devre Dışı Bırakma (Kodu Düzenleyerek)

Son olarak, xmlrpc.php dosyasının işlevselliğini tamamen devre dışı bırakmak için WordPress’e küçük bir kod ekleyebilirsiniz. WordPress’in functions.php dosyasına şu kodu ekleyin:

add_filter('xmlrpc_enabled', '__return_false');

Bu kod, WordPress’in XML-RPC işlevini devre dışı bırakır ve dosyaya yapılan isteklere yanıt vermez.

Hangi Yöntemi Seçmeli?

Exit mobile version