antond.net

0 %
Anton Darmawanto
Front-end Developer
Ui/UX Designer
  • Residence:
    Indonesia
  • City:
    Jakarta Selatan
  • Age:
    40
Indonesian
English
Jawa
html
CSS
Js
PHP
WordPress
Proxmox
Laravel
Linux server (ubuntu, debian, fedora)
Alibaba Cloud
  • Proxmox, Vm Ware
  • Stylus, Sass, Less
  • Gulp, Webpack, Grunt
  • GIT knowledge
0

No products in the cart.

Return To Shop

Admin yang Tak Terlihat: Kampanye XSS WordPress Oktober 2026 Menyisipkan Empat Pintu Belakang

October 9, 2026

Selasa pagi, seorang pemilik toko online di Eropa membuka wp-admin seperti biasa. Tidak ada pesan peringatan, tidak ada plugin aneh yang mencurigakan, jumlah pengguna di layar tetap sama. Ia mengira situsnya sehat. Padahal pada malam sebelumnya, seseorang sudah menjadi administrator situsnya, orang itu pun tidak muncul di daftar pengguna.

Kisah itu bukan skenario khayalan. Pada 6 Oktober 2026, perusahaan keamanan WordPress Patchstack menerbitkan analisis teknis sebuah kampanye serangan yang memanfaatkan dua celah XSS tersimpan (stored XSS) di dua plugin populer, lalu memasang empat pintu belakang sekaligus ke dalam situs yang korban. Empat, bukan satu. Dan hanya satu dari empat pintu itu yang bisa Anda lihat dari dasbor WordPress.

Saya menulis artikel ini pagi hari setelah membaca laporan Patchstack, lalu membuka halaman depan antond.net untuk memeriksa versi WordPress yang saya pakai. Hasilnya saya cantumkan jujur di bagian akhir artikel, bukan sebagai klaim bahwa situs saya kebal, melainkan sebagai contoh kebiasaan yang seharusnya dimiliki setiap pemilik website: mengecek dulu, baru tenang.

Layar editor kode dengan baris program yang sedang diperiksa

Apa yang sebenarnya terjadi

Patchstack mulai mencurigai aktivitas tidak wajar pada 4 Oktober 2026 pukul 10:39 UTC. Sasaran pertama adalah WPC Product Bundles for WooCommerce, plugin bundling produk yang terpasang di lebih dari 30.000 situs WordPress. Celahnya tercatat sebagai CVE-2026-93836, jenis stored XSS, menyerang versi 8.6.6 ke bawah, dan sudah diperbaiki di versi 8.6.7.

Sehari kemudian, 5 Oktober, payload yang sama terdeteksi mengalir melalui celah kedua: CVE-2026-94504 di Ninja Forms, plugin formulir yang dipakai di lebih dari 500.000 situs. Ninja Forms versi 3.15.3 ke bawah rentan; versi 3.15.4 memperkuat escaping di layar pengelolaan submission.

Dua plugin yang tidak saling berhubungan, dua celah berbeda, tetapi satu payload yang sama: file JavaScript x.js yang diambil dari domain imgcdn1.com. Domain itu didaftarkan pada 1 Oktober 2026, tiga hari sebelum serangan pertama terdeteksi. Patchstack menilai kedua celah ini berada di kisaran CVSS 7,1 (situs Wiz mencatat 7,2 untuk CVE-2026-93836; saya memakai angka yang lebih konservatif, yaitu 7,1). Eksploitasi aktif tercatat, tetapi volume menurut Patchstack masih terbatas. Angka itu bisa berubah begitu skrip ini menyebar.

Yang membuat kampanye ini berbeda dari XSS biasa adalah niatnya. Payload ini bukan pemindai kerentanan, bukan bukti konsep untuk peneliti. Ia dirancang untuk berjalan di browser admin yang sedang login dan membangun akses jangka panjang.

Cara kerjanya, langkah demi langkah

Celahnya dimulai tanpa kata sandi. Penyerang mengirim data yang berisi JavaScript ke data pesanan WooCommerce atau ke formulir Ninja Forms. Kode itu tersimpan di database. Ketika administrator membuka halaman yang menampilkan data tersebut misalnya daftar pesanan atau hasil formulir, JavaScript itu dijalankan di dalam browser admin.

