0% menganggap dokumen ini bermanfaat (0 suara)
152 tayangan7 halaman

10 - Cross Site Scripting

Dokumen tersebut merupakan petunjuk praktikum tentang serangan Cross Site Scripting (XSS). Ringkasannya adalah: 1. Praktikum ini membahas dasar teori dan cara melakukan serangan XSS non-persistent dan persistent. 2. Serangan XSS non-persistent dilakukan dengan memasukkan script jahat ke dalam form pencarian yang mengakibatkan script tersebut dieksekusi oleh browser. 3. Serangan XSS persistent melibatkan penyisipan script ke dalam buku tamu se

Diunggah oleh

yuni asyifa
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
152 tayangan7 halaman

10 - Cross Site Scripting

Dokumen tersebut merupakan petunjuk praktikum tentang serangan Cross Site Scripting (XSS). Ringkasannya adalah: 1. Praktikum ini membahas dasar teori dan cara melakukan serangan XSS non-persistent dan persistent. 2. Serangan XSS non-persistent dilakukan dengan memasukkan script jahat ke dalam form pencarian yang mengakibatkan script tersebut dieksekusi oleh browser. 3. Serangan XSS persistent melibatkan penyisipan script ke dalam buku tamu se

Diunggah oleh

yuni asyifa
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 7

Praktikum Sistem Keamanan Informasi By : Lindung Siswanto, S.Kom., M.

Eng

Petunjuk Praktikum

1. Lakukan praktikum sesuai dengan langkah-langkah yang dianjurkan.

Praktikum Cross Site Scripting

A. Dasar Teori
Cross site scripting (XSS) adalah jenis serangan yang mengijinkan kode (client side
script) ke dalam suatu website untuk dijalankan melalui client. Dengan menggunakan teknik
ini, attacker dapat mem-bypass sistem dan menaikkan hak akses.
XSS mengacu pada teknik hacking yang memanfaatkan kerentanan dalam kode
aplikasi web yang memungkinkan penyerang mengirim konten berbahaya dari end user dan
mengumpulkan beberapa jenis data dari korban.
Serangan XSS memiliki 2 tipe yaitu Non persistent dan Persistent, namun intinya
sama yaitu mengijinkan script untuk dijalankan oleh client.

B. Tujuan
1. Mahasiswa dapat mengetahui celah keamanan pada aplikasi web yang dapat diserang
dengan xss.
2. Mahasiswa dapat mengetahui dan mencegah serangan xss pada aplikasi web.

C. Catatan
1. Praktikum dapat dilakukan di Sistem Operasi Windows atau Ubuntu.
2. Lakukan Instalasi instalasi Xampp atau Wamp Server untuk Sistem Operasi Windows dan
Lamp Server untuk Sistem Operasi Ubuntu.
3. Jalankan service web server dan mysql server untuk melakukan praktikum.

D. Percobaan XSS Non Persistent


1. Bukalah phpmyadmin dan buatlah database sesuai dengan nim anda.

2. Klik tab SQL, masukkan kode berikut untuk membuat tabel.

