Gocelerus

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 WordPress kena malware — cara bersihkan lewat cPanel

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 .php baru di folder yang seharusnya tidak berisi PHP, misalnya wp-content/uploads/.
  • Muncul user admin yang kamu tidak kenal di WordPress.
  • Halaman aneh terindeks di Google — coba cari site:domainkamu.com dan 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.

  1. Masuk cPanel → Backup Wizard → Back Up → Full Account Backup, atau minimal download backup Home Directory dan database.
  2. Simpan hasilnya di laptop, beri nama yang jelas, misalnya sebelum-bersih-2026-10-23.
  3. 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.

  1. Buka File Manager di cPanel, masuk ke folder public_html.
  2. Klik Settings di kanan atas, centang Show Hidden Files (dotfiles) supaya .htaccess ikut terlihat.
  3. 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 <?php pada index.php atau wp-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.

  1. Download WordPress versi yang sama dengan yang kamu pakai dari wordpress.org.
  2. Hapus folder wp-admin dan wp-includes di server lewat File Manager. Jangan sentuh wp-content dan wp-config.php.
  3. Upload ulang wp-admin dan wp-includes dari paket yang baru didownload, plus semua file .php di root (kecuali wp-config.php).
  4. 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.

  1. Di WordPress buka Users → All Users, urutkan berdasarkan tanggal daftar. Hapus akun administrator yang tidak kamu kenal.
  2. Buka phpMyAdmin di cPanel, pilih database website, lalu tabel wp_options. Cek baris siteurl dan home — keduanya harus berisi domainmu.
  3. Di tabel yang sama, cari isi mencurigakan pada opsi yang autoload, misalnya script <script src="..."> di field yang seharusnya teks biasa.
  4. Kembali ke cPanel, buka Cron Jobs. Cron yang memanggil curl atau wget ke 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.

  1. cPanel → Password & Security: ganti password akun cPanel.
  2. cPanel → FTP Accounts: hapus akun FTP yang tidak dipakai, ganti password sisanya.
  3. cPanel → MySQL Databases: ganti password user database, lalu update nilai DB_PASSWORD di wp-config.php.
  4. WordPress: ganti password semua user administrator.
  5. Buka generator salt resmi WordPress, salin hasilnya, dan ganti blok AUTH_KEY sampai NONCE_SALT di wp-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 644 dan folder ke 755. Jangan pernah pakai 777.

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.

Related