Sejauh ini terdengar biasa. Yang tidak biasa: skrip ini tidak mencuri cookie admin. Karena ia berjalan di halaman situs Anda sendiri, setiap permintaan ke /wp-admin/ otomatis membawa sesi login yang sah. Skrip cukup membuka halaman admin, mengambil token CSRF (nonce) yang dipakai WordPress untuk memvalidasi aksi administratif, lalu memakainya kembali seolah-olah ia admin.

Dari situ ia melakukan hal yang paling menakutkan: memakai mekanisme resmi WordPress sendiri. Skrip membuka halaman unggah plugin, mengambil nonce, mengunduh arsip ZIP dari server penyerang, lalu memasangnya lewat penginstal plugin bawaan WordPress. Plugin palsu itu menyamar sebagai “WP Smart Thumbnails” versi 1.2.4 dari “MediaPress Labs”.

Empat pintu belakang dari satu instalasi plugin

Inilah bagian yang paling sering dilewatkan oleh panduan keamanan biasa. Setelah plugin palsu terpasang, script di dalamnya (emer-run.php) membangun empat jalur kembali yang independen:

PintuCara kerjaTerlihat di dasbor?
1. Admin terlihatAkun administrator dibuat lewat user-new.php dengan kredensial dari server penyerangYa, di layar Pengguna
2. Admin tersembunyiAkun administrator kedua disembunyikan oleh must-use plugin di wp-content/mu-plugins/Tidak, disaring dari daftar pengguna
3. Magic loginURL /wp-login.php?_wplogin= yang langsung memberi sesi sebagai administrator tertua di situsTidak
4. File managerPengelola file tanpa autentikasi yang bisa dipanggil langsung lewat URL pluginTidak

Dua baris terakhir yang membuat pemeriksaan manual lewat dasbor jadi tidak memadai. Admin tersembunyi tidak muncul di layar Semua Pengguna, tidak muncul di filter Administrator, dan tidak ikut dihitung dalam angka total di atas daftar. Ia administrator penuh yang tidak bisa dilihat pemilik situs.

Must-use plugin membuat semuanya bertahan. File di folder mu-plugins dimuat pada setiap permintaan, tidak bisa dinonaktifkan dari wp-admin, dan tidak pernah tampil di layar Plugin. Menghapus “WP Smart Thumbnails” tidak menghapusnya.

Lebih jahat lagi: kedua file must-use plugin itu ditulis dalam bentuk terobfuskan (XOR plus gzip, kunci baru untuk setiap situs) dan waktu modifikasi file-nya diganti agar sama dengan file tertua di instalasi WordPress Anda. Jadi kebiasaan mencari file yang baru berubah di wp-content justru tidak akan menemukan apa-apa.

Token di balik magic login pun tidak terikat pada akun palsu. Token itu terikat pada administrator tertua yang asli, sehingga siapa pun yang memegang URL itu diam-diam masuk sebagai pemilik situs asli Anda. Dalam catatan log yang hanya menyimpan ID pengguna, sesi palsu itu tidak bisa dibedakan dari login sungguhan.

Penanda (IoC) yang dipublikasikan Patchstack untuk deteksi:

  • Opsi database: fz_emer_done_v1 dan fz_emer_login_tokens
  • Parameter login: _wplogin pada /wp-login.php
  • Folder plugin: wp-content/plugins/wp-smart-thumbnails/
  • File must-use: wp-content/mu-plugins/class-wp-query-<8 karakter heksadesimal>.php dan class-wp-token-validate.php
  • Domain: imgcdn1.com (pembawa payload x.js dan c.php)
  • Judul webshell: “Moon, tell me if I could”
Kaca pembesar di atas dokumen yang diperiksa seksama

Lalu, kenapa update inti juga ikut disebut?

Kampanye ini memakai celah di plugin, bukan di inti WordPress. Namun pada hari yang sama dengan terbitnya laporan Patchstack, 6 Oktober 2026, proyek WordPress merilis WordPress 7.1.3: satu rilis keamanan dan pemeliharaan yang menambal tujuh kerentanan keamanan dan empat bug.

