Web Dinamis XSS Cross Site Scripting

sebenarnya hanyalah file teks biasa. File tersebut terletak pada sebuah server yang dimiliki oleh penyedia layanan tersebut. File ini dapat diperoleh oleh pengguna dengan sebuah request. File dengan ekstensi tertentu tersebut kemudian ditampilkan dengan menggunakan sebuah program interpreter. Ektensi file yang biasa ditemukan antara lain html, htm, php, asp, cgi dan lain lain. Untuk lebih jelasnya dapat dilihat Gambar 2.1 Alur data tipikal untuk halaman web yang statis oleh pengguna. Software penerjemah melakukan proses visualisasi berdasarkan perintah yang terdapat pada file teks yang diperoleh. Kesalahan bahasa pada file teks yang diterima akan menyebabkan kesalahan pada proses penerjemahan. Software penerjemah ini lebih dikenal dengan sebutan browser web. Browser web populer saat ini adalah internet explorer dan keluarga netscape. http:id.wikipedia.org

b. Web Dinamis

Perbedaan mendasar antara proses penyediaan halaman web statis dengan proses penyediaan halaman web yang dinamis terletak pada request dan program penyediaan halaman web pada server yang digunakan. Tabel 1 menunjukkan perbedaan tersebut. Tabel 2.1 Perbandingan antara static web page dengan dynamic web Page Dari tabel 2.1, kita dapat menyimpukan bahwa teknologi dynamic web page memungkinkan halaman web yang mampu beradaptasi masukan pengguna. Untuk mendukung kemampuan tersebut, server yang menggunakan tekonologi dynamic web page didukung kemampuan bahasa pemrograman. Isi halaman web yang dinamis, terdapat pada server, biasanya berisi script pemrograman dalam bahasa yang biasa terdapat dalam teknologi web seperti JavaScript dan VB. Script pemrograman ini menerima dan memproses variabel – variabel yang dilalukan pengguna ketika request dilakukan. Halaman yang dikirimkan oleh server akan berisi informasi yang sangat tergantung algoritma pemrosesan dari halaman yang terdapat pada server. Gambar 2.2 menunjukkan contoh alur data halaman web yang dinamis. Halaman web yang dinamis ditunjukkan oleh file helo.asp. Terlihat bahwa file sumber yang terdapat pada server berbeda dengan file yang dikirimkan ke pengguna. http:id.wikipedia.org Gambar 2.2 Contoh alur data pada halaman web yang dinamis

2.2 XSS Cross Site Scripting

Cross site scripting adalah kelemahan keamanan yang terjadi pada penggunaan teknologi dynamic page. Cross site scripting dapat diartikan sebagai kelemahan yang terjadi akibat ketidakmampuan server dalam memvalidasi input yang diberikan oleh pengguna. Algoritma, yang digunakan untuk pembuatan halaman yang diinginkan, tidak mampu melakukan penyaringan terhadap masukkan tersebut. Hal ini memungkinkan halaman yang dihasilkan menyertakan perintah yang sebenarnya tidak diperbolehkan. Cross site scripting merupakan kelemahan yang populer untuk dieksploitasi. Namun sayangnya, banyak penyedia layanan yang tidak mengakui kelemahan tersebut dan melakukan perubahan pada sistem yang mereka gunakan. Citra penyedia layanan merupakan harga yang dipertaruhkan ketika mereka mengakui kelemahan tersebut. Sayangnya dengan tindakan ini konsumen atau pengguna menjadi pihak yang dirugikan.

2.2.1 Cara Kerja Cross Site Scripting

