Panduan langkah demi langkah — dari deteksi hingga verifikasi
Webshell adalah backdoor berbasis web — file PHP jahat yang memungkinkan hacker mengendalikan server Anda dari browser. Cukup dengan mengakses satu URL, hacker bisa membaca file, mengubah database, upload malware baru, bahkan mengambil alih seluruh akun hosting.
Dalam studi kasus terbaru kami, 24 webshell ditemukan di satu akun hosting — tersembunyi di setiap direktori website, menunggu untuk diaktifkan.
Panduan ini akan menunjukkan cara mendeteksi, membersihkan, dan mencegah webshell.
1 Cari file PHP dengan ukuran mencurigakan
tf88.php, 1.php, x.phpVroC4lVHXdefault.php, n0tes.php, wp-cache.php2 Cek pola obfuskasi
Webshell biasanya menggunakan fungsi-fungsi ini untuk menyembunyikan kode:
eval(base64_decode(...))
gzinflate(...)
str_rot13(...)
preg_replace('/.*e/', ...) # e modifier (PHP <7)
Cari file yang mengandung eval(, base64_decode, atau gzinflate bersamaan.
3 Cek file terbaru / termodifikasi
Di cPanel → File Manager, urutkan file berdasarkan tanggal modifikasi. Webshell biasanya muncul di tanggal yang sama dengan insiden.
4 Gunakan Python untuk scan massal
Untuk hosting dengan banyak direktori, scan satu-satu lewat cPanel tidak efisien. Gunakan script sederhana via FTP:
import ftplib
ftp = ftplib.FTP()
ftp.connect("ftp.anda.com", 21, timeout=15)
ftp.login("user@domain", "password")
# Cek file webshell di setiap direktori
for dir in daftar_direktori:
ftp.cwd(dir)
try:
size = ftp.size("VroC4lVHXdefault.php")
print(f"⚠️ DITEMUKAN: {dir}/VroC4lVHXdefault.php ({size} bytes)")
except:
pass
5 Hapus file via FTP
ftp.delete("VroC4lVHXdefault.php")
# Ulangi untuk semua file webshell yang ditemukan
Atau via cPanel → File Manager → klik kanan → Delete.
6 Jangan lupa marker files
Hacker biasanya meninggalkan file marker (0 bytes) sebagai "daftar sudah dikunjungi".
Dalam kasus kami, ada 22 file tf88.php (0 bytes) yang tersebar di hosting.
File ini sendiri tidak berbahaya, tapi jadi petunjuk bagi hacker lain bahwa hosting ini sudah pernah ditembus.
7 Hapus directory lister
Jika ditemukan file default.php, index.php palsu, atau script
directory listing — hapus juga. Ini alat navigasi hacker.
8 Scan ulang seluruh direktori
Pastikan tidak ada file webshell yang tersisa:
# Verifikasi semua folder
for dir in daftar_direktori:
ftp.cwd(dir)
for nama_file in ["VroC4lVHXdefault.php", "tf88.php", "default.php"]:
try:
size = ftp.size(nama_file)
print(f"❌ MASIH ADA: {dir}/{nama_file}")
except:
print(f"✅ Bersih: {dir}")
print("🎉 Selesai!")
Membersihkan webshell itu seperti mengobati luka. Tapi penyebab lukanya — celah keamanan — harus ditutup. Kalau tidak, hacker akan masuk lagi dari pintu yang sama.
Dalam penanganan insiden baru-baru ini, kami menemukan pola yang sama: satu plugin vulnerable menyebabkan 24 webshell tersebar di 18 website. Total ~37 MB malware dibersihkan dalam waktu kurang dari 24 jam.
Bedanya dengan panduan di atas: kami menggunakan script otomatis untuk scan, delete, dan verifikasi — karena melakukannya manual untuk 24 direktori akan memakan waktu berjam-jam.
📖 Baca juga: Satu Plugin Bobolkan 18 Website
🏢 Kenapa Shared Hosting Bahaya untuk Multi-Site
Website Anda pernah kena hack? Atau ingin audit keamanan?
Kami bantu bersihkan dan amankan — dari 1 website hingga 1 akun hosting penuh.