Analisis dan antisipasi serangan Cross Site Scripting (XSS)

From OnnoWiki
Revision as of 20:26, 4 January 2011 by Onnowpurbo (talk | contribs)
Jump to navigation Jump to search

Sumber: http://chrozca.wordpress.com/2011/01/04/analisis-dan-antisipasi-serangan-cross-site-scripting-xss/

Posted on January 4, 2011 by chrozca

Cross site scripting memiliki persamaan dengan sql injection yaitu menyerang bugs yang ada pada program yang dibuat oleh administrator.

contoh sederhana penggunaan XSS:

Berikut ini ada contoh script sederhana bagaimana bug ini bisa terjadi. Buat file cari.php yang berisi kode berikut:

<html> <head> <span class="hiddenSpellError" pre="">Contoh</span> Bug XSS </head> <body> <form id="form1" name="form1" method="post" action="hasil.php"> <table width="200" border="1"> <tr> <td>Cari</td> <input type="text" name="cari" /> </tr> <tr>   <input type="submit" name="Submit" value="Submit" /> </tr> </table> </form> </body> </html>

Hasilnya adalah 1 buah Textbox dan 1 buah button

tampilan dari code php diatas

Jadi penjelasan kode diatas adalah ketika kita menginputkan nilai apa aja maka aksi/langkah berikutnya adalah menuju hasil.php. Sekarang bandingkan dengan hasil.php yang berisi kode berikut.

Code:

<html>
<head>
Contoh Bug XSS
</head>
<body>
       <?php
               $cari=$_POST['cari'];
               echo "Hasil Pencarian : $cari";
               ?>
</body>
</html>

Nah penjelasan kode diatas adalah ketika kita menginput sesuatu di cari.php maka variabel yang terdapat pada textbox yang bernama cari akan diambil / ditangkap oleh hasil.php lalu akan ditampilkan nilai $cari. Maka hasilnya adalah :

Attack.jpg

kemudian hasil yang ditampilkan:

Hasil1.jpg

Ketika kita menginput dengan menambahkan tag-tag html maka hasilnya adalah

Attack2.jpg

kemudian hasil yang ditampilkan setelah disisipi oleh tag html

Hasil2.jpg

Untuk mengetahui cara kerja XSS injection dapat dilihat pada gambar berikut. skema serangan XSS

skema serangan XSS

Hampir sama dengan SQL injection, XSS injection juga bekerja melalui form masukan. Namun tidak seperti SQL injection, XSS injection ini bertujuan untuk mengelabui client lain yang membuka halaman yang sama dengan halaman yang sudah dijelajahi oleh penyerang dengan mengambil keuntungan misalnya mendapatkan cookie korban. Cookie bertujuan agar pengguna dapat membuka jendela baru tanpa memasukkan user name dan password lagi.

Elemen penting dari keberhasilan XSS injection adalah social engineering yang baik dari penyerang. Social engineering yang dimaksud adalah bagaimana penyerang membujuk calon korban untuk mengikuti sebuah link yang di dalamnya mengandung kode “jahat” untuk memperoleh informasi penting yang dimiliki oleh calon korban contohnya cookie.

Untuk Antisipasi

Pencegahan Cross site scripting sebenarnya merupakan bagian dari proses perancangan sistem yang akan diluncurkan oleh penyedia data. Jika sistem tersebut menggunakan teknologi dynamic web page, berbagai pertimbangan perlu dilakukan.

Teknologi Static Web Pages

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.

Metode POST

Metode POST adalah metode pengirimana data di mana variabel yang dikirimkan tidak disertakan pada link yang digunakan. Metode POST menyembunyikan variabel yang dikirimkan dari pengguna. Metode ini menjamin kode tidak dapat diinjeksikan melalui link yang telah didesain oleh penyerang. Link merupakan satu satunya cara yang dapat digunakan oleh penyerang untuk mengeksploitasi cross site scripting. Oleh karena itu, metode ini ampuh untuk mengatasi cross site scripting. Kekurangan metode ini, pengguna tidak dapat menyimpan link favorit untuk mempermudah navigasi

Pengkodean Karakter Spesial 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).

Pemfilteran ini biasanya dilakukan dengan menghilangkan karakter karakter spesial yang penting dalam pengkodean dan juga karakter karakter ekuivalen yang dikodekan. Pengkodean yang biasa digunakan adalah HTML escape

encoding. Tabel di bawah ini menunjukkan karakter tersebut dengan ekuivalen karakter yang telah dikodekan.

Table 9 HTML Escape Encoding

Char 	Code 	Char 	Code
; 	%3b 	{ 	%7b
/ 	%2f 	} 	%7d
? 	%3f 	| 	%7c
: 	%3a 	\ 	%5c
@ 	40% 	^ 	%5e
= 	%3d 	~ 	%7e
& 	26% 	[ 	%5b
< 	%3c 	] 	%5d
> 	%3e 	` 	60%
“ 	22% 	% 	25%
# 	23% 	‘ 	27%

Hilangkan kemampuan Scripting

Cross site scripting disebabkan keberhasilan penyerang menginjeksi kode pada halaman web yang dihasilkan. Jika kode yang diinjeksikan tersebut tidak dapat diinterpretasikan, halaman web dapat ditampilkan dengan aman. Kekurangan metode ini tentu saja kegagalan fungsi-fungsi yang ditulis dengan mengunakan script untuk bekerja.

HTTP-Only Cookie

Metode 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. Metode ini tersedia pada browser Internet Explorer 6 Service Pack 1. Untuk menggunakan metode, pada kepala HTTP response tambahkan atribut HttpOnly.

Ikuti Link Utama

Metode ini ditujukan bagi pengguna layanan yang menggunakan halaman web dinamis. Kebiasaan yang baik utuk mengikuti link yang berasal dari link utama yang disediakan oleh penyedia layanan. Link–link selain daripada link utama sebaiknya dihindari.

Semoga dapat membantu. :D



Referensi

Pranala Menarik