XML-RPC biang kerok WordPress Sering Kena DDos dan Bruteforce

cara mengatasi bruteforce dan ddos pada wordpress - XML-RPC biang kerok Wordpress Sering Kena DDos dan Bruteforce

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

  1. Klien mengirimkan permintaan dalam format XML yang dikemas dalam HTTP POST.
  2. Server menerima permintaan, memprosesnya, dan menjalankan prosedur yang diminta.
  3. 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

  1. Menonaktifkan XML-RPC sepenuhnya (jika tidak digunakan):
    Tambahkan kode berikut ke file .htaccess untuk memblokir akses ke xmlrpc.php: <Files xmlrpc.php> Order Deny,Allow Deny from all </Files>
  2. Gunakan plugin keamanan seperti:
    • Disable XML-RPC (untuk menonaktifkan fitur ini sepenuhnya)
    • Wordfence Security (untuk mendeteksi dan memblokir eksploitasi XML-RPC)
  3. Membatasi akses dengan firewall seperti Cloudflare atau ModSecurity agar hanya IP tertentu yang bisa mengakses XML-RPC.
  4. 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”

  1. Masuk ke Dashboard WordPress.
  2. Buka menu PluginsAdd New.
  3. Cari plugin Disable XML-RPC.
  4. Klik Install Now lalu Activate.
  5. Selesai! XML-RPC sekarang sudah dinonaktifkan.

b. Plugin “Wordfence Security” (Opsi tambahan)

  1. Install dan aktifkan Wordfence Security.
  2. Buka WordfenceFirewall.
  3. 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:

  1. Masuk ke File Manager di cPanel atau gunakan FTP seperti FileZilla.
  2. Buka file .htaccess yang ada di folder utama WordPress.
  3. Tambahkan kode berikut di bagian paling bawah: <Files xmlrpc.php> Order Deny,Allow Deny from all </Files>
  4. 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:

  1. Buka Dashboard WordPress.
  2. Pergi ke AppearanceTheme Editor.
  3. Buka file functions.php.
  4. Tambahkan kode berikut di akhir file: add_filter( 'xmlrpc_enabled', '__return_false' );
  5. 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. 🚀

You cannot copy content of this page