Selasa, 22 April 2014

Keamanan Scripting

Keamanan Scripting
Ada hal yang cukup penting untuk dibahas bila kita melakukan scripting, yakni tentu saja keamanan dari scripting itu sendiri. Ada banyak serangan yang dapat dilakukan oleh para hacker untuk mengakali situs web yang kita buat, baik dengan client-side maupun server-side scripting. Salah satu contoh serangan yang cukup komprehensif ialah apa yang dinamakan cross side scripting (XSS).

Apa itu XSS
XSS atau cross-site scripting, merupakan sejenis serangan yang ditujukan ke pengguna lainnya. Serangan ini tidak akan memberikan akses root ataupun system dalam server web, serangan ini hanya berusaha mendapatkan informasi yang berkaitan dengan aplikasi web yang digunakan. Aplikasi web ini dapat berupa aplikasi email berbasiskan web, forum online atau situs e-shopping.
Sebagai contoh sederhana XSS, bayangkan sebuah buku tamu dimana orang-orang dapat berdiskusi tentang tanggapan mereka terhadap sebuah situs, ketika melihat buku tamu tersebut, kita dapat melihat apa yang pengguna sebelumnya komentari tentang situs tersebut, dan kadang kala situs tersebut mengijinkan penggunaan tag HTML, lalu kenapa tidak kita menulis komentar dengan menggunakan huruf ‘comic sans’ dan berwarna merah, sehingga tiap orang dapat melihat komentar kita tersebut.  Karena HTML hanyalah sebuah bahasa program script dan browser kita merupakan interpreter untuk hal tersebut. Maka dengan sedikit kreativitas, komentar di buku tamu tadi, kita sisipkan beberapa scrip program rahasia, tentu pengguna lainnya tidak menyadarinya.

Dengan hadirnya teknologi yang memungkinkan situs web menjadi lebih interaktif dan dinamis, XSS juga mengalami perkembangan. Dengan menggunakan java script memang serangan XSS tidak dapat menghapus isi data di hard drive client, tapi kita mengakses url yang sedang diakses klien, melihat history akses web si klien ataupun melihat cookie yang ada. Hal kecil yang akan membawa dampak besar.
Memang XSS hadir karena jeleknya pembangunan sebuah situs web. Kita lebih terbiasa dengan keindahan desain dan isi dari situs web kita, tapi tidak cukup peduli dengan rangkaian baris program yang menyusun situs web tersebut, jarang sekali kita melakukan validasi atas broken link atau input yang diberikan oleh user, seperti pada buku tamu di atas - hal yang paling sering digunakan untuk menyisipkan kode curang sang penyerang.
Kesuksesan jenis serangan ini bergantung pada dukungan fungsionalitas di browser klien untuk menginterpretasikan script tersebut, kebanyakan browser web dapat menginterpretasikan embedded script dalam isi HTML.

Anatomi serangan XSS
Sebuah serangan cross site scripting dilakukan dengan menyediakan alamat khusus yang dikemas oleh penyerang untuk calon korbannya. Dalam konteks XSS, penyerang mengundang korbannya untuk mengeksekusi alamat URL yang diberikan dan membiarkan korban mengikuti link tersebut dengan menjalankan script yang sebelumnya beraksi di komputer klien untuk mendapatkan informasi yang diinginkannya.
Baiklah sekarang kita amati bagaimana sebenarnya sebuah serangan XSS berjalan, ada tiga hal yang berkait dan dapat disusun sebagai sebuah anatomi serangan XSS yaitu penemuan, serangan, dan eksploitasi.
 
Penemuan Titik Rawan Aplikasi
Serangan XSS berdampak pada ketidaksempurnaan aplikasi berbasis web dan bermuasal pada masukan pengguna (user) yang tidak begitu baik  dibersihkan pada penggunaan karakter HTML. Hal ini dapat memungkinkan penyerang menyisipkan kode HTML tambahan dimana mereka dapat mengendalikan eksekusi pada halaman tersebut dibawah izin yang diberikan oleh situs itu sendiri.  Sebuah contoh sederhana dari halaman yang dapat digunakan untuk cross site scripting  seperti dibawah ini :



Sekali halaman tersebut dapat terakses, variabel tersebut dikirim melalui metode GET langsung menuju halaman yang dituju. Dimana masukan tidak ditandai sebagai variabel masukan, pengguna dapat memasukkan beberapa karakter yang diinterpretasikan sebagai perintah meta karakter, cukup mirip dengan injeksi SQL.
Dengan memasukkan HTML metacharacter memungkinkan keluaran yang tidak diinginkan: Dimana masukan tidak divalidasi terlebih dahulu sebelum keluaran dikirimkan ke browser klien. Hal di atas memberikan pengguna untuk mengendalikan HTML dengan menyisipkan script ke halaman tersebut. 
Beberapa titik dimana biasanya XSS terjadi adalah pada halaman konfirmasi (seperti mesin pencari dimana memberikan keluaran dari masukan pengguna dalam aktvitas pencarian) dan halaman kesalahan (error page) yang membantu pengguna dengan mengisi bagian form untuk memperbaiki kesalahan.
 
Serangan
Sekali masukan rawan teridentifikasi pada metode HTTP - yang bergantung pada fasilitas protokol HTTP, maka aktivitas serangan dapat dilakukan baik dengan metode GET, POST dan metode lainnya.
Penyisipan dengn metode GET merupakan cara termudah tapi juga sering dijumpai. Karena pengguna cukup banyak mengerti akan adanya pengarahan ulang (redirection) atau adanya pemanggilan alamat lain yang tampak pada tabulasi alamat (address bar). Metode cukup dilihat pada URI dan biasanya tercatat di server HTTP.  Contoh serangan dengan metode ini dapat dilihat seperti berikut:

http://www.microsoft.com/education/?ID=MCTN&target=http://www.microsoft.com/education/?ID=MCTN&target=">
http://hotwired.lycos.com/webmonkey/00/18/index3a_page2.html?tw=
http://www.shopnbc.com/listing.asp?qu=&frompage=4&page=1&ct=VVTV&mh=0&sh=0&RN=1
http://www.oracle.co.jp/mts_sem_owa/MTS_SEM/im_search_exe?search_text=%22%3E%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E

Karena tabiat dari XSS, penyerang tidak dapat secara langsung memanfaatkan kerawanan untuk keuntungan sendiri. Korban mesti melihat kode yang disisipkan agar dapat dieksekusi. Dan begitu korban melihat kode tersebut,  dan mengeksekusi, informasi tentang si korban dapat diketahui oleh si penyerang.
Dibanding serangan dengan metode GET, dengan metode POST sedikit lebih rumit, dimana variabel POST dikirim secara mandiri dari permintaan URI, sehingga butuh halaman transisi untuk memaksa korban mengeksekusi permintaan POST (POST request) yang berisi kode XSS.
Baru-baru ini metode serangan XSS telah menggunakan metode TRACE, serangan ini memanfatkan activeX, dimana informasi tentang user dikirimkan melalui TRACE request melalui browser klien, informasi ini juga dapat diubah ke dalam bentuk xml, sehingga klien dan situs web tersebut tidak menyadarinya. Metode ini mampu melewati keamanan HTTP Only. 


Artikel terkait;
pengertian-common-gateway-interface-cgi. 
pengertian-script-dan-scripting-dan. 




1 komentar: