Making Money with Gelar: Evolusi Cross Site Scripting (XSS)

Evolusi Cross Site Scripting (XSS)


Evolusi Cross Site Scripting (XSS)

: Overwiew

Pendahuluan

Penggunaan cookie dalam aplikasi web dinamis telah banyak dijumpai, diantaranya untuk menyimpan asosiasi unik dari account pengguna. Beberapa situs web seperti yahoo, hotmail maupun netscape dapat dijadikan contoh pemanfaatan tersebut. Selain situs tersebut, beberapa situs perdagangan eletronik juga menggunakan cookie untuk menempatkan identitas unik pengguna bagi keperluan autentifikasi maupun autorisasi - pada situs yang menggunakan skenario log on, biasanya digunakan dua token autentifikasi, yaitu nama pengguna dan kata sandi (password), kedua token ini kemudian disimpan dalam cookie untuk memudahkan identifikasi atas banyaknya pengguna, juga untuk keperluan pelakuan batas sesi koneksi ke situs tersebut.

Mungkin penggunaan teknik Cross Site Scripting (XSS), merupakan teknik yang banyak digunakan bagi keperluan mendapatkan cookie ini. Begitu cookie didapatkan, si penyerang ini akan dapat memuat nilai cookie curian tersebut, lalu mengarahkan browsernya ke situs aplikasi yang menggunakan cookie tersebut, dan mengakses account korban, tanpa perlu menghabiskan waktu untuk memecahkan sandi dan enkripsi atas kombinasi pengguna dan kata sandi. Memang ada beberapa teknik lain seperti teknik DNS poisoning cache, memanfaatkan kelemahan browser di klien dan rekayasa sosial untuk mengelabui pengguna agar menginstal trojan horse, hanya teknik tersebut kurang begitu popular dibandingkan dengan XSS.

Cross Site Scripting (XSS) memang relatif mudah dipelajari, karena hanya membutuhkan pengetahuan tentang bahasa pemrograman HTML aktif, seperti javascript dan vbscript, lalu ditunjang dengan pikiran kreatif dan pengetahuan tentang browser. XSS juga jenis serangan yang memanfaatkan kelemahan dalam berbagi kepercayaan antara pemilik situs dan pengguna, karenanya, cukup sulit mengetahui apakah sebuah situs telah diserang XSS atau belum.

Tulisan ini akan membahas tentang Cross Site Scripting meliputi pengertian dari XSS, anatomi serangan XSS, dan metode serangan XSS, dan beberapa saran yang berhubungan dengan pengamanan atas serangan XSS ini.

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:

v http://www.microsoft.com/education/?ID=MCTN&target=http://www.microsoft.com/education/?ID=MCTN&target=">

v http://hotwired.lycos.com/webmonkey/00/18/index3a_page2.html?tw=

v http://www.shopnbc.com/listing.asp?qu=<script>alert(document.cookie)&frompage=4&page=1&ct=VVTV&mh=0&sh=0&RN=1

v 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.

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.

Metode Serangan XSS

Serangan XSS dapat dikategorikan dua cara, secara manual dan otomasi, jika secara manual dapat diilustrasikan dibawah ini :











  1. Pengguna aplikasi web mengakses aplikasi web yang menjadi target serangan.
  2. Penyerang menyebarkan serangan XSS dengan memanfaatkan e-mail ataupun web.
  3. Pengguna aplikasi web memakan umpan serangan XSS.
  4. Informasi dari pengguna diinjeksi ke server lain untuk diolah.
  5. Penyerang membajak sesi koneksi pengguna ke aplikasi web dan mengekploitasi aplikasi web

Mekanisme di atas merupakan metode serangan tradisional, saat ini serangan XSS telah diotomatisas dan dintegrasikan dengan aplikasi serangan web .Dan jika serangan telah diotomasi, dapat diilustrasikan berikut :










Metode serangan mengalami perubahan sesuai dengan perubahan pada protokol HTTP. Saat HTTP 1.0 banyak digunakan, serangan banyak dilakukan dengan memanfaatkan metode GET dan POST, dan ketika mulai digunakan protokol HTTP 1.1, metode serangan mulai dilakukan dengan memanfaatkan metode GET, POST dan TRACE.

Dari jenis bahasa pemrograman yang sering digunakan untuk melakukan serangan juga mengalami pergeseran, di awal populernya serangan XSS, banyak digunakan bahasa script JAVASCRIPT, kemudian mulai berkembang dengan memanfaatkan PERL dan ASP, saat ini banyak dilakukan dengan memanfaatkan PHP. Akan tetapi serangan XSS tidak terbatas hanya dengan bahasa di atas, juga dapat menggunakan bahasa pemrograman apapun yang mendukung aplikasi dinamis pada situs web, termasuk flash script.

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.



No comments:

Copyright © Making Money with Gelar Urang-kurai