Tujuh kerentanan itu, menurut analisis Patchstack, semuanya butuh peran tertentu: dua bisa dipicu pengunjung yang belum login (salah satunya tetap butuh klik moderator), tiga butuh akun Kontributor atau Penulis, satu butuh Administrator menjalankan ekspor, dan satu bergantung pada cara plugin memanggil fungsi inti. WordPress tidak menerbitkan nomor CVE maupun skor CVSS untuk ketujuhnya, dan belum ada laporan eksploitasi aktif. Rilis ini juga sudah di-backport ke cabang-cabang lama sampai WordPress 4.7.

Yang menarik: tiga dari tujuh perbaikan dilaporkan oleh Anthropic. Sejak Juli 2026 hampir setiap rilis keamanan WordPress mencantumkan perusahaan AI sebagai pelapor, kecuali 7.1.2. Perburuan kerentanan sudah berpindah ke tangan model AI, dan ritmenya jauh lebih cepat dari sebelumnya.

Karena itu update WordPress 7.1.3 bukan pekerjaan opsional akhir bulan. Penyerang mulai mengintai kerentanan 7.1.2 hanya dalam hitungan jam setelah tambalan keluar, jadi jendela aman Anda dihitung dalam jam, bukan minggu.

Saya cek antond.net, dan ini hasilnya

Untuk artikel yang membahas keamanan WordPress, klaim tanpa bukti hanya menambah kepanikan. Jadi pada 8 Oktober 2026 pagi saya memeriksa situs saya sendiri lewat halaman depan dan berkas readme plugin:

  • WordPress versi 7.1.2. Artinya antond.net belum menerima tambalan 7.1.3 dan harus diperbarui hari ini juga. Ini fakta, bukan pengakuan heroik: begitu tulisan ini terbit, saya sudah menjadwalkan updatenya.
  • WooCommerce 10.4.4 terpasang, tetapi bukan WPC Product Bundles for WooCommerce dan bukan Ninja Forms. Dua plugin yang menjadi vektor kampanye ini tidak ada di antond.net, sehingga jalur injeksi lewat pesanan WooCommerce dan formulir Ninja Forms tidak terbuka.
  • Elementor, Elementor Pro, Element Pack Pro 9.0.7 (BdThemes), Contact Form 7, dan beberapa plugin lain ikut terpasang. Perlu Anda ketahui, BdThemes sendiri pernah menjadi korban insiden rantai pasokan pada Agustus 2026 ketika file JSON banner promosi mereka diracuni. Itu insiden terpisah yang sudah tertangani, tapi mengingatkan saya bahwa plugin besar dengan pembaruan otomatis tetap perlu dipantau.

Kesimpulan jujurnya: antond.net tidak terkena kampanye ini, tetapi ia tertinggal satu versi keamanan. Persis seperti mayoritas website bisnis di Indonesia yang jarang memperbarui inti WordPress karena takut tampilan halaman berubah.

Catatan kedua: laporan ini juga menegaskan pelajaran dari artikel backdoor WordPress yang saya tulis awal bulan ini: menghapus file yang mencurigakan tidak cukup, karena serangan modern justru dirancang agar file kembali muncul. Bedanya, kampanye kali ini menyembunyikan jejak lewat must-use plugin dan waktu file yang dimanipulasi.

Monitor server menampilkan indikator status dan peringatan

Langkah pemeriksaan yang bisa Anda jalankan hari ini

Jangan mulai dari panel keamanan berbayar. Mulai dari halaman ini, yang bisa dijalankan siapa pun yang punya akses phpMyAdmin atau WP-CLI:

-- Cari semua pengguna dengan hak administrator, apa adanya dari database
SELECT u.ID, u.user_login, u.user_email, u.user_registered, m.meta_value
FROM wp_users u
JOIN wp_usermeta m ON u.ID = m.user_id
WHERE m.meta_key = 'wp_capabilities'
  AND m.meta_value LIKE '%administrator%';

