Bagaimana Saya Melacak Injeksi Tersembunyi dan Memperkuat Lingkungan
Anda menjalankan pemindaian malware. Anda mengganti file inti. Anda memperbarui plugin dan mengubah kata sandi. Situs terlihat bersih.
Dua hari kemudian, klien menelepon. Akun admin baru muncul kembali. Pengunjung dialihkan ke situs berbahaya.
Inilah mimpi buruk dari persistensi.
Plugin keamanan standar sering kali gagal. Penyerang yang canggih tidak hanya menjatuhkan satu payload. Mereka membangun backdoor bersarang yang bersembunyi di dalam file yang sah.
Baru-baru ini saya menangani kasus di mana tiga upaya pembersihan gagal. Gejalanya sangat spesifik:
• Ghost Admins: Akun baru dengan nama acak muncul setiap 48 jam. • Conditional Redirects: Hanya pengunjung baru dari mesin pencari yang melihat situs berbahaya tersebut. Developer tidak melihat apa pun.
Tim sudah menimpa core WordPress dan memperbarui plugin. Pemindai tidak menunjukkan apa pun. Malware tersebut beregenerasi seperti hydra.
Penyerang memiliki mekanisme persistensi di dalam database atau cron job. Pemindai otomatis melewatkannya karena kodenya bersifat kustom.
Saya menggunakan command line untuk menemukan kebenarannya.
Pertama, saya memverifikasi file inti menggunakan checksum:
wp core verify-checksums
Core-nya bersih. Backdoor tersebut berada di wp-content atau database.
Saya mencari file yang dimodifikasi dalam 7 hari terakhir:
find . -type f -mtime -7 -name "*.php"
Kemudian, saya mencari fungsi mencurigakan seperti eval() atau base64_decode():
grep -rnw './wp-content/' -e 'eval(' -e 'base64_decode('
Saya menemukan file tersembunyi di dalam plugin premium yang sudah usang. Namun, menghapus plugin tersebut tidak menghentikan infeksi.
Penyerang meninggalkan pemicu (trigger) di tabel wp_options di bawah opsi cron. Setiap kali WordPress cron berjalan, ia mengambil payload baru. Ia menginfeksi kembali file inti beberapa menit setelah dibersihkan.
Untuk memperbaiki ini, Anda harus mengikuti urutan yang ketat:
- Pembersihan Database
- Cari data autoload berbahaya di wp_options.
- Periksa wp_cron untuk URL yang tidak dikenal.
- Gunakan SQL untuk menghapus pengguna yang tidak sah secara langsung.
- Pembersihan Sistem File
- Hapus semuanya kecuali wp-config.php dan wp-content/uploads/.
- Ganti semuanya dengan file baru dari repositori resmi.
- Hapus file PHP apa pun di dalam folder uploads.
- Rotasi Kredensial
- Regenerasi semua authentication salts di wp-config.php.
- Atur ulang semua kata sandi database, SSH, dan hosting.
Saya juga menerapkan tiga guardrail untuk mencegah hal ini terulang kembali:
• Perlindungan Edge: Saya menggunakan Cloudflare WAF untuk memblokir permintaan POST yang mencurigakan ke direktori sensitif. • Izin File: Saya mengunci struktur direktori. Direktori diatur menjadi 755 dan file menjadi 644. Saya mengatur wp-config.php menjadi read-only. • Nonaktifkan Pengeditan: Saya menambahkan DISALLOW_FILE_EDIT dan DISALLOW_FILE_MODS ke wp-config.php. Ini menghentikan siapa pun untuk mengubah kode melalui dashboard.
Jangan percaya pada tanda centang hijau dari sebuah plugin. Asumsikan bahwa pelanggaran telah terjadi. Lindungi situs Anda dari dalam ke luar.
Sumber: https://dev.to/jahidshah/how-i-tracked-a-stealthy-injection-and-hardened-the-environment-4clm