XXS PEMULA

Label:
Pengertian

XSS merupakan kepanjangan dari Cross Site Scripting. Lho, kok disingkat menjadi XSS?? Bukannya CSS?? Ya, sebenarnya sama saja, namun CSS lebih dikenal sebagai singkatan dari Cascading Style Sheet, karena itulah kini disingkat XSS. Menurut Wikipedia versi saya biggrin definisi XSS ialah:

"Salah satu jenis serangan web yang dilakukan dengan memanfaatkan kelemahan pada suatu aplikasi web sehingga memungkinkan `bad guys` untuk menginjeksikan suatu tag HTML ataupun Client Side Script pada aplikasi web tersebut dikarenakan adanya variabel yang tidak disanitasi dengan baik."

Logika dari serangan XSS bisa digambarkan demikian.. Ketika anda memasukkan suatu kata di search engine, misalnya saja anda mengetikkan MOSTER_BRAIN, maka apa yang anda ketikkan akan ditampilkan pada hasil pencarian, dalam hal ini kata MOSTER_BRAIN akan ditampilkan. Biasanya berupa kata-kata:


Found 599898 Search Result which contain "MOSTER_BRAIN"


atau yang mirip dengan itu, lalu diikuti hasil pencarian. Nah, itu jika kita menginputkan text biasa. Coba anda inputkan tag HTML, misalnya saja:

<h1>MOSTER_BRAIN</H1>

Jika kemudian kata MOSTER_BRAIN berubah menjadi berukuran jumbo seperti ini:

Found 599898 Search Result which contain "MOSTER_BRAIN"



Maka berarti pada situs tersebut terdapat kelemahan XSS. Hasil injeksi yang dilakukan attacker tentu saja hanya dapat dilihat oleh si Attacker sendiri karena bersifat temporary.

Contoh potongan kode dari siatu apliaksi web yang tidak tersanitasi dengan baik dapat digambarkan seperti berikut ini:

$page = $_GET['id'];

echo "Anda berada di halaman " . $page . " Artikel dan Trik";

Nah, misalnya nama halaman yang mengandung script diatas ialah victim.php, maka halaman tersebut dapat diinjeksi dengan serangan sederhana:

http://korban.com/victim.php?id=%3CH1%3EMOSTER_BRAIN%3C/H1%3E


Script apa saja yang bisa diinjeksikan

Dalam melakukan XSS, Anda dapat menginjeksikan tag HTML, Java Script atau Script Client Side lainnya, tergantung dari kreatifitas anda dan selemah apa sanitasi pada aplikasi web tersebut. Hanya HTML? Bagaimana dengan script server side?? Tidak bisa, anda tidak bisa melakukan injeksi dengan script Server Side seperti PHP, ASP dan yang sejenisnya. Beberapa contoh script yang dapat anda uji coba untuk diinjeksikan antara lain:

<script>alert("MOSTER_BRAIN")</script>;
<script>alert("MOSTER_BRAIN");</script>
<script>alert("/MOSTER_BRAIN"/)</script>
')alert('MOSTER_BRAIN');
");alert('MOSTER_BRAIN');
<script type=text/javascript>alert("MOSTER_BRAIN")</script>
<script>var var = 1; alert(var)</script>

Contoh-contoh diatas akan memberikan hasil yang sama, yaitu menampilkan sebuah message box. Variasi-variasi yang diberikan dalam melakukan penulisan bertujuan untuk melewati filtering yang dilakukan oleh developer. Contoh pada baris kedelapan ialah salah satu cara yang paling sering dilakukan untuk melewati filtering, yaitu dengan menconvert karakter menjadi ASCII.

Kode Java Script yang anda injeksikan tidak harus berupa mesage BOX. Misalnya saja anda ingin membuak suatu halaman baru menuju forum.balikita.net ketika halaman yang diinjeksi di laod oleh user, maka anda bisa menginjeksikan script berikut:

<script>window.open("http://mosterbrain.blogspot.com/")</script>

Seperti yang sudah dicontohkan di awal pembahasan artikel ini, Anda juga bisa menginjeksikan tag-tag HTML. Misalnya saja:

<H1>MOSTER_BRAIN</H1>
<b><BLINK>MOSTER_BRAIN</BLINK></b>
<img src="http://situsanda.net/attack.gif">

Anda juga bisa menginjeksikan script yang akan menampilkan animasi Flash, me-load file-file musik, dan lain sebagainya, sesuai dengan kreatifitas anda.


Target Injeksi & Sifat Hasil Injeksi

Hasil injeksi yang anda lakukan memiliki 2 sifat tergantung dimana anda melakukan injeksi serangan XSS. Jika anda melakukannya pada suatu variabel yang hanya melewatkan parameter tanpa menyimpannya di database, maka hasilnya hanya bersifat temporary (sementara). Misalnya saja pada search engine, atau ketika anda menginjeksikan melalui URL yang hanya melewatkan parameter. Contoh serangan sederhana:

http://korban.com/find.php?q=<script>alert("TEST")</script>

Nah, jika kemudian muncul kotak pesan yang berbunyi "TEST", maka berarti situs tersebut rentan terhadap serangan XSS, namun hanya bersifat temporary.

Akan tetapi apabila anda menemukan kelemahan ini pada Guest Book, Shout Book, Forum, Blog dan yang sejenisnya, maka hasil serangan anda akan bersifat permanen karena script yang anda injeksikan tersimpan didalam database.


Bagaimana Solusi Untuk Menghindari XSS?


Sederhana, sanitasikan selalu variabel-variabel anda agar user tidak seenaknya dapat menginputkan dan memodifikasi parameter. Misalnya pada script yang telah saya contohkan tadi:



$page = $_GET['id'];
echo "Anda berada di halaman " . $page . " Artikel dan Trik - forum.balikita.net";

Variabel $page perlu disanitasikan sehingga parameter yang dapat diinputkan hanya bertipe data integer. Jika nantinya parameter yang diberikan bukan integer, maka return yang diberikan ialah 0. Contoh sanitasi untuk kasus ini ialah:

$page = (int)$_GET['id'];
echo "Anda berada di halaman " . $page . " Artikel dan Trik - forum.balikita.net";

Sederhana bukan? Ada banyak sekali tehnik sanitasi yang bisa anda terapkan, tergantung dari aplikasi web anda.

CREDITZ : SPYROKID









0 komentar:

Posting Komentar