Cross site scripting bekerja bak penipu dengan kedok yang mampu mengelabui orang yang tidak waspada. Elemen penting dari keberhasilan cross site scripting adalah social engineering yang baik dari si penipu. Social engineering merupakan elemen terpenting yang menentukan keberhasilan penipuan yang akan dilakukan. Cross site scripting memampukan seseorang yang tidak bertanggungjawab melakukan penyalahgunaan informasi penting. Sebelum sampai pada proses penyalahgunaan tersebut, penyerang mengambil langkah-langkah dengan mengikuti pola tertentu. Langkah pertama, penyerang melakukakan pengamatan untuk mencari web-web yang memiliki kelemahan cross site scripting. Langkah kedua, sang penyerang mencari tahu apakah web tersebut menerbitkan informasi yang dapat digunakan untuk melakukan pencurian infomasi lebih lanjut. Informasi tersebut biasanya berupa cookie. Langkah kedua ini tidak selalu dijalankan. Langkah ketiga, sang penyerang membujuk korban untuk mengikuti sebuah link yang mengandung kode, ditujukan untuk mendapatkan informasi yang telah disebutkan sebelumnya. Kemampuan social engineering dari sang penyerang diuji disini. Setelah mendapatkan informasi tersebut, sang penyerang melakukan langkah terakhir, pencurian maupun pengubahan informasi vital. Berikut merupakan contoh kasus dari cross site scripting. Anggap sebuah penyedia layanan message board, A, memiliki kelemahan cross site scripting. Web tersebut juga menghasilkan cookie. Cookie tersebut bertujuan agar pengguna dapat membuka jendela browser baru tanpa memasukkan user name dan password lagi. B, mencoba untuk mengeksploitasi kelemahan ini, meletakkan sebuah link yang mengandung kode yang “jahat” pada message board tersebut. C, seorang pengguna, tertarik pada link tersebut menekan link tersebut. Tanpa disadari C, cookie yang terdapat pada komputernya telah dikirimkan ke komputer B. Kini B dapat mengakses message board sebagai C hanya dengan menggantikan cookienya dengan cookie yang ia dapatkan dari C. Gambar 2.3 menunjukkan alur dari kejadian tersebut. Gambar 2.3 Contoh kasus cross site scripting Bagian berikut akan menjelaskan secara lebih mendalam setiap langkah sampai penyalahguanan informasi dapat terjadi. http:msdn.microsoft.com workshopauthordhtmlhttponly_cookies.asp

2.2.2 Web Site Dengan Cross Site Scripting

Pencarian web site dengan kelemahan cross site scripting sebenarnya tidaklah terlalu sulit. Web site yang menghasilkan halaman web yang dinamis merupakan syarat utama yang diperlukan untuk mengeksploitasi kelemahan ini. Web dengan form input merupakan web potensial untuk dieksplotasi cross site scripting. Web yang membutuhkan user name dan password serta search engine termasuk didalamnnya. Syarat berikutnya adalah web tersebut menggunakan metoda get ketika melakukan komunikasi. Methoda get mencantumkan informasi pada field link juga disebut querystring yang dikirimkan Ollman Gunter. Contoh dari link dengan menggunakan methoda get, http:www.jospyro.com halaman1.asp? username = me. Ini menunjukkan bahwa web tersebut dapat diinjeksi dengan script. Langkah terakhir adalah memastikan bahwa script yang kita tulis berhasil diinjeksikan. Jika injeksi berhasil dilakukan, contoh link berikut akan menampilkan halaman1.asp dengan pop-up box ketika di klik pop up box tersebut akan bertuliskan “ jospyro ”, http:www.jospyro.comhalaman1.asp?username=script language = “JavaScript”alert ‘jospyro script. Contoh berikut merupakan merupakan halaman web yang menggunakan form. Data yang dikirimkan berupa nama pengguna. Data dikirimkan dengan menggunakan metoda get. Isi halaman web tersebut adalah sebagai berikut. HTML HEAD TITLE Contoh halaman menggunakan form : TITLE HEAD BODY form name=input method=get action=helo.asp Nama user : input type=text name=username br input type=submit value=Send form BODY HTML Script file yang bertugas menghasilkan halaman web berdasarkan input dari login.html adalah hello.asp . Isi dari hello.asp adalah sebagai berikut. HTML BODY response.write Selamat datang response.write request.querystringusername BODY HTML Gambar 2.4 Contoh kasus cross site scripting Halaman web dinamis yang dihasilkan oleh server http:et1helo.asp?username=3Cscript3Ealert2827jospyro272 9 3C2Fscript3E berisi script sebagai berikut. HTML BODY Selamat datang scriptalert jospyro script BODYHTML Gambar 2.5 Contoh kasus cross site scripting ekuivalen yang dikodekan. Pengkodean yang biasa digunakan adalah HTML escape encoding. Tabel 2 menunjukkan karakter tersebut dengan ekuivalen karakter yang telah dikodekan. Tabel 2.2 HTML Escape Encoding untuk menghindari rutin tersebut dan penggunaan karakter alternatif “\x3c” dan “\x3e” , maka penyerang tetap dapat melakukan injeksi kode. Teknik lain adalah dengan membuat aplikasi yang memfilter kode yang diinjeksikan dengan comment. Jika pada input terdapat scriptcodecode maka halaman yang dihasilkan adalah seperti berikut. COMMENT scriptcodescript COMMENT Penyerang dapat menghindari dengan menambahkan kode COMMENT dan COMMENT diantara kode yang ia injeksikan sehingga filter dapat dilewati. Jika input scriptCOMMENTscriptcodescript COMMENT maka halaman yang dihasilkan adalah sebagai berikut. COMMENT script COMMENT scriptcodescript COMMENT COMMENT Kode tetap dapat diinjeksikan

