WordPress XML-RPC Servisi ile WAF ve diğer eklentilere takılmadan Brute Force Saldırısı düzenlenebilir. Dağıtık sistemlerin birbiriyle haberleşmeleri için geliştirilen, XML formatında veri transferi gerçekleştiren XML-RPC (uzak prosedür çağırma) servisi 1990’ların sonlarında kullanılmaya başlanmıştır. Bugün ise WordPress sayesinde dünyanın en çok kullanılan servislerinden biri haline gelmiştir.
XML-RPC, gövdesinde XML verisi bulunduran HTTP POST mesajı olarak tanımlanır.
WordPress CMS sistemi, web sitesi geliştiricileri için yönetici giriş sayfasını kullanmadan web sitesi içeriğini yayınlama veya değiştirme konusunda esneklik sağlamaktadır. XML-RPC uzaktan yönetim için her ne kadar kolaylık sağlasa da, bu durum hackerların merakını cezbetmekte ve birçok noktada kötüye kullanılmaktadır.
XML-RPC Servisi ile WAF ve Eklentilere Takılmadan Brute Force Saldırısı Yapmak
Gönderilen XML mesajındaki işleyiş; mesajı teslim alan sunucu tarafında şartlar uygun olduğu takdirde yetki çalıştırılması ve sonucun XML formatında istemci sisteme döndürülmesi şeklindedir. WordPress’de kullanılan XML-RPC servisi üzerinde wp.getUsersBlogs metodu aracılığı ile güvenlik eklentileri ve WAFların engeline takılmadan yönetim paneline kaba kuvvet saldırısı gerçekleştirilebilmektedir.
Xmlrpc.php sayfasına GET metodu ile istek gerçekleştirildiğinde aşağıdaki gibi yalnızca POST metodundan gönderilen isteklerin desteklendiği yanıtı dönmektedir.
Test isteğimiz sonucunda xmlrpc.php sayfasına;
<?xml version=”1.0″ encoding=”UTF-8″?>
<methodCall>
<methodName> system.listMethods </methodName>
<params></params>
</methodCall>
…şeklinde POST isteği gerçekleştirilerek desteklenen XML-RPC metotlarının listesi elde edilebilmektedir.
Yönetim paneli arayüzünde görüleceği gibi WordPress admin girişinde “WPS Limit Login” eklentisi ve reCAPTCHA kullanılarak kaba kuvvet saldırılarının önüne geçilmeye çalışıldığı tespit ediyoruz.
Aşağıdaki şekilde görülebileceği gibi wp.getUsersBlogs metodu kullanılarak giriş istekleri engellenmeden sunucuya iletilerek brute-force saldırısı gerçekleştirilebilmektedir.
Proxy araçlarında mevcut olan Intruder özelliği kullanılarak kaba kuvvet saldırıları gerçekleştirilebilir.
Not: Diğer metodların kullanımı hakkında araştırma yapılarak farklı istismar yöntemlerinden faydalanabilinir.
XML-RPC Brute Force Atağına Çözüm Önerisi:
Temanıza Kod Eklemek: XML-RPC dosyasına erişimin devre dışı bırakılması, ilgili servise bağlı olarak çalışan sistemlerde aksamaya neden olacağından dolayı aşağıda verilen kod bloğu, templatede bulunan “functions.php” sayfasına eklenerek istenilen metodlar devre dışı bırakılabilir:
add_filter( ‘xmlrpc_methods’, function( $methods ) {
unset( $methods[‘wp.getUsersBlogs’] );
return $methods;
} );
Htaccess Dosyası ile Erişimi Bloke Etmek: Apache sunucularda htaccess dosyalarını kullanarak XML-RPC erişimini durdurabilirsiniz. Aşağıdaki kod bloğunu sitenizin kök dizinindeki .htacess dosyasına eklemeniz yeterli olacaktır.
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
# END protect xmlrpc.php
Apache Virtual Conf Blokesi: Dilerseniz Apache üzerinde virtual conf dosyanız ile gelen tüm istekleri bloke edebilirsiniz. Aşağıdaki kod bloğunu domain.virtual.conf dosyanıza eklemeniz yeterli olacaktır.
<VirtualHost>
…..
<files xmlrpc.php>
order allow,deny
deny from all</files>
</virtualhost>
Nginx Üzerinden Bloke Etmek: Eğer XML-RPC dosyasının işlevlerini kullanmıyorsanız Nginx sunucularda Nginx.Conf dosyasına aşağıdaki kod bloğunu ekleyerek XML-RPC erişimlerini yasaklayabilirsiniz.
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
Yazar: Kasım Feke