Xss Cross Side Scripting
Xss Cross Side Scripting
Oleh
Richson Untung Tambun
13200036
Teknologi dynamic web page kini telah menjadi bagian yang tidak
terpisahkan dari kehidupan dunia maya. Teknologi ini membawa perubahan yang
signifikan dalam proses pembangunan sistem penyedia layanan dalam jaringan
internet. Teknologi ini memampukan penyedia layana untuk memberikan layanan
yang lebih inovatif. Efek yang diharapkan tentu saja peningkatan dari segi ekonomi.
Namun dibalik keuntungan-keuntungan tersebut, teknologi ini memiliki
permasalahan dari segi keamanan. Permasalahan keamanan tersebut dinamakan cross
site scripting, atau juga dikenal sebagai XSS. Permasalahan ini tidak boleh dipandang
sebelah mata. Kebocoran informasi penting merupakan hal yang dapat terjadi jika
kelemahan ini tidak ditangani dengan baik.
Tulisan ini mencoba membahas bagaimana cross site scripting itu terjadi.
Tulisan ini tidak ditujukan untuk melakukan tindak kriminal. Tulisan ini diarahkan
untuk membuka mata pembaca betapa berbahayanya cross site scripting ini. Metoda
pencegahan yang dapat diterapkan juga diberikan pada tulisan ini.
ii
DAFTAR ISI
ABSTRAKSI ................................................................................................................ii
DAFTAR ISI................................................................................................................iii
DAFTAR GAMBAR ...................................................................................................iv
DAFTAR TABEL......................................................................................................... v
1 PENDAHULUAN .................................................................................................... 1
1.1 Bagaimana Halaman Web Dihasilkan?............................................................... 1
1.2 Halaman Web Yang Statis Dan Dinamis ............................................................ 3
2 CROSS SITE SCRIPTING......................................................................................... 6
2.1 Cara Kerja Cross Site Scripting .......................................................................... 6
2.2 Web Site Dengan Cross Site Scripting ............................................................... 8
2.2 Informasi Yang Diterbitkan Penyedia Layanan................................................ 13
2.3 Link Dalam Cross Site Scripting ..................................................................... 14
2.4 Pencurian Data .................................................................................................. 15
2.5 Apa Yang Cross Site Scripting Dapat Lakukan? .............................................. 15
3 PENCEGAHAN CROSS SITE SCRIPTING........................................................... 17
3.1 Teknologi Static Web Page............................................................................... 17
3.2 Metoda POST.................................................................................................... 17
3.3 Pengkodekan Karakter Special Pada Link ........................................................ 19
3.4 Hilangkan Kemampuan Scripting ..................................................................... 21
3.5 HTTP-Only Cookie........................................................................................... 22
3.6 Ikuti Link Utama ............................................................................................... 22
4 KESIMPULAN ....................................................................................................... 23
REFERENSI ............................................................................................................... 24
iii
DAFTAR GAMBAR
Gambar 1. Alur data tipikal untuk halaman web yang statis [4]................................... 2
Gambar 2. Contoh alur data pada halaman web yang dinamis (adaptasi dari [4]) ....... 5
Gambar 3. Contoh kasus cross site scripting ................................................................ 8
Gambar 4. Tampilan halaman web dengan input <script>alert(‘Ho ho ho’)</script>10
Gambar 5. Pesan pop up, mengindikasikan injeksi kode berhasil .............................. 11
Gambar 6. Pengubahan informasi memanfaatkan cross site scripting [3] .................. 16
Gambar 7. Halaman web yang dihasilkan menggunakan metoda POST.................... 18
Gambar 8. Pengkodean pada friendster.com............................................................... 19
Gambar 9. Pengkodean yang berhasil dilakukan pada injeksi script .......................... 21
iv
DAFTAR TABEL
Tabel 1. Perbandingan antara static web page dengan dynamic web page................... 3
Tabel 2. HTML Escape Encoding [3] ......................................................................... 12
v
BAB I
PENDAHULUAN
Tampilan web yang kita lihat ketika melakukan surfing melalui internet
sebenarnya hanyalah file teks biasa. File tersebut terletak pada sebuah server yang
1
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
pada gambar 1.
Gambar 1. Alur data tipikal untuk halaman web yang statis [4]
Komunikasi yang terjadi pada dunia maya saat ini dapat berjalan dengan baik
karena kini telah ada standar bahasa web yang digunakan. Standar itu mencakup
format dan juga tata bahasa. Standar tersebut dikembangkan oleh World Wide Web
Consortium (W3C). Untuk HTML, standar terakhir yang digunakan adalah XHTML
1.0.
Software penerjemah merupakan ujung tombak dari komunikasi ini. Program
ini yang akan menampilkan file teks yang telah diterima sehingga dapat dimengerti
2
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.
Tabel 1. Perbandingan antara static web page dengan dynamic web page
3
Dari tabel 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 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.
4
Gambar 2. Contoh alur data pada halaman web yang dinamis (adaptasi dari [4])
5
BAB II
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.
6
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 3 menunjukkan alur dari kejadian tersebut.
7
Gambar 3. Contoh kasus 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.
8
Syarat berikutnya adalah web tersebut menggunakan metoda get ketika
melakukan komunikasi. Methoda get mencantumkan informasi pada field link (juga
disebut querystring) yang dikirimkan. Contoh dari link dengan menggunakan
methoda get, http://www.richson.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
“Ho ho ho ”), http://www.richson.com/halaman1.asp?username=<script language =
“JavaScript”>alert (‘Ho ho ho’) </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>
9
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.querystring("username")
%>
</BODY>
</HTML>
10
Halaman web dinamis yang dihasilkan oleh server
(http://et1/helo.asp?username=%3Cscript%3Ealert%28%27Ho+ho+ho%27%29%3C
%2Fscript%3E) berisi script sebagai berikut.
<HTML>
<BODY>
Selamat datang <script>alert('Ho ho ho')</script>
</BODY></HTML>
Injeksi sering kali tidak berhasil dilakukan. Ini dapat terjadi akibat proses
pemfilteran di sisi server. Pemfilteran ini biasanya dilakukan dengan menghilangkan
karakter karakter spesial yang penting dalam pengkodean dan juga karakter karakter
11
ekuivalen yang dikodekan. Pengkodean yang biasa digunakan adalah HTML escape
encoding. Tabel 2 menunjukkan karakter tersebut dengan ekuivalen karakter yang
telah dikodekan.
12
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 <script>code</code> maka
halaman yang dihasilkan adalah seperti berikut.
<COMMENT>
<script>code</script>
</COMMENT>
<COMMENT>
<script>
</COMMENT>
<script>code</script>
<COMMENT>
</COMMENT>
13
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.
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. 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.org/page1?name=%3cscript%3esomecode%3c/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.
14
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.
15
Gambar 6. Pengubahan informasi memanfaatkan cross site scripting [3]
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.
16
BAB III
Cara terbaik dan efektif untuk menghindari terjadinya cross site scripting
adalah menghindari penggunaan teknologi dynamic web page. Halaman yang statis
tentu saja memberikan kontrol yang lebih di sisi server dibandingkan dengan halaman
web yang dinamis. Halaman web yang dihasilkan secara statis akan memberikan
kelakukan yang lebih pasti dibandingkan halaman web yang dihasilkan secara
dinamis. Konsekuensi yang ditanggung adalah penyedia layanan harus merelakan
sifat interaktif yang mungkin diinginkan.
17
merupakan satu satunya cara yang dapat digunakan oleh penyerang untuk
mengeksploitasi cross site scripting. Oleh karena itu, metoda ini ampuh untuk
mengatasi cross site scripting.
Kekurangan metoda ini, pengguna tidak dapat menyimpan link favorit untuk
mempermudah navigasi.
Gambar 7 menunjukkan halaman web yang dihasilkan dengan menggunakan
metoda post. Halaman web yang berisi form dan file helo.asp diambil dari contoh
bagian 2.2. Perubahan dilakukakan agar transfer data dilakukan dengan methoda
POST.
18
3.3 Pengkodekan Karakter Special Pada Link
Untuk men-non aktifkan kode script yang diinjeksikan, kita perlu membuat
aplikasi yang mampu mengkodekan karakter tersebut, sehingga karakter tersebut
tidak dapat dimengerti oleh browser yang digunakan. Proses pengkodean juga harus
mencakup HTML escape code (%hexnumber). Gambar berikut menunjukkan web
dengan proses pengkodean yang baik. Link yang dimasukkan pada field address dari
browser adalah:
http://friendster.com/user.php?uid=<script%20language="JavaScript">alert('Ho%20h
o%20ho'')</script>.
Penggalan soure code dari halaman yang dihasilkan oleh server berikut,
menunjukkan pengkodean yang dilakukan oleh penyedia layanan friendster beta.
<div class="error">
19
<h1>Invalid User ID</h1>Error Invalid User ID
(<script language="JavaScript">alert('Ho ho ho'')</script>).
</div>
<div><p class="buttonbox"><a class="submitbutton"
href="/home.php">Home</a></p></div>
<HTML>
<BODY>
<%
response.write "Selamat datang "
response.write server.htmlencode(request.querystring("username"))
%>
</BODY>
</HTML>
<HTML>
<BODY>
Selamat datang <script>alert('Ho ho ho')</script>
20
</BODY>
</HTML>
21
3.5 HTTP-Only Cookie
Metoda ini membatasi akses yang dapat dilakukan terhadap cookie. Dengan
menggunakan HTTP-only cookie, browser pengguna masih dapat menerima cookie
yang dikirimkan oleh penyedia layanan. Namun cookie tidak dapat diakses melalui
script yang dieksekusi pada browser pengguna. Jadi script yang diinjeksikan kepada
browser pengguna tidak akan dapat melakukan transfer cookie yang ada.
Metoda ini tersedia pada browser Internet Explorer 6 Service Pack 1. Untuk
menggunakan metoda, pada kepala HTTP response tambahkan atribut HttpOnly.
22
BAB IV
KESIMPULAN
23
REFERENSI
[1] Kurniawan, Andy. Agustus 2001. Belajar Sendiri Microsoft Active Server Pages.
PT Elex Media Komputindo. Jakarta.
[2] http://msdn.microsoft.com/workshop/author/dhtml/httponly_cookies.asp.
Mitigating Cross-site Scripting With HTTP-only Cookies.
[3] Ollman, Gunter. 2003 . HTML Code Injection and Cross-site scripting,
Understanding the cause and effect of CSS (XSS) Vulnerabilities. ISS Advisor.
[4] Pohan, Husni I. Beta, Sidik. Agustus 2003. Pemrograman WEB dengan HTML.
Penerbit Informatika Bandung
24