Blog · 23 Oct 2026 · 4 min read
Website WordPress kena malware — cara bersihkan lewat cPanel
Website tiba-tiba redirect ke situs judi atau Google kasih peringatan? Ini urutan langkah membersihkan malware WordPress lewat cPanel, dari mencari file yang disisipi sampai menutup celah masuknya.
By Tim Gocelerus
Website kamu tiba-tiba redirect ke situs judi kalau dibuka dari HP, atau Google menampilkan peringatan "Situs ini mungkin diretas" di hasil pencarian. Panik itu wajar, tapi urutan langkahnya menentukan apakah malware benar-benar hilang atau balik lagi minggu depan.
Pastikan dulu ini memang malware
Beberapa gejala sering disalahartikan. Sebelum bongkar file, cek dulu:
- Redirect hanya dari Google atau hanya di HP — ciri khas malware, karena skripnya memeriksa referer dan user agent.
- Ada file
.phpbaru di folder yang seharusnya tidak berisi PHP, misalnyawp-content/uploads/. - Muncul user admin yang kamu tidak kenal di WordPress.
- Halaman aneh terindeks di Google — coba cari
site:domainkamu.comdan lihat apakah ada judul berbahasa asing. - Website putih total atau error 500 — ini lebih sering masalah plugin atau PHP, bukan malware. Cek dulu error log di cPanel: menu Metrics → Errors.
Kalau kamu punya akses ke Google Search Console, buka bagian Security & Manual Actions → Security Issues. Di sana biasanya Google menyebutkan contoh URL yang bermasalah — itu petunjuk paling cepat untuk tahu file mana yang kena.
Langkah 0: bikin salinan sebelum menghapus apa pun
Jangan langsung hapus file mencurigakan. Kalau salah hapus, website mati dan kamu tidak punya bahan untuk investigasi.
- Masuk cPanel → Backup Wizard → Back Up → Full Account Backup, atau minimal download backup Home Directory dan database.
- Simpan hasilnya di laptop, beri nama yang jelas, misalnya
sebelum-bersih-2026-10-23. - Tandai backup ini sebagai terinfeksi. Jangan pernah dipakai untuk restore tanpa dibersihkan dulu.
Kalau hosting kamu punya backup otomatis harian, cek juga tanggal-tanggal backup yang tersedia. Backup dari sebelum tanggal infeksi jauh lebih berguna daripada membersihkan file satu per satu.
1. Cari tahu kapan file berubah
Malware hampir selalu meninggalkan jejak waktu modifikasi.
- Buka File Manager di cPanel, masuk ke folder
public_html. - Klik Settings di kanan atas, centang Show Hidden Files (dotfiles) supaya
.htaccessikut terlihat. - Klik header kolom Last Modified untuk mengurutkan dari yang paling baru.
File inti WordPress seharusnya punya tanggal yang sama dengan tanggal update terakhir. Kalau ada satu file .php di wp-includes/ yang berubah tiga hari lalu padahal kamu tidak update apa-apa, itu kandidat kuat.
Kalau paket hosting kamu menyediakan Terminal atau akses SSH (tidak semua shared hosting mengaktifkannya), perintah ini lebih cepat:
cd ~/public_html
find . -name "*.php" -mtime -7 -ls
Artinya: tampilkan semua file PHP yang berubah dalam 7 hari terakhir. Ubah angkanya sesuai perkiraan kapan masalah mulai muncul.
2. Scan dengan tool yang tersedia di cPanel
Di cPanel ada beberapa kemungkinan, tergantung apa yang dipasang penyedia hostingmu:
- Imunify360 — kalau tersedia, buka dan lihat tab daftar file yang terdeteksi malware. Biasanya ada opsi cleanup per file.
- Virus Scanner (ClamAV) — hanya muncul kalau host mengaktifkannya. Pilih Scan Entire Home Directory.
- ImunifyAV — versi scan-only, menampilkan daftar file terinfeksi tanpa pembersihan otomatis.
Kalau tidak ada satu pun, jangan buang waktu mencari di menu lain — langsung lanjut ke pencarian manual. Scanner juga bukan jaminan: file bersih menurut scanner belum tentu benar-benar bersih, dan sebaliknya banyak plugin sah yang kena false positive.
3. Pola kode yang sering dipakai
Dengan Terminal, pencarian pola ini sering langsung kena sasaran:
grep -rEl "eval\(|base64_decode\(|gzinflate\(|str_rot13\(|assert\(" \
~/public_html --include=*.php
Tanpa Terminal, File Manager punya fitur Search di bagian atas — pilih "All Your Files" dan ketik base64_decode. Pencariannya lebih lambat tapi jalan.
Penting: fungsi-fungsi ini tidak otomatis berarti malware. Beberapa plugin lisensi dan library sah memakainya. Yang perlu dicurigai adalah:
- Satu baris sangat panjang tanpa spasi, biasanya di baris paling atas file.
- File PHP di
wp-content/uploads/,wp-content/cache/, atau folder gambar. - Nama file yang meniru file asli, misalnya
wp-conf.php,wp-login.bak.php,index2.php. - Kode yang disisipkan di atas
<?phppadaindex.phpatauwp-config.php.
Buka setiap file kandidat dengan Edit atau View di File Manager sebelum memutuskan.
4. Ganti file inti WordPress dengan versi bersih
Cara paling cepat dan aman membersihkan file inti adalah menimpanya, bukan mengedit satu-satu.
- Download WordPress versi yang sama dengan yang kamu pakai dari wordpress.org.
- Hapus folder
wp-admindanwp-includesdi server lewat File Manager. Jangan sentuhwp-contentdanwp-config.php. - Upload ulang
wp-admindanwp-includesdari paket yang baru didownload, plus semua file.phpdi root (kecualiwp-config.php). - Masuk ke WordPress, buka Dashboard → Updates, klik Re-install Now untuk memastikan versinya konsisten.
Untuk plugin dan tema: hapus semuanya, lalu install ulang dari repository resmi atau dari file pembelian aslimu. Tema atau plugin nulled adalah salah satu jalan masuk paling umum — kalau ada, jangan dipasang lagi.
Jangan lupa cek file .htaccess di public_html dan di dalam wp-admin. Aturan RewriteRule yang mengarah ke domain asing harus dihapus. Setelah itu buka Settings → Permalinks di WordPress dan klik Save Changes untuk menulis ulang aturan standar.
5. Periksa database dan user
Malware sering menanam pintu belakang di database, bukan cuma di file.
- Di WordPress buka Users → All Users, urutkan berdasarkan tanggal daftar. Hapus akun administrator yang tidak kamu kenal.
- Buka phpMyAdmin di cPanel, pilih database website, lalu tabel
wp_options. Cek barissiteurldanhome— keduanya harus berisi domainmu. - Di tabel yang sama, cari isi mencurigakan pada opsi yang autoload, misalnya script
<script src="...">di field yang seharusnya teks biasa. - Kembali ke cPanel, buka Cron Jobs. Cron yang memanggil
curlatauwgetke alamat asing hampir pasti bukan buatanmu.
Prefix tabel bisa berbeda dari wp_ kalau instalasimu memakai prefix khusus. Cek nilainya di wp-config.php.
6. Ganti semua kredensial
Membersihkan file tanpa ganti password sama saja membiarkan pintunya terbuka.
- cPanel → Password & Security: ganti password akun cPanel.
- cPanel → FTP Accounts: hapus akun FTP yang tidak dipakai, ganti password sisanya.
- cPanel → MySQL Databases: ganti password user database, lalu update nilai
DB_PASSWORDdiwp-config.php. - WordPress: ganti password semua user administrator.
- Buka generator salt resmi WordPress, salin hasilnya, dan ganti blok
AUTH_KEYsampaiNONCE_SALTdiwp-config.php. Ini memaksa semua sesi login yang ada keluar, termasuk sesi penyerang.
Pakai password acak minimal 16 karakter dan simpan di password manager, jangan di catatan WhatsApp.
7. Tutup celah masuknya
Setelah bersih, kurangi kemungkinan kejadian berulang:
- Update WordPress, semua plugin, dan tema. Plugin yang sudah tidak di-update pengembangnya sebaiknya diganti.
- Hapus plugin dan tema yang tidak aktif — file tidak aktif tetap bisa dieksekusi.
- Aktifkan autentikasi dua faktor untuk akun admin WordPress.
- Larang eksekusi PHP di folder upload dengan membuat file
wp-content/uploads/.htaccess:
<FilesMatch "\.(php|phtml|php5|php7|phps)$">
Require all denied
</FilesMatch>
Aturan ini berlaku di Apache 2.4 dan LiteSpeed. Di server lama dengan Apache 2.2 sintaksnya berbeda, jadi tes dulu: upload satu gambar lewat Media Library dan pastikan tampil normal setelah aturan dipasang.
- Set permission file ke
644dan folder ke755. Jangan pernah pakai777.
8. Minta Google mencabut peringatan
Kalau website sempat ditandai, buka Google Search Console → Security Issues → Request Review. Jelaskan singkat apa yang kamu bersihkan. Review butuh waktu, dan kalau masih ada sisa malware permintaannya akan ditolak — jadi pastikan benar-benar bersih dulu dengan scan ulang.
Setelah bersih, jaga rutinitasnya
Pembersihan manual itu melelahkan, dan satu file yang terlewat cukup untuk mengulang semuanya. Yang paling menolong biasanya hal membosankan: update rutin, password unik, dan backup yang bisa kamu pakai untuk balik ke kondisi sebelum infeksi.
Kalau hosting kamu sekarang tidak menyediakan scanner atau backup harian, itu pertimbangan yang wajar saat memilih tempat baru. Gocelerus adalah hosting cPanel untuk Asia Tenggara dengan server di Singapura, Imunify360, dan backup harian; migrasi website yang sudah jalan dikerjakan tim secara gratis.