Situs tiba-tiba redirect ke iklan aneh. CPU hosting melonjak. Google Search Console mulai mengirim peringatan. Kamu tahu ada yang salah, tetapi pertanyaan paling berbahaya justru muncul setelah itu: mulai dari mana?
Kalau kamu menangani compromised WordPress hosting, jangan langsung hapus file, restore backup, atau install plugin keamanan baru. Urutan respons menentukan apakah situs benar-benar pulih, atau cuma terlihat bersih selama dua hari sebelum backdoor aktif lagi.
Jawaban Singkat / Key Takeaways
Incident response playbook untuk compromised WordPress hosting harus dimulai dari containment, preservasi bukti, identifikasi vektor masuk, cleanup, rotasi kredensial, restore bersih, lalu postmortem. Jangan restore terlalu cepat karena kamu bisa menghapus bukti sekaligus menghidupkan ulang celah yang sama.

Fase 1: Containment, Bekukan Kerusakan Dulu
Tujuan pertama bukan membersihkan. Tujuan pertama adalah menghentikan penyerang agar tidak memperluas akses. Selain itu, kamu perlu menjaga bukti supaya akar masalah bisa ditemukan.
- Aktifkan maintenance mode atau blokir trafik publik sementara.
- Batasi wp-admin hanya dari IP tim respons.
- Nonaktifkan eksekusi PHP di
/wp-content/uploads/. - Ambil snapshot server, file, database, access log, error log, auth log.
- Jangan hapus file mencurigakan sebelum dicatat hash, path, timestamp.
Kalau kamu memakai managed hosting, segera buka tiket eskalasi dengan kata kunci jelas: suspected compromise, preserve logs, isolate site, do not auto-clean yet. Dengan begitu, support hosting tidak buru-buru menjalankan cleanup otomatis yang menghapus jejak penting.
Fase 2: Triage, Cari Pintu Masuk yang Paling Mungkin
Insiden WordPress jarang dimulai dari “hacker jenius”. Biasanya, pintunya sederhana: plugin rentan, password bocor, file manager terbuka, credential FTP lama, atau panel hosting tanpa MFA.
Mulai dari bukti yang paling cepat memberi sinyal:
- Access log: POST aneh ke admin-ajax.php, REST API, xmlrpc.php, upload endpoint.
- File system: PHP baru di uploads, mu-plugins asing, theme file berubah.
- Database: admin user baru, option siteurl berubah, script asing di post content.
- Hosting panel: login dari negara asing, cron job baru, SSH key asing.
- DNS/CDN: record berubah, page rule redirect, token API bocor.
Untuk checklist pola log yang lebih dalam, kamu bisa sambungkan dengan panduan internal ini: 7 pola log saat situs dieksploitasi. Selain itu, lihat juga file integrity monitoring WordPress agar perubahan file berikutnya tidak lolos diam-diam.
Jangan Restore Dulu, Buat “Peta Ledakan”
Ini bagian yang sering terasa berlawanan dengan insting. Saat situs rusak, restore backup terlihat seperti solusi tercepat. Namun, restore sebelum tahu blast radius bisa membuatmu mengembalikan backdoor lama, plugin rentan, atau akun admin palsu.
Pakai framework sederhana: Akses, Eksekusi, Persistensi, Eksfiltrasi.
- Akses: bagaimana penyerang masuk?
- Eksekusi: kode apa yang berhasil dijalankan?
- Persistensi: backdoor apa yang dipasang agar bisa balik lagi?
- Eksfiltrasi: data apa yang mungkin keluar?
Kalau empat area ini belum dijawab, situs belum siap dinyatakan pulih. Minimal, dokumentasikan asumsi dan bukti yang mendukungnya.