Bandingkan hasilnya dengan daftar di layar Pengguna. Jika muncul nama yang tidak Anda kenal, atau layar Pengguna menampilkan tiga orang sementara query mengembalikan empat, situs Anda kemungkinan besar sedang dikompromikan.

Lanjutkan dengan pemeriksaan berikut:

  • Buka folder wp-content/plugins/. Cari direktori wp-smart-thumbnails. Jika ada, jangan hanya menghapusnya dari layar Plugin, hapus direktorinya lewat FTP/SFTP.
  • Buka wp-content/mu-plugins/. Apa pun isinya yang tidak Anda pasang sendiri, catat namanya lalu hapus, terutama file yang diawali class-wp-query- dan class-wp-token-validate.
  • Jalankan pemeriksaan opsi: SELECT option_name FROM wp_options WHERE option_name IN ('fz_emer_done_v1','fz_emer_login_tokens'); Hapus kedua opsi jika ada, setelah file must-use dihapus terlebih dahulu.
  • Cari _wplogin di log akses situs Anda. Kemunculannya berarti seseorang sudah memakai pintu magic login.
  • Blokir imgcdn1.com di firewall, DNS, atau filter proxy Anda.
  • Jika satu saja dari penanda di atas ditemukan, anggap semua kata sandi admin sebagai bocor. Ganti kata sandi administrator tertua, ganti seluruh WordPress authentication salts di wp-config.php, dan login ulang di semua perangkat.
  • Terakhir, perbarui inti WordPress ke 7.1.3 dan plugin yang menyediakan versi 8.6.7 (WPC Product Bundles) atau 3.15.4 (Ninja Forms) ke atas.

Penting: memperbarui plugin mencegah infeksi baru, tetapi tidak membersihkan infeksi yang sudah terjadi. Patchstack menegaskan ini berkali-kali. Situs yang sudah terlanjur terpapar harus dibersihkan lewat langkah 1 sampai 6.

Yang perlu Anda ambil hari ini

Celah ini bukan soal kelalaian teknis yang rumit. Ia memanfaatkan kebiasaan paling manusiawi di dunia WordPress: admin membuka data yang masuk tanpa berpikir dua kali, lalu menunda update karena sibuk. Selama dua kebiasaan itu tidak berubah, kampanye serupa akan terus muncul dengan nama plugin yang berbeda.

Untuk pemilik website UMKM, pesannya ada tiga. Pertama, daftar pengguna bukan alat deteksi yang cukup lagi. Kedua, update inti WordPress 7.1.3 hari ini, bukan minggu depan. Ketiga, kalau Anda tidak punya waktu memeriksa, serahkan pada penyedia hosting atau developer yang rutin melakukan audit minimal satu kali sebulan.

Apakah saya wajib menghapus plugin formulir saya? Tidak. Ninja Forms aman selama Anda memperbarui ke 3.15.4 atau lebih baru. Yang berbahaya adalah versi 3.15.3 ke bawah yang masih membuka layar pengelolaan submission lama.

Kalau saya tidak memakai kedua plugin itu, apakah saya aman? Sebagian. Jalur infeksi kampanye ini tertutup, tetapi tahap pasca-eksploitasi payload ini bersifat netral terhadap plugin. Artinya celah XSS lain di plugin mana pun bisa mengirim payload yang sama. Tetap lakukan pemeriksaan admin dan folder mu-plugins.

Berapa lama saya harus menyimpan log untuk bisa menyelidiki? Minimal 30 hari. Eksploitasi pertama tercatat pada 4 Oktober pukul 10:39 UTC, dan satu-satunya penanda jaringan yang dipublikasikan adalah domain imgcdn1.com. Tanpa log, Anda hanya bisa menebak.

Sumber laporan ini: analisis Patchstack “Four ways back in: the WordPress XSS campaign that hides its own admin account” (6 Oktober 2026), pemberitaan BleepingComputer (6 Oktober 2026), catatan teknis Threadlinqs, serta pengumuman rilis WordPress 7.1.3 di wordpress.org. Semua angka versi, CVE, dan tanggal di artikel ini sudah dicocokkan dari minimal dua sumber yang berbeda.

Posted in WordPressTags: