Apa dan Bagaimana XSS itu? live (http://sctv.co.id)

Posted: 1 Maret 2011 in Pemrograman Web, PHP, Security, Tips dan Trik

Pertama-tama saya sangat berterima kasih buat Om wenkhairu [at] devilzc0de yang dah menemukan bug di http://www.sctv.co.id/. Numpang minjem Om, biar enak ngejelasinnya kalo live Oke sebelum saya menjelaskan apa itu XSS ada baiknya kita cobain dulu neh http://www.sctv.co.id/. Biasanya sih bug ini terdapat pada fasilitas search dan memang betul pada kasus kali ini terletak pada fasilitas searchnya.

Dan bila seandainya kita mengetikkan “cruzenaldo”

Maka hasilnya adalah Ditemukan 0 data untuk pencarian ‘cruzenaldo’

Nah cara untuk mengecek apakah fasilitas tersebut memiliki bug XSS adalah dengan memasukkan tag-tag HTML di dalamnya. Contohnya “<h1>cruzenaldo</h1>”.

Maka hasil yang di dapat adalah

Wow� Vulnerable. Banyak tag-tag HTML yang bisa kita input, bahkan javascript pun bisa. Nah bug ini merupakan bug yang gak berpengaruh apa-apa pada servernya. Jadi cuman komputer kita itu sendiri yang bisa melihat perubahan yang terjadi kecuali kita memberikan link berikut kepada seseorang

 

Code:
<?php http://www.sctv.co.id/search.php?s=<h1>cruzenaldo</h1> ?>

Maka orang itu akan melihat hasilnya. Nah walaupun terlihat seperti bug yang gak berguna akan tetapi jika kita mau memanfaatkannya dengan maksimal hasilnya bisa sangat membahayakan. Tehnik Social Engineering biasanya sering digunakan. Contoh�

 

Code:
<?php http://www.sctv.co.id/search.php?s=</p> <h1>Selamat Anda Memenangkan Hadiah<br>bla...bla...bla...</h1> ?>

Semua tergantung bagaimana kreatifnya kita. Mungkin bisa dengan menggunakan tehnik XSS Cookies Stealing? Untuk tutorialnya kalian bisa langsung mendownload aja�

POC XSS ATTACK (PEMULA) by Aurel666

Nah sekarang dah mulai penjelasannya. Kita gak mungkin dong membongkar source code dari sctv.co.id, lagian saya memang gak bisa. Disini saya akan memberikan script sederhana bagaimana bug ini bisa terjadi.

Buat file cari.php yang berisi kode berikut

 

Code:
<?php <html>
<
head>
<
title>Contoh Bug XSS</title>
</
head>
<
body>
<
form id="form1" name="form1" method="post" action="hasil.php">
<
table width="200" border="1">
<
tr>
<
td>Cari</td>
<
td><input type="text" name="cari" /></td>
</
tr>
<
tr>
<
td>&nbsp;</td>
<
td><input type="submit" name="Submit" value="Submit" /></td>
</
tr>
</
table>
</
form>
</
body>
</
html> ?>

Hasilnya adalah 1 buah Textbox dan 1 buah button

Jadi penjelasan kode diatas adalah ketika kita menginputkan nilai apa aja maka Action / langkah berikutnya adalah menuju hasil.php.
Nah sekarang kita akan membuat hasil.php yang berisi kode berikut

 

Code:
<?php <html>
<
head>
<
title>Contoh Bug XSS</title>
</
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

Hasil berikut terlihat normal

Nah ketika kita menginput dengan menambahkan tag-tag html maka hasilnya adalah

Nah kesimpulannya adalah kita tidak melakukan pemfilteran terhadap apa yang diinputkan oleh user, misalnya tag HTML ataupun Javascript. Bisa kita liat pada hasil.php.

Dalam hal ini banyak cara yang bisa lakukan dan nantinya tergantung dari aplikasi atau fasilitas apa yang kita buat. Berikut adalah beberapa fungsi yang bisa kita gunakan dalam PHP.

ereg_replace(), eregi_replace(), str_replace()

Ketiga fungsi diatas mempunyai 1 kesamaan yaitu mengganti inputan yang dilakukan oleh user dalam hal ini tanda < dan >. Contoh, ganti / tambahkan source code pada hasil.php dengan kode berikut

 

Code:
<?php <html>
<
head>
<
title>Contoh Bug XSS</title>
</
head><body>
<?
php
$cari
=$_POST['cari'];
$cari=ereg_replace("<","&lt;","$cari");
$cari=ereg_replace(">","&gt;","$cari");
echo
"Hasil Pencarian : $cari";
?>
</body>
</html> ?>

Penjelasan kode diatas adalah dengan menggunakan fungsi ereg_replace(). Jadi ketika user melakukan request pada $cari maka nilai tersebut akan difilter terlebih dahulu. Jadi dia mengganti tanda < dengan $lt; dan > dengan $gt; Maka hasilnya

Fungsi lain yang bisa kita gunakan adalah htmlentities() atau strip_tags().
Contoh penggunaan htmlentities()

 

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

Dan contoh penggunaan strip_tags()

 

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

Perbedaan dari keduanya adalah jika kita menggunakan htmlentities() hasil yang didapat sama dengan kita menggunakan ereg_replace() sedangkan jika kita menggukan strip_tags() maka fungsi ini akan membabat habis semua tag-tag yang diinputkan sehingga tidak akan ditampilkan. Jadi yang tampil hanya Artikel Hacking tanpa <h1> dan </h1>.

Gak susah kan? Tapi kenapa situs sekelas sctv.co.id masih kena? Tanya kenapa?

Source saya dapat dari http://www.forumphp.web.id/phpforum_5558_Apa_dan_Bagaimana_XSS_itu?_live_%28http:__sctv.co.id%29.html

Atau di  : http://cruzenaldo.com/apa-dan-bagaimana-xss-itu-live-sctv-co-id/

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

w

Connecting to %s