Fase 3: Cleanup yang Aman, Bukan Sekadar Scan
Scanner malware membantu, tetapi jangan jadikan satu-satunya sumber kebenaran. Banyak backdoor WordPress terlihat seperti kode plugin biasa, apalagi jika disisipkan di theme custom atau mu-plugin.
- Ganti core WordPress dari sumber resmi.
- Reinstall plugin dan theme dari repository atau vendor resmi.
- Hapus plugin dan theme tidak terpakai.
- Cek
wp-config.php,.htaccess,user.ini, cron, mu-plugins. - Audit tabel
wp_users,wp_options,wp_posts, danwp_postmeta. - Bandingkan file dengan backup bersih atau Git baseline.
Rujukan resmi WordPress soal hardening tetap layak jadi baseline: WordPress Security Hardening. Untuk daftar kerentanan plugin, cek Wordfence Threat Intelligence atau WPScan Vulnerability Database.
Fase 4: Rotasi Kredensial, Anggap Semua Bocor
Setelah compromised WordPress hosting, jangan cuma ganti password admin. Penyerang mungkin sudah membaca config, mengambil token API, atau menanam SSH key baru. Karena itu, rotasi harus menyentuh seluruh rantai akses.
- Password semua admin WordPress.
- Database user dan password di
wp-config.php. - Salt WordPress dari WordPress Salt API.
- FTP, SFTP, SSH, hosting panel, email admin.
- Cloudflare/CDN API token, backup storage key, SMTP credential.
- Git deploy key, CI/CD secret, webhook token.
Setelah itu, aktifkan MFA di semua pintu penting. Kalau butuh panduan konteksnya, baca 5 pintu akses WordPress yang sering dilupakan.
Fase 5: Restore Bersih dan Validasi Sebelum Go Live
Restore terbaik bukan backup paling baru. Restore terbaik adalah backup terakhir yang terbukti bersih dan berada sebelum waktu kompromi. Karena itu, timeline insiden sangat penting.
- Restore ke staging terisolasi.
- Patch core, plugin, theme sebelum publik.
- Scan file dan database setelah restore.
- Uji login, form, checkout, cron, webhook.
- Aktifkan WAF, rate limit, dan monitoring file.
- Baru arahkan trafik publik setelah validasi selesai.
Kalau backup-mu belum pernah diuji restore, anggap belum punya backup. Panduan tambahan: strategi backup WordPress yang benar-benar bisa dipulihkan.

Fase 6: Postmortem, Ubah Insiden Jadi Kontrol Baru
Postmortem bukan sesi mencari kambing hitam. Justru, ini cara paling murah untuk mencegah insiden kedua. Buat dokumen singkat, praktis, dan bisa dieksekusi.
- Timeline dari deteksi sampai pemulihan.
- Root cause dan bukti teknisnya.
- Data yang terdampak atau berisiko.
- Kontrol yang gagal atau belum ada.
- Action item, owner, deadline.
- Perubahan SOP untuk agency atau tim support.
Untuk agency, tambahkan template komunikasi klien. Jelaskan apa yang terjadi, apa yang sudah dilakukan, apa risiko tersisa, dan apa perubahan pencegahannya. Transparansi yang rapi biasanya lebih menenangkan daripada janji “sudah aman kok” tanpa bukti.
Checklist 60 Menit Saat Hosting WordPress Compromised
- 0-10 menit: isolasi situs, batasi akses admin, buka tiket hosting.
- 10-20 menit: snapshot file, DB, log, daftar user, cron, config.
- 20-35 menit: triage log, file baru, admin asing, plugin rentan.
- 35-45 menit: blokir vektor aktif, nonaktifkan eksekusi PHP di uploads.
- 45-55 menit: rotasi akses kritis, cabut token, paksa logout semua user.
- 55-60 menit: putuskan jalur restore, cleanup, atau rebuild.
FAQ
Apakah saya harus langsung restore backup saat WordPress kena hack?
Belum tentu. Ambil bukti dan tentukan perkiraan waktu kompromi dulu. Jika restore dilakukan terlalu cepat, kamu bisa menghapus jejak penting atau mengembalikan backup yang sudah terinfeksi.
Apa tanda compromised WordPress hosting paling umum?
Tandanya bisa berupa redirect aneh, file PHP di uploads, admin user asing, CPU hosting melonjak, cron job baru, perubahan .htaccess, atau peringatan malware dari Google Search Console.
Apakah plugin security cukup untuk cleanup?
Tidak cukup. Plugin security membantu deteksi, tetapi cleanup tetap perlu audit file, database, credential, log, dan konfigurasi hosting. Backdoor sering bersembunyi di area yang terlihat normal.
Penutup: Pulih Itu Bukan “Situs Bisa Dibuka Lagi”
Situs yang bisa dibuka belum tentu bersih. Incident response playbook yang benar memastikan akses penyerang terputus, backdoor hilang, kredensial diputar, backup tervalidasi, dan kontrol baru dipasang.
Kalau kamu mengelola banyak situs klien, simpan playbook ini sebagai SOP darurat. Ingin update checklist keamanan WordPress yang praktis dan langsung bisa dipakai? Langganan newsletter Google kami di bawah ini.