CREATE TABLE IF NOT EXISTS `guestbook` (


`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nama` varchar(50) NOT NULL,
`email` varchar(100) NOT NULL,
`pesan` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Klik GO, maka akan tercipta sebuah tabel guestbook.

1
Praktikum Sistem Keamanan Informasi By : Lindung Siswanto, S.Kom., M.Eng

3. Klik tab SQL, masukkan kode berikut untuk menambah data pada tabel

INSERT INTO `guestbook` (`id`, `nama`, `email`, `pesan`) VALUES


(1, 'tamu', '[email protected]', 'haiiii'),
(2, 'attacker', '[email protected]', '<script
language="javascript">\r\ndocument.write("<h1>te
ss</h1>");\r\nalert("hehhe");\r\n</script>');

Perintah tersebut akan menambah data di tabel guestbook, klik pada nama tabel untuk
melihat data yang dihasilkan.

4. Buatlah folder sesuai dengan NIM anda di direktori root


Windows ➔ C:\xampp\htdocs\nim
Ubuntu ➔ /var/www/nim

5. Buka teks editor, dan ketikkan

<form action="hasil_nim.php" method="GET">


Search : <input type="text" name="q">
<br>
<input type="submit" name="submit" value="Cari">
</form>

Simpanlah file tersebut di folder yang anda buat dengan nama search.php

6. Pada teks editor, buatlah file hasil_nim.php dan simpan pada folder yang sama.
<?php
mysql_connect("localhost","root","xxxxxx");
mysql_select_db("nim");
$q=@$_GET['q'];
if(isset($_GET['submit'])) {
$ambil=mysql_query("select * from guestbook where nama like '%$q%'");
$cek=mysql_num_rows($ambil);
if($cek>0) {
$data=mysql_fetch_array($ambil);
echo "hasil dari keyword : $q adalah <br>";
echo "$data[nama]<hr>";
}
else {
echo "hasil dari keyword : $q adalah <br>";
echo "data tidak ditemukan";
}
}else {
echo "tidak ada data yang dicari";
}
?>

Sesuaikan konfigurasi Mysql server sesuai dengan komputer yang digunakan.

7. Buka browser dan akses file http://localhost/nim/search.php dan cobalah untuk


mencari data yang terdapat di database atau data yang tidak ada pada database.

2
Praktikum Sistem Keamanan Informasi By : Lindung Siswanto, S.Kom., M.Eng

Dapat dilihat bahwa browser menampilkan keyword yang dicari. Hasil dari pencarian
tidak dibutuhkan, yang dibutuhkan adalah output hasil pencarian pada address bar.

8. Cobalah masukkan kode HTML pada kotak pencarian

Dengan informasi yang didapatkan pada langkah sebelumnya, serangan awal dimulai
dengan fasilitas pencarian dengan memasukkan script dengan harapan browser dapat
menjalankan script tersebut.
Bug ini disebut dengan bug xss non persistent karena bug ini tidak berlaku pada user
yang sedang melihat halaman yang sama yaitu search.php. browser dapat
menampilkan halaman yang sama jika attacker mengirim link yang sudah dimanipulasi.

9. Pencegahan
- Pada file search.php gantilah
<form action="hasil.php" method="GET">
Menjadi :
<form action="hasil.php" method="POST">

- Pada file hasil_nim.php gantilah


$q=@$_GET[‘q’];
Menjadi :
$q=@$_POST[‘q’];

Dan cari baris


if(isset($_GET['submit'])){
Ubahlah menjadi :
if(isset($_POST['submit'])) {

- Lakukan percoban, capture hasilnya, lihat perbedaan pada url yang dihasilkan dan
tambahkan analisa anda.

E. Percobaan XSS Persistent

1. Buka aplikasi editor dan masukkan kode berikut :

<?php
$host="localhost"; $uname="root";
$pass="xxxxxx"; $db="nim";
$koneksi=mysql_connect($host,$uname,$pass);
mysql_select_db($db,$koneksi);
?>
3
Praktikum Sistem Keamanan Informasi By : Lindung Siswanto, S.Kom., M.Eng

Sesuaikan konfigurasi script diatas dengan database server pada komputer anda.
Simpan file tersebut dengan nama koneksi_nim.php
2. Pada aplikasi editor masukkan kode berikut :
<title>Buku Tamu</title>
<p class="judul">&nbsp;Buku Tamu
<form method="post" action="proses_nim.php">
&nbsp;&nbsp;Nama *<br>&nbsp;&nbsp;<input class="kotak" type="text" name="nama"
size="34"><br>
&nbsp;&nbsp;Email *<br>&nbsp;&nbsp;<input class="kotak" type="text" name="email"
size="34"><br>
&nbsp;&nbsp;Pesan *<br>&nbsp;&nbsp;<textarea class="kotak" name="pesan" rows="8"
cols="40"></textarea>
<br>&nbsp;&nbsp;*) Wajib diisi <br>
<p>&nbsp;&nbsp;<input class="tombol" type="reset" value="Reset"
name="kosongkan">
<input type="submit" class="tombol" value="Kirim" name="kirim">
</form>
<p>&nbsp;&nbsp;[ <a href="lihatgb_nim.php">Lihat Data Tamu</a> ]

Simpan file tersebut dengan nama index.php pada direktori root web server.

3. Pada aplikasi editor masukkan kode berikut :


<style type="text/css">
body { background:#fff;
color:#000;
font-family:tahoma;
font-size:15px;
}
</style>
<?php
include'koneksi_nim.php';
if(isset($_POST['kirim']) && ($_POST['kirim']==='Kirim'))
{
/*---tanpa filter---*/
$nama=$_POST['nama'];
$email=$_POST['email'];
$pesan=$_POST['pesan'];

if(($nama=='') || ($email=='') || ($pesan==''))


$error= "Data tidak lengkap.<br>";

if(($nama!='') && ($email!='') && ($pesan!=''))


{ $queryAddGb=mysql_query("insert into guestbook
values(NULL,'$nama','$email','$pesan')");
if($queryAddGb)
{ echo"<b>Guestbook berhasil disimpan</b></font>";
echo"<meta http-equiv=\"refresh\" content=\"2; url=./\">";
exit;
}else
{ echo"<font color=red><b>Data gagal disimpan</b></font>";
echo"<meta http-equiv=\"refresh\" content=\"2; url=./\">";
exit;
}
}
if(isset($error))
{ echo"<font color=red><b>$error</b></font>";
echo"<meta http-equiv=\"refresh\" content=\"2; url=./\">";
exit;
}
}
?>

4
Praktikum Sistem Keamanan Informasi By : Lindung Siswanto, S.Kom., M.Eng

Simpan file diatas dengan nama proses_nim.php pada direktori root.

4. Pada aplikasi editor masukkan kode berikut :


<title>Data Tamu</title>
<style type="text/css">
body {
background:#fff;
border:1px solid #444444;
font-family:tahoma;
font-size:12px;
color:#000;
}
.kotak { background:#e3ebf3;
border:1px solid #444444;
color:#000;
font-family:tahoma;
font-size:13px;
}
.kotak:hover { border-bottom:1px solid #aac7e5;
border-top:1px solid #aac7e5;
background : #2b4661;
}
td { background:#e3ebf3;
border:1px solid #444444;
color:#000;
font-family:tahoma;
font-size:13px;
}
td:hover {
background : #dedede;
}

a{ color:#000;
text-decoration:none;
}
a:hover { color:#2b4661;
text-decoration:none;
}
</style>
<table>
<?php
include'koneksi_nim.php';
$queryGb = mysql_query("select * from guestbook");
$jmlGb = mysql_num_rows($queryGb);
if($jmlGb==0)
{
echo"Data tamu masih kosong"; }
else
{ $queryTampil=mysql_query("select * from guestbook order by id desc");

echo"<p><b>&nbsp;&nbsp;DATA TAMU</b></p>";
echo "<table width=\"50%\">";

while($dataGb=mysql_fetch_array($queryTampil))
{
echo"<tr><td align=\"justify\">dari &nbsp;&nbsp;&nbsp;: <a
href=\"mailto:$dataGb[2]\">$dataGb[1]</a><br>";

echo"pesan : $dataGb[3]</td></tr>";
echo "<tr><th></th></tr>"; }
echo "</table>";
}
?>
<p>&nbsp;[ <a href="./">Buku Tamu</a> ]

5
Praktikum Sistem Keamanan Informasi By : Lindung Siswanto, S.Kom., M.Eng

Simpan file diatas dengan nama lihatgb_nim.php di direktori root.


5. Buka browser masukkan alamat http://localhost/nim/index.php dan masukkan data
seperti contoh berikut.

Client side
scripting

Script disimpan
dan dijalankan di
server

Jenis serangan ini memberikan dampak global, ketika dijalankan maka script akan
tersimpan di server dan kemudian ditampilkan secara permanen secara “normal” ke
user lain. Setiap user yang mengakses halaman yang sama akan melihat tampilan yang
sama atau bahkan berbeda sesuai dengan script yang dimasukkan.

6. Cobalah memasukkan kode HTML berikut pada form pesan dan lihat hasilnya
a. Masukkan kode berikut :
<script language=”javascript”> document.write(“<h2>Attacked by
nim</h1>”);alert(“Saya berhasil…!!!”);</script>

b. Buka aplikasi editor dan masukkan kode berikut :


<font color=red><h1>Anda sudah di HACKED oleh NIM</h1></font>

Simpanlah dengan nama hacked_nim.php di direktori root


Pada form buku tamu masukkan kode berikut :
<iframe src="hacked_nim.php" height=200 width=400 frameborder=1
align=center></iframe>

c. Masukkan kode berikut :


<script>alert(document.cookie)</script>

6
Praktikum Sistem Keamanan Informasi By : Lindung Siswanto, S.Kom., M.Eng

7. Pencegahan
a. Menggunakan htmlentities
Bukalah file proses_nim.php, cari baris berikut :
$nama=$_POST['nama'];
$email=$_POST['email'];
$pesan=$_POST['pesan'];
Ubahlah baris tersebut menjadi :
$nama=trim(htmlentities($_POST['nama']));
$email=trim(htmlentities($_POST['email']));
$pesan=trim(htmlentities($_POST['pesan']));
Ulangi langkah 6 danlihat hasil nya
b. Menggunakan strip_tags
Pada baris yang sama seperti baris diatas, gantilah script menjadi :
$nama=trim(strip_tags($_POST['nama']));
$email=trim(strip_tags($_POST['email']));
$pesan=trim(strip_tags($_POST['pesan']));
Ulangi langkah 6, dan bandingkan dengan hasil pada langkah sebelumnya
c. Menggunakan htmlspecialchars
Pada baris yang sama seperti baris diatas, gantilah script menjadi :
$nama=trim(htmlspecialchars($_POST['nama']));
$email=trim(htmlspecialchars($_POST['email']));
$pesan=trim(htmlspecialchars($_POST['pesan']));
Ulangi langkah 6, dan bandingkan dengan hasil pada langkah sebelumnya

Lakukan percobaan diatas, capture hasilnya dan beri analisis singkat anda

F. Tugas
1. Buatlah laporan praktikum.
2. Lakukan analisa bagaimana percobaan non persistent pada langkah 8 dapat terjadi ?
3. Apa perbedaan antara htmlentities, strip_tags dan htmlspecialchars
?

Anda mungkin juga menyukai