Webshell Tersembunyi: 5 Tanda Rahasia yang Kamu Lepasin

Mari kita ngobrol soal sesuatu yang sering diabaikan admin WordPress setelah situs kena hack: deteksi IOC manual. Ya, banyak yang mengandalkan plugin security saja, tapi paham dulu, tapi setelah serangan terjadi, plugin itu kadang nggak ketemu webshell yang udah disembunyikan baik-baik. Kita perlu cara lama tapi efektif: melakukannya manual, pakai mata dan perintah terminal.

Key Takeaways
Deteksi IOC manual mencari jejak penyerang lewat pemeriksaan file, log, dan database tanpa mengandalkan signature alat otomatis. Cara ini efektif untuk menemukan webshell yang menggunakan obfuskasi atau disisipkan ke file legit. Langkah utama: verifikasi integritas file, cari fungsi PHP berbahaya, telusuri log akses, periksa database, dan lihat file baru atau berubah.

Apa itu Deteksi IOC Manual dan Mengapa Perlu?
IOC (Indicators of Compromise) adalah jejak yang ditinggalkan penyerang – bisa berupa file baru, perubahan kode, log aneh, atau aktivitas database yang mencurigakan. Untuk webshell WordPress, IOC sering berupa file PHP aneh di wp-content/uploads atau fungsi berbahaya seperti eval(base64_decode(…)).

Kenapa harus manual? Karena scanner otomatis kadang hanya match signature yang lama. Penyerang sekarang suka obfuskasi kode, ganti nama file, atau menyisipkan backdoor ke dalam file legit seperti functions.php tema anak. Jadi, kita perlu lihat sendiri.

Langkah-langkah Praktis Deteksi IOC Manual
1. Cek Integritas File dengan Hash dan Timestamp
Download versi WordPress yang sama dengan yang kamu pakai dari wordpress.org. Ekstrak ke folder sementara, gunakan perintah find dan sha256sum untuk membuat hash, lalu bandingkan dengan hash resmi. File inti seperti wp-includes dan wp-admin harus sama persis.

Contoh perintah:
find . -type f -name “*.php” -not -path “./wp-content/*” -exec sha256sum {} \; > /tmp/current_hashes.txt
diff /tmp/official_hashes.txt /tmp/current_hashes.txt

Jika ada perbedaan, itu tanda ada perubahan – bisa jadi exploit atau backdoor.

2. Cari Fungsi PHP Berbahaya
Gunakan grep untuk mencari pola seperti eval, base64_decode, system, exec, dll. Contoh: grep -Rn “eval” *.php. Jika menemukan di wp-content/uploads atau plugin yang tidak kamu instal, itu sangat mencurigakan.

Contoh perintah:
grep -Rn “eval\s*(” . –include=”*.php”
grep -Rn “base64_decode” . –include=”*.php”
grep -R -E “exec|shell_exec|passthru|popen|proc_open” . –include=”*.php”
grep -Rn “gzinflate.*str_rot13″ . –include=”*.php”

3. Periksa File wp-config.php dan .htaccess
Periksa baris tambahan di wp-config.php seperti define(‘WP_DEBUG_LOG', true); atau @include ‘/tmp/.hidden/shell.php'. Cek .htaccess untuk rule yang mengarahkan ke file PHP aneh seperti:
RewriteRule ^(.*)$ /wp-content/uploads/2024/06/backdoor.php [L]

4. Telusuri Database untuk Admin dan Options Tersembunyi
Gunakan wp user list untuk melihat user admin yang tidak dikenal, dan query database untuk entry seperti option_value LIKE ‘%eval%' atau ‘%base64%'. Lihat postingan terkait tentang verifikasi integritas plugin/tema WordPress.

Contoh WP-CLI:
wp user list
wp db query “SELECT * FROM wp_options WHERE option_value LIKE ‘%eval%' OR option_value LIKE ‘%base64%'”

5. Periksa Log Akses Web Server
Webserver (Apache/Nginx) menyimpan tiap request. Cari pola yang tidak normal:
– Request POST ke file PHP yang tidak ada di tema/plugin kamu
– User-Agent yang mengandung tools seperti sqlmap, nikto, atau user agent kosong
– Request dengan parameter panjang yang mungkin mencoba command injection

Contoh perintah Apache:
grep “POST” /var/log/apache2/access.log | grep -v “wp-admin\|wp-login.php” | grep “\.php$” | head

Jika kamu lihat banyak POST ke sebuah file seperti /wp-content/uploads/2024/06/xyz123.php yang sebelumnya tidak ada, itu strong indikasi webshell sedang aktif.

6. Cari File Baru atau Diubah Baru-baruini
Attacker suka menyisipkan file baru di direktori yang boleh ditulis seperti wp-content/uploads, wp-content/cache, atau bahkan di dalam tema anak.

Gunakan find:
find wp-content -type f -mtime -7 -ls # file diubah dalam 7 hari terakhir
find wp-content -type f -perm -002 -ls # file world-writable
find wp-content -type f -name “*.php*” ! -name “*.php” -ls # ekstensi aneh seperti .php.jpg

7. Periksa Cron Job dan Scheduled Task
Beberapa webshell membuat cron job untuk menjaga persistency. Cek crontab sistem dan juga WordPress cron jika ada plugin yang aneh.

crontab -l
ls -la /etc/cron.d/
wp cron event list # lewat WP-CLI

8. Izin File dan Kepemilikannya
Pastikan semua file WordPress milik user yang tepat (biasa www-data atau nginx) dan tidak ada file yang milik user lain. File yang tidak seharusnya bisa dieksekusi oleh web server harus memiliki izin 644, folder 755.

find wp-content -type f -perm /o+w -ls # cari file yang bisa ditulis oleh semua

Contoh Webshell yang Sering Dilewatkan
Berikut contoh kode yang sering terlihat innocente tapi justru berbahaya:

Atau yang disembunyikan di tengah file tema legiter:

Kode di atas mungkin tidak langsung terdeteksi oleh scanner karena tidak ada string eval atau system secara langsung.

Tools Pendamping (Tetap Manual)
Kamu masih bisa pakai alat bantu tapi tetap mengontrol prosesnya secara manual:
– WP-CLI untuk inspeksi database dan file
– Linux find/grep/awk/sed seperti di atas
– Logwatch atau GoAccess untuk analisis log cepat
– YARA rules jika kamu mau buat signature sendiri untuk pola spesifik yang kamu temui

Langkah Selanjutnya Setelah Menemukan IOC
Jika kamu yakin ada webshell:
1. Jangan langsung hapus – ambil dulu bukti forensik (copy file, catat hash, screenshot)
2. Isolasi sistem – matikan koneksi ke internet jika memungkinkan, atau batasi lewat firewall
3. Notifikasi tim – kalau kamu bekerja sama dengan admin lain atau vendor hosting
4. Bersihkan – hapus file berbahaya, ganti semua password (database, FTP, hosting, email admin)
5. Perbarui dan pasang lagi – install ulang WordPress inti, tema, dan plugin dari sumber resmi
6. Pantau – aktifkan logging ketat dan lakukan scan integritas rutin setiap 12 jam selama 48 jam bersih

Mengapa Ini Penting untuk SEO dan Kepercayaan Pengguna
Situs yang terjangkit malware tidak hanya berisiko data curiah, tapi juga dianggap berbahaya oleh Google. Hasilnya? Peringatan “Situs ini mungkin terjangkit malware” di hasil pencarian, lalu CTR menganggu. Dengan deteksi dini dan pembersihan cepat, kamu menjaga reputasi SEO dan kepercayaan pengunjung.

Untuk panduan lengkap tentang hardening WordPress, lihat dokumentasi resmi: https://wordpress.org/support/article/hardening-wordpress/
Untuk teknik deteksi lebih advanced, lihat framework MITRE ATT&CK T1505.003: https://attack.mitre.org/techniques/T1505/003/
Juga OWASP memberikan panduan deteksi web shell: https://owasp.org/www-community/attacks/Command_Injection

Mari Kita Mulai Sekarang.
Buka terminal, jalankan satu perintah di atas, dan lihat apakah ada yang mencurigakan di situsmu. Kalau kamu menemukan sesuatu, jangan ragu untuk bertanya di kolom komentar – saya akan bantu menganalisis.

Pertanyaan yang Sering Diajukan (FAQ)
Q: Apakah cukup hanya menggunakan plugin security seperti Wordfence atau Sucuri?
A: Plugin itu bagus untuk pencegahan dan scanning signature, tapi mereka bisa terlupa jika attacker menggunakan teknik obfuskasi baru atau menyisipkan kode ke dalam file legit. Deteksi manual tetap diperlukan sebagai lapisan kedua.

Q: Sejauh mana saya harus memeriksa log server?
A: Idealnya, lihat minimal 7 hari terakhir aktifitas sebelum kamu mencurigai kecurangan. Jika kamu tahukira serangan terjadi kapan, fokuskan ke window waktu tersebut +/- 24 jam.

Q: Bagaimana kalau saya tidak pakai shared hosting tanpa akses terminal?
A: Kamu masih bisa menggunakan fitur File Manager di cPanel untuk mencari file baru, dan sebagian besar hosting menyediakan akses ke error log dan access log lewat dashboard. Untuk grep, beberapa hosting menyediakan terminal terbatas atau kamu bisa mengunduh file log dan menganalisis di komputer lokal menggunakan Notepad++ atau VS Code dengan fitur pencarian lanjutan.

About the Author

Dzul Qurnain

Suka nonton Anime, ngoding dan bagi-bagi tips kalau tahu.. Oh iya, suka baca ( tapi yang menarik menurutku aja)... Praktisi WordPress, web development, SEO, dan server administration yang membagikan tutorial teknis dan catatan implementasi nyata.

View All Articles