Cara Scan Kode Berbahaya pada File PHP Menggunakan Perintah grep
Serangan malware pada website berbasis PHP sering kali tidak langsung terlihat. Salah satu teknik yang paling sering digunakan oleh hacker adalah menyisipkan kode berbahaya (backdoor) ke dalam file PHP dengan fungsi seperti eval(), base64_decode(), dan gzinflate().
Artikel ini akan membahas cara mendeteksi kode PHP berbahaya menggunakan perintah grep di server Linux, khususnya pada folder website.
Mengapa eval() Berbahaya?
Fungsi eval() dalam PHP memungkinkan server menjalankan kode PHP dari sebuah string. Jika dikombinasikan dengan:
base64_decode()gzinflate()input dari user (
$_GET,$_POST, dll)
maka fungsi ini sering digunakan sebagai remote shell / backdoor oleh penyerang.
Contoh kode berbahaya:
eval(base64_decode($kode));
eval(gzinflate(base64_decode($_POST['cmd'])));Persiapan Sebelum Scan
Pastikan:
Anda memiliki akses SSH / Terminal
Ganti
myuserdengan username cPanel AndaFolder website berada di:
/home/myuser/public_html1️⃣ Scan eval() + base64_decode
Perintah:
grep -R "eval.*base64_decode" /home/myuser/public_html --include="*.php"
Fungsi Scan:
Mendeteksi file PHP yang mengandung:
eval(base64_decode(...))
Interpretasi Hasil:
✅ Tidak ada output → Aman
❌ Ada file muncul → Indikasi kuat malware
📌 OJS, Moodle, dan WordPress tidak menggunakan pola ini di core resminya.
2️⃣ Scan eval() + gzinflate
Perintah:
grep -R "eval.*gzinflate" /home/myuser/public_html --include="*.php"
Fungsi Scan:
Mendeteksi teknik obfuscation (penyamaran kode) yang sering dipakai hacker, seperti:
eval(gzinflate(base64_decode($data)));
Interpretasi Hasil:
✅ Kosong → Aman
❌ Ada output → File terinfeksi
3️⃣ Scan eval() + Variabel Superglobal ($_GET, $_POST, dll)
Perintah:
grep -R "eval.*\$_" /home/myuser/public_html --include="*.php"
Fungsi Scan:
Mendeteksi kemungkinan Remote Code Execution (RCE), misalnya:
eval($_POST['cmd']);
eval($_REQUEST['x']);
Catatan Penting ⚠️
Hasil scan tidak selalu berarti malware, karena:
Library resmi (seperti Smarty Template Engine)
Framework (CodeIgniter, Moodle, OJS)
juga menggunakan variabel internal seperti:
$_smarty_var
$_params
$_attr
👉 Perlu dianalisis manual jika ada output.
Contoh Hasil Scan yang Aman
lib/pkp/lib/vendor/smarty/...
plugins/tinymce/...
Biasanya berasal dari:
Smarty
TinyMCE
Framework resmi
Ini AMAN, selama tidak mengandung base64_decode atau input user langsung.
Contoh Kode yang PASTI BerbahAYA
eval(base64_decode($_POST['x']));
eval(gzinflate(base64_decode($_REQUEST['cmd'])));
Jika menemukan kode seperti ini:
❌ Jangan diedit
❌ Jangan dikomentari
✅ Ganti file dari source resmi
✅ Atau lakukan install ulang aplikasi
Tips Tambahan Agar Hasil Lebih Bersih
Supaya pesan error tidak muncul:
grep -R "eval.*base64_decode" /home/myuser/public_html --include="*.php" 2>/dev/nullKesimpulan
| Scan | Tujuan | Risiko |
|---|---|---|
eval + base64_decode | Deteksi backdoor | ❌ Sangat tinggi |
eval + gzinflate | Deteksi obfuscation | ❌ Sangat tinggi |
eval + $_ | Deteksi RCE | ⚠️ Perlu analisa |
Jika dua scan pertama kosong, maka website Anda hampir pasti aman dari backdoor PHP.
Penutup
Melakukan scan manual dengan grep adalah langkah wajib setelah:
Website kena hack
Upload plugin/theme dari sumber tidak resmi
Migrasi server
Upgrade PHP versi besar
Untuk keamanan maksimal:
Gunakan source resmi
Update aplikasi secara berkala
Batasi permission file
Nonaktifkan fungsi PHP berbahaya jika memungkinkan
No comments:
Post a Comment