Daftar Isi :
Mengenal XML-RPC
Dalam dunia pengembangan web dan aplikasi, komunikasi antara server dan klien menjadi hal yang sangat penting. Salah satu teknologi yang memungkinkan interaksi antar sistem adalah XML-RPC. Protokol ini memungkinkan sistem yang berbeda untuk bertukar data dan menjalankan fungsi secara remote menggunakan XML sebagai format pesan dan HTTP sebagai protokol transportasinya.
XML-RPC pertama kali diperkenalkan oleh Dave Winer pada tahun 1998 dan sejak saat itu telah digunakan dalam berbagai aplikasi, termasuk WordPress, layanan web, dan integrasi antar platform. Dengan XML-RPC, sebuah aplikasi dapat mengirimkan permintaan ke server untuk menjalankan suatu prosedur tanpa harus berbagi kode sumber atau berada dalam satu lingkungan yang sama.
Salah satu keunggulan utama XML-RPC adalah kesederhanaannya. Dibandingkan dengan protokol komunikasi lain seperti SOAP atau REST, XML-RPC lebih ringan dan mudah diimplementasikan. Protokol ini mendukung berbagai jenis data, termasuk string, integer, boolean, array, dan struktur kompleks lainnya.
Namun, di balik kemudahan dan fleksibilitasnya, XML-RPC juga memiliki kelemahan, terutama dalam aspek keamanan. Pada sistem seperti WordPress, XML-RPC sering menjadi target eksploitasi hacker, terutama untuk serangan brute force login dan DDoS melalui pingback. Oleh karena itu, banyak administrator situs memilih untuk menonaktifkan XML-RPC jika tidak digunakan.
Di artikel selanjutnya, kita akan membahas lebih dalam mengenai cara kerja XML-RPC, penerapannya dalam berbagai bahasa pemrograman, serta langkah-langkah pengamanan agar sistem tetap terlindungi dari penyalahgunaan protokol ini.
XML-RPC (Extensible Markup Language – Remote Procedure Call) adalah protokol yang memungkinkan komunikasi antara sistem yang berbeda melalui jaringan dengan menggunakan XML untuk encoding dan HTTP sebagai transportasi.
Cara Kerja XML-RPC
- Klien mengirimkan permintaan dalam format XML yang dikemas dalam HTTP POST.
- Server menerima permintaan, memprosesnya, dan menjalankan prosedur yang diminta.
- Server mengirimkan respons dalam format XML yang berisi hasil eksekusi prosedur.
Kelebihan XML-RPC
- Ringan & sederhana dibandingkan dengan SOAP.
- Lintas platform & bahasa pemrograman, mendukung Python, PHP, Java, C++, dll.
- Menggunakan standar HTTP, sehingga mudah diterapkan.
Contoh XML-RPC dalam Python
Menggunakan pustaka xmlrpc.client
untuk membuat klien dan server:
a. Membuat Server XML-RPC (Python)
from xmlrpc.server import SimpleXMLRPCServer
def tambah(a, b):
return a + b
server = SimpleXMLRPCServer(("localhost", 8000))
server.register_function(tambah, "tambah")
print("Server berjalan di http://localhost:8000")
server.serve_forever()
b. Membuat Klien XML-RPC (Python)
import xmlrpc.client
proxy = xmlrpc.client.ServerProxy("http://localhost:8000/")
hasil = proxy.tambah(5, 10)
print("Hasil:", hasil)
XML-RPC sering digunakan dalam sistem legacy atau ketika diperlukan komunikasi sederhana antara aplikasi tanpa menggunakan REST atau GraphQL.
Contoh Serangan pada XML-RPC
XML-RPC pada WordPress sering menjadi target serangan hacker karena fitur ini memungkinkan eksekusi perintah jarak jauh melalui HTTP. Beberapa teknik yang sering digunakan untuk mengeksploitasi XML-RPC antara lain:
1. Brute Force via XML-RPC
Hacker menggunakan metode “system.multicall” untuk mencoba banyak kombinasi username dan password dalam satu request, sehingga lebih sulit terdeteksi dibanding serangan brute force konvensional.
Contoh request brute force XML-RPC:
<?xml version="1.0"?>
<methodCall>
<methodName>system.multicall</methodName>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>methodName</name>
<value><string>wp.getUsersBlogs</string></value>
</member>
<member>
<name>params</name>
<value>
<array>
<data>
<value><string>admin</string></value>
<value><string>password123</string></value>
</data>
</array>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodCall>
Dalam satu request, hacker bisa mencoba puluhan bahkan ratusan kombinasi password tanpa memicu perlindungan brute force biasa.
2. DDoS dengan XML-RPC Pingback
Fitur pingback pada XML-RPC bisa disalahgunakan untuk melakukan Distributed Denial of Service (DDoS) ke situs lain. Hacker mengirimkan request yang memanfaatkan WordPress sebagai “zombie” untuk membanjiri target dengan lalu lintas berlebihan.
Contoh request eksploitasi pingback:
<?xml version="1.0"?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value><string>https://target-victim.com</string></value>
</param>
<param>
<value><string>https://malicious-site.com</string></value>
</param>
</params>
</methodCall>
Jika situs WordPress memiliki XML-RPC aktif, maka servernya akan mengirimkan request HTTP ke target-victim.com, membantu hacker dalam serangan DDoS.
Cara Mengamankan WordPress dari XML-RPC Exploit
- Menonaktifkan XML-RPC sepenuhnya (jika tidak digunakan):
Tambahkan kode berikut ke file.htaccess
untuk memblokir akses kexmlrpc.php
:<Files xmlrpc.php> Order Deny,Allow Deny from all </Files>
- Gunakan plugin keamanan seperti:
- Disable XML-RPC (untuk menonaktifkan fitur ini sepenuhnya)
- Wordfence Security (untuk mendeteksi dan memblokir eksploitasi XML-RPC)
- Membatasi akses dengan firewall seperti Cloudflare atau ModSecurity agar hanya IP tertentu yang bisa mengakses XML-RPC.
- Cek aktivitas mencurigakan di log server menggunakan perintah berikut:
grep xmlrpc.php /var/log/apache2/access.log
Karena XML-RPC sering disalahgunakan, banyak pengguna WordPress memilih untuk menonaktifkannya kecuali benar-benar diperlukan, seperti untuk aplikasi seluler atau integrasi API tertentu.
Cara menonaktifkan XML-RPC
Jika Anda ingin menonaktifkan XML-RPC di WordPress untuk meningkatkan keamanan dan mencegah eksploitasi, ada beberapa cara yang bisa dilakukan:
1. Menonaktifkan XML-RPC dengan Plugin
Cara paling mudah adalah menggunakan plugin keamanan yang secara otomatis memblokir akses ke xmlrpc.php. Beberapa plugin yang bisa digunakan:
a. Plugin “Disable XML-RPC”
- Masuk ke Dashboard WordPress.
- Buka menu Plugins → Add New.
- Cari plugin Disable XML-RPC.
- Klik Install Now lalu Activate.
- Selesai! XML-RPC sekarang sudah dinonaktifkan.
b. Plugin “Wordfence Security” (Opsi tambahan)
- Install dan aktifkan Wordfence Security.
- Buka Wordfence → Firewall.
- Cari opsi Disable XML-RPC Authentication dan aktifkan.
2. Menonaktifkan XML-RPC lewat .htaccess
Jika Anda tidak ingin menggunakan plugin, bisa langsung memblokir akses ke xmlrpc.php melalui file .htaccess.
Langkah-langkah:
- Masuk ke File Manager di cPanel atau gunakan FTP seperti FileZilla.
- Buka file .htaccess yang ada di folder utama WordPress.
- Tambahkan kode berikut di bagian paling bawah:
<Files xmlrpc.php> Order Deny,Allow Deny from all </Files>
- Simpan dan cek apakah xmlrpc.php sudah tidak bisa diakses dengan membuka:
https://namadomain.com/xmlrpc.php
Jika muncul pesan 403 Forbidden, berarti XML-RPC berhasil dinonaktifkan.
3. Menonaktifkan XML-RPC lewat functions.php
Cara lain adalah menambahkan kode di functions.php untuk menonaktifkan XML-RPC.
Langkah-langkah:
- Buka Dashboard WordPress.
- Pergi ke Appearance → Theme Editor.
- Buka file functions.php.
- Tambahkan kode berikut di akhir file:
add_filter( 'xmlrpc_enabled', '__return_false' );
- Simpan perubahan.
4. Memblokir XML-RPC dengan ModSecurity (Untuk Pengguna VPS / Dedicated Server)
Jika Anda menggunakan VPS atau dedicated server dengan ModSecurity, Anda bisa menambahkan aturan untuk memblokir akses ke xmlrpc.php.
Untuk Apache (di httpd.conf atau .htaccess)
SecRule REQUEST_URI "/xmlrpc.php" "id:1234,deny,status:403"
Untuk Nginx
Buka file konfigurasi Nginx (/etc/nginx/nginx.conf
) dan tambahkan:
location /xmlrpc.php {
deny all;
}
Lalu restart Nginx:
sudo systemctl restart nginx
Kesimpulan
Menonaktifkan XML-RPC sangat disarankan jika Anda tidak membutuhkannya, terutama untuk mencegah brute force login dan DDoS pingback attack.
- Paling mudah: Gunakan plugin Disable XML-RPC.
- Paling efektif: Blokir lewat .htaccess atau server (Nginx/Apache).
- Alternatif ringan: Gunakan kode di functions.php.
Jika Anda menggunakan aplikasi WordPress Mobile atau layanan yang memerlukan XML-RPC (misalnya Jetpack), pastikan fitur ini tetap diaktifkan atau gunakan plugin keamanan yang hanya memblokir fungsi tertentu dari XML-RPC. 🚀