Tentang Cross Site Scripting

Deskripsi Cross Site Scripting

XSS merupakan kependekan yang digunakan untuk istilah Cross Site Scripting. XSS merupakan salah satu jenis serangan injeksi code (code injection attack). XSS dilakukan oleh penyerang dengan cara memasukkan kode HTML atau client script code lainnya ke suatu situs. Serangan ini akan seolah-olah datang dari situs tersebut. Akibat serangan ini antara lain penyerang dapat mem-bypass keamanan di sisi klien, mendapatkan informasi sensitif, atau menyimpan aplikasi berbahaya. Alasan kependekan yang digunakan XSS bukan CSS karena CSS sudah digunakan untuk cascade style sheet.

Tipe XSS

  • Reflected atau nonpersistent
  • Stored atau persistent

Reflected XSS

Reflected XSS merupakan tipe XSS yang paling umum dan yang paling mudah dilakukan oleh penyerang. Penyerang menggunakan social engineering agar tautan dengan kode berbahaya ini diklik oleh pengguna. Dengan cara ini penyerang bisa mendapatkan cookie pengguna yang bisa digunakan selanjutnya untuk membajak session pengguna.

Mekanisme pertahanan menghadapi serangan ini adalah dengan melakukan validasi input sebelum menampilkan data apapun yang di-generate oleh pengguna. Jangan percayai apapun data yang dikirim oleh pengguna.

Stored XSS

Stored XSS lebih jarang ditemui dan dampak serangannya lebih besar. Sebuah serangan stored XSS dapat berakibat pada seluruh pengguna. Stored XSS terjadi saat pengguna diizinkan untuk memasukkan data yang akan ditampilkan kembali. Contohnya adalah pada message board, buku tamu, dll. Penyerang memasukkan kode HTML atau client script code lainnya pada posting mereka.

Serangan ini lebih menakutkan. Mekanisme pertahanannya sama dengan reflected XSS: jika pengguna diizinkan untuk memasukkan data, lakukan validasi sebelum disimpan pada aplikasi.

Contoh penyerangan menggunakan XSS (Nama – nama dibawah ini hanya merupakan karangan belaka) :

1. Toni sering mengunjungi website Jack, yang di website tersebut memungkinkan Toni untuk memasukan username/password dan menyimpan data pribadi atau data transaksi yang seharusnya tidak boleh diketahui orang lain.

2. Rey mengetahui bahwa Toni sering mengunjungi web tersebut, dan lalu mengamati jika di website buatan Jack terdapat kerentanan atau celah yang bisa diserang menggunakan XSS.

3. Rey lalu meng-ekplore dan mencoba mencari celahnya dan membuat script berbahaya dan kemudian di embed atau dimasukan ke dalam sbuah URL.

4. Rey lalu mengirim email ke Toni yang berisi link ke halaman web Jack yang sebenarnya urlnya sudah di embed script yang berbahaya tersebut.

5. Ketika Toni click URL tersebut maka Toni akan masuk ke dalam website Jack serta script yang sudah Rey buat akan dijalankan, sehingga Rey bisa mengmbil data dari cookies-nya dan bisa memanfaatkanya.

Deskripsi XSS dalam Network

Skema popular dalam hal pencurian cookies pada jaringan Internet menjadi bagian dalam kerawanan serangan XSS (Cross-Site Scripting). Sekali cookie didapatkan, penyerang aktif dapat mencuri isi dalam cookie, mengarahkan browser pada aplikasi-aplikasi berbasis web (e-mail) dan dapat mengakses account tanpa perlu menghabiskan waktu untuk melakukan cracking untuk mencari kombinasi username & password yang cocok. Hal ini membawa implikasi yang buruk tergantung dengan aplikasi yang sedang dibuka :penyerang dapat membaca surat-surat korbannya, mengakses account di bank dan menulis check untuk melakukan pembayaran secara online atau membeli barang menggunakan cached retail credit information pada situs seperti : Amazon & eBay. Untuk dapat melakukan hal ini, seorang penyerang harus mendapatkan sesi pengguna yang masih dalam kondisi aktif. Untuk itu seorang penyerang yang potensial akan memerlukan lubang otorisasi akses pada XSS dan  CGI pada web server.

Cross Site Scripting

Cross-Site Scripting atau yang lebih dikenal dengan sebutan XSS merupakan salah satu metode yang di gunakan para attacker untuk menyuntikan kode HTM atau Javascript kedalam sebuah halaman web yang vulnirable terhadap XSS. XSS di bagi menjadi dua, Non Persistent dan Persistent. Xss Non Persistent merupakan tipe XSS yang paling umum dan yang paling mudah dilakukan. Attacker menggunakan social engineering agar tautan dengan kode berbahaya ini diklik oleh pengguna. sedangkan XSS Persistent ini merupakan tipe XSS yang lebih berbahaya, yang dapat berakibat pada seluruh pengguna. XSS ini terjadi saat pengguna diizinkan untuk memasukkan data yang akan ditampilkan kembali. Contohnya adalah pada komentar, buku tamu, dll. Attacker memasukkan kode HTML atau Javascript atau code lainnya pada posting mereka. Dengan cara ini attacker bisa mendapatkan cookie pengguna yang bisa digunakan selanjutnya untuk membajak session pengguna.

Kerawanan terhadap serangan  XSS disebabkan oleh buruknya mekanisme validasi input user sebelum diserahkan kepada sistem klien. Cross-Site mengacu pada daerah aman dimana user menyimpan data ( seperti cookies, atribut konten dinamis, dsb) yang berhubungan dengan situs web. Dalam Cross Site Scripting, aplikasi web target diinfeksi dengan menambahkan link baru yang tidak disadari oleh pengembang aplikasi. Dalam link baru tersebut, terdapat rangkaian script program yang digunakan untuk mengakses informasi yang berkaitan dengan web tersebut. Semua serangan XSS tidak akan mengambil  akses root ataupun system dalam server web, serangan ini hanya berusaha mendapatkan informasi yang berkaitan dengan aplikasi web yang digunakan.

Sebagai contoh sederhana dari XSS, dapat digambarkan adanya sebuah buku tamu tempat banyak orang dapat berdiskusi tentang tanggapan mereka terhadap sebuah situs. Pada situs tertentu juga menyediakan akses penggunaan tag HTML. Dengan HTML, sebuah script bahasa program dan browser yang merupakan interpreter untuk scrip tersebut, komentar pada buku tamu dapat disisipi script program tentang apapun, tanpa disadari oleh pengguna lainnya. XSS hadir karena  pembangunan sebuah situs web yang kurang baik. Keindahan desain dan isi dari situs web mengabaikan faktor keamanan dari situs tersebut. Validasi atas broken link atau input yang diberikan oleh user, seperti pada buku tamu di atas menjadi hal yang paling sering dilupakan, dan memberikan kesempatan adanya penyisipkan kode curang dari sang penyerang. Jadi secara singkat dapat dijelaskan proses penyerangan XSS sebagai berikut :

  1. Penyerang melakukan investigasi pada situs-situs dimana diperlukan hak akses tertentu, dan mencuri hak akses suatu user melalui cookies atau ID sessions.
  2. Penyerang menemukan titik rawan pada halaman suatu situs.
  3. Penyerang menciptakan link khusus ke suatu situs dan menempelkannya dalam suatu email HTML yang dikirimkan ke korban potensial.
  4. Link khusus tersebut juga berisi kode yang didesain khusus untuk mengirimkan salinan cookie korban ke penyerang
  5. Tanpa sepengtahuan korban, penyerang mendapatkan informasi (cookie) milik pengunjung situs target.
  6. Dengan memanfaatkan informasi tersebut, penyerang mengeksploitasi situs target.

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. Terdapat tiga hal yang berkait dan dapat disusun sebagai sebuah anatomi serangan XSS yaitu penemuan, serangan, dan eksploitasi.

1. Penemuan Titik Rawan Aplikasi

 Serangan XSS berdampak pada ketidaksempurnaan aplikasi berbasis web dan bermuasal pada validasi masukan pengguna (user) yang tidak begitu baik. 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 :

<?php echo “Hello, {$HTTP_GET_VARS[‘name’]}!”; ?>

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.

2.  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 dengan metode GET merupakan cara termudah 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. Karena karakter 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.

3.  Eksploitasi

Setelah melakukan serangan,  penyerang dapat melakukan eksploitasi atas situs web yang menjadi target. Umumnya dilakukan dengan membajak sesi koneksi dari korban dan melakukan aksi seperti layaknya si korban mengakses situs web target. Kerugian yang muncul dapat merugikan situs web itu sendiri ataupun korban. Setelah eksploitasi ini, sesi serangan XSS dapat dikatakan telah sempurna.

Kesimpulan

Cross Site Scripting sering kali diabaikan dalam pembangunan situs web, seiring dengan pemakaian aplikasi web dinamis. Kerawanan yang timbul justru mengancam hubungan pengguna dan pemilik situs web.  Metode serangan XSS yang digunakan juga berkembang seiring dengan pengembangan protokol aplikasi web, bahasa yang digunakan juga berkembang. Karenanya tidak ada jaminan serangan XSS tidak mengalami perkembangan.

Ada beberapa saran pengamanan yang cukup efektif, saran tersebut antara lain :

v Para pengembang web, hendaknya melakukan pengujian untuk tiap halaman yang dibangun, juga dilakukan pengecekan ulang untuk tiap masukan dari pengguna, untuk menghindari celah serangan XSS.

v Para pengguna aplikasi web dinamis, hendaknya berhati-hati dalam menggunakan aplikasi web karena enkripsi dan berlapisnya firewall bukanlah jaminan bahwa aplikasi web tersebut aman.

Sumber :   

http://id.wikipedia.org/wiki/XSS

Steven Cook.”A Web Developer’s Guide to Cross-Site Scripting”.January 2003. SANS Institute.

http://republicofnote.blogspot.com/2012/05/cross-site-scripting-xss-methode.html

Jeremiah Grossman.”Cross-Site Tracing (XST) The New Techniques And Emerging Threats To Bypass Current Web Securty Measures Using Trace And XSS”. Januari 2003. White hat security. http://www.whitehatsec.com.

Scott Hanselman. “Adding Cross-Site Scripting Protection to ASP.NET 1.0”. November 2003. Microsoft ASP.NET Developer Centre. http://msdn.microsoft.com/asp.net/using/migrating.

Oleh :

  1. M. Rizki Kurniawan
  2. Arief Puji Eka P
  3. Fajar Zuhroni
  4. M. Syamsul M
  5. Beni A.P

One thought on “Tentang Cross Site Scripting

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s