2.2.3 Informasi Yang Diterbitkan Penyedia Layanan

Pengecekan ini dilakukan ketika penyerang bertujuan untuk melakukan penyalahguanaan informasi pengguna. Seperti telah disebutkan sebelumnya, informasi yang sering diperiksa adalah cookie. Penyerang dapat melakukan ini dengan terlebih dahulu mendaftar sebagai salah satu pengguna. Penyerang akan memeriksa informasi apa yang terdapat pada cookie tersebut. Apakah cookie tersebut dapat digunakan untuk mengelabuhi server.`Tidak semua proses eksploitasi ditujukan pada penyalahgunaan informasi pengguna. Terdapat juga tipe eksploitasi yang ditujukan untuk “mengubah” isi dari informasi atau iklan yang ditampilkan. Tipe eksploitasi seperti ini tidak membutuhkan penyediaan informasi, seperti cookie.

2.2.4 Link Dalam Cross Site Scripting

Bagian ini sangat menarik karena mencakup aspek social engineering. Cross site scripting merupakan lubang yang timbul akibat ketidakmampuan server untuk mengecek input yang diberikan pengguna. Jadi titik berat keberhasilan eksploitasi kelemahan ini terletak pada pengguna. Bagaimana membujuk pengguna untuk mengklik link yang disediakan oleh penyerang. Link ini biasa diletakkan pada e-mail, message board, dan lain lainnya. Untuk menghindari pemfilteran, penyerang perlu untuk mengkodekan link yang ia buat ke bentuk yang akan terlihat aneh bagi pengguna. Pengkodean biasanya menggunakan HTML Escape encoding yang menggunakan karakter yang telah terkodekan seperti ditunjukkan pada Tabel 2.5 Jika kode yang akan disertakan dalam link cukup panjang, pengguna akan curiga dan mengurungkan niatnya walau sebaik apapun social engineering yang dilakukan. Untuk mengkamuflasekan link ini, penyerang menggunakan nama lain yang lebih menarik daripada langsung meletakkan link tersebut. Alih-alih meletakkan link http:trustedsite.orgpage1?name=3cscript 3esomecode3c script 3e, akan lebih baik membuat link dengan nama click me yang merujuk pada link yang sama. Walaupan link yang sebenarnya akan terlihat pada bagian bawah kiri dari browser, pengguna pada umumnya kurang memperhatikan kejanggalan yang ada dan langsung mengklik link tersebut. Cara lain untuk memastikan bahwa link tersebut akan dijalankan adalah dengan menggunakan perintah onmouseover. Dengan menggunakan perintah ini, link beserta kode yang terdapat didalamnya dapat dijalankan ketika cursor bersada diatas link tersebut. Dengan cara ini, persentase keberhasilan cross site scripting terjadi semakin besar.

2.2.5 Pencurian Data

Pencurian data dengan menggunakan informasi yang diperoleh seperti cookie ditujukan pada penyalahgunaan informasi pengguna. Cookie yang dihasilkan penyedia layanan berisi informasi yang bermacam – macam. Jika informasi ini berhasil didapakan maka penyalahgunaan dapat terjadi. Cookie, tipe berbeda, digunakan sebagai alat identifikasi selama session berlangsung session berlangsung ketika pengguna log-in sampai pengguna log-out. Jika penyerang berhasil mendapatkan cookie seorang pengguna selama session berlangsung, penyerang bisa mendapatkan akses sebagai pengguna hanya dengan mengubah cookie yang ia gunakan dengan cookie yang ia dapatkan dari korban. Hal lain yang terpenting ketika pencurian dilakukan adalah kesan yang diberikan pada korban. Sering kali halaman web menampilkan broken link ketika eksploitasi dilakukan. Untuk menghindari kecurigaan korban, biasanya penyerang membuat script yang akan menampilkan halaman yang diminta. 2.2.6 Apa Yang Cross Site Scripting Dapat Lakukan? Kerentanan aplikasi web terhadap celah ini mampu membuat resiko seperti pencurian account pengguna. Hal ini cukup berbahaya karena privasi seseorang dapat terganggu. Contoh potongan kode dari suatu aplikasi web yang tidak tersanitasi dengan baik dapat digambarkan seperti berikut ini : http:www.target.comsearch.php?q=3Ciframe20src=22http:jospyro. blogspot.com2220width=80020height=8003E3Ciframe3E maka serangan tersebut akan dieksekusi dan hasilnya adalah sebagai berikut : Gambar 2.6 Contoh kasus cross site scripting Link yang digunakan oleh penyerang berisi kode yang menampilkan halaman dengan kerangka yang berasal dari site asli namun dengan isi sesuai dengan yang diinginkan penyerang. Dalam melakukan XSS, dapat menginjeksikan tag HTML, Java Script atau Script Client Side lainnya. Hasil injeksi yang dilakukan memiliki 2 sifat tergantung dimana injeksi serangan XSS tersebut dilakukan. Jika injeksi XSS dilakukan pada suatu variabel yang hanya melewatkan parameter tanpa menyimpannya di database, maka hasilnya hanya bersifat temporary sementara. Akan tetapi apabila ditemukan kelemahan ini pada Guest Book, Shout Book, Forum, Blog dan yang sejenisnya dan dilakukan serangan XSS, maka hasil serangan tersebut akan bersifat permanen karena script yang di injeksikan tersimpan didalam database. Kode Java Script yang diinjeksikan tidak harus berupa message box. Misalnya saja ingin membuat suatu halaman baru menuju target.com ketika halaman yang diinjeksi di laod oleh user, maka bisa menginjeksikan script berikut: scriptwindow.openhttp:www.target.comscript Seperti yang sudah dicontohkan di awal pembahasan artikel ini, Anda juga bisa menginjeksikan tag-tag HTML. Misalnya saja: H1 HACK BY JO_SPYRO H1 Gambar 2.7 Contoh kasus cross site scripting Jadi juga bisa menginjeksikan script yang akan menampilkan animasi Flash, me-load file-file musik, dan lain sebagainya, sesuai dengan kreatifitas. http:www.spyrozone.net

2.3 JAVA