Anda di halaman 1dari 7

Cross Site Scripting

Ps: Tutorial ini semata-mata dibuat


dari tutorial yang diberikan ini, bukan menjadi tanggung jawab penulis, penyebar, ataupun
media penyelenggara konten ini.

I. PERSIAPAN
Copy-kan terlebih dahulu files home.php dan post.php ke dalam folder yang diinginkan. Dalam hal ini,
file yang bersangkutan diletakan pada folder xss sehingga ketika ingin mengaksesnya, maka harus
mengakses melalui URL : http://localhost/xss/home.php


Cross Site Scripting Demo

t.o.creativity@live.com
mata dibuat hanya untuk tujuan pendidikan. Kesalahan penggunaan
dari tutorial yang diberikan ini, bukan menjadi tanggung jawab penulis, penyebar, ataupun
media penyelenggara konten ini.
home.php dan post.php ke dalam folder yang diinginkan. Dalam hal ini,
file yang bersangkutan diletakan pada folder xss sehingga ketika ingin mengaksesnya, maka harus
http://localhost/xss/home.php
Figure 1 home.php
esalahan penggunaan
dari tutorial yang diberikan ini, bukan menjadi tanggung jawab penulis, penyebar, ataupun
home.php dan post.php ke dalam folder yang diinginkan. Dalam hal ini,
file yang bersangkutan diletakan pada folder xss sehingga ketika ingin mengaksesnya, maka harus

II. SKENARIO (POST METHOD)
Pada bagian ini, kita akan beralih dengan melakukan pemeriksaan celah XSS dengan POST Method.
paling sederhana untuk melakukan pemeriksaan
memberikan tag HTML sederhana berupa heading atau dengan menggunakan javascript untuk
memunculkan pop up alert.
Contoh pemberian tag HTML berupa heading (dilakukan dengan POST Method. Injeksi di
form yang tersedia).
Bila ternyata terdapat kelemahan XSS pada form yang bersangkutan, maka akan keluar hasil sebagai
berikut :
Figure 3 Injeksi yang berhasil dilakukan
Kemudian, untuk uji coba dengan menggunakan javascript, Anda hanya perlu mengganti tag :
<h1>heading 1</h1> dengan <script>alert(1)</script>
Pada bagian ini, kita akan beralih dengan melakukan pemeriksaan celah XSS dengan POST Method.
paling sederhana untuk melakukan pemeriksaan terhadap celah Cross Site Scripting
memberikan tag HTML sederhana berupa heading atau dengan menggunakan javascript untuk
Contoh pemberian tag HTML berupa heading (dilakukan dengan POST Method. Injeksi di
Figure 2 Injeksi dengan Tag HTML
Bila ternyata terdapat kelemahan XSS pada form yang bersangkutan, maka akan keluar hasil sebagai

Injeksi yang berhasil dilakukan dengan tag HTML
dengan menggunakan javascript, Anda hanya perlu mengganti tag :
<script>alert(1)</script>
Pada bagian ini, kita akan beralih dengan melakukan pemeriksaan celah XSS dengan POST Method. Hal
Cross Site Scripting yaitu dengan
memberikan tag HTML sederhana berupa heading atau dengan menggunakan javascript untuk
Contoh pemberian tag HTML berupa heading (dilakukan dengan POST Method. Injeksi di-input pada

Bila ternyata terdapat kelemahan XSS pada form yang bersangkutan, maka akan keluar hasil sebagai
dengan menggunakan javascript, Anda hanya perlu mengganti tag :
Bila berhasil, maka hasilny adalah :

Figure 4 Injeksi yang berhasil dilakukan dengan javascript










III. SKENARIO (GET METHOD)
Pada bagian ini, kita akan beralih dengan melakukan pemeriksaan celah XSS dengan GET Method. Coba
ketikan URL berikut : http://localhost/xss/home.php?username=abc&password=abc&token=abc
(ingat, URL yang Anda gunakan mungkin akan berbeda). Dalam hal ini, kita akan dapat melihat bahwa
pengisian terhadap form yang tersedia juga dapat dilakukan via URL (GET Method). Sekar
coba injeksi dengan javascript sederhana seperti sebelumnya pada URL yang ada. Misalnya, dalam hal
ini, username=abc, maka kita ganti menjadi username=<script>alert(1)</script>

Bagaimana? Hasilnya mencurigakan bukan? Suatu metacharacter dapat masuk ke luar dari form yang
ada. Nah, mari kita sedikit melihat source code dari hasil setelah injeksi ini.
Figure
Tertulis :
Pada bagian ini, kita akan beralih dengan melakukan pemeriksaan celah XSS dengan GET Method. Coba
http://localhost/xss/home.php?username=abc&password=abc&token=abc
(ingat, URL yang Anda gunakan mungkin akan berbeda). Dalam hal ini, kita akan dapat melihat bahwa
pengisian terhadap form yang tersedia juga dapat dilakukan via URL (GET Method). Sekar
coba injeksi dengan javascript sederhana seperti sebelumnya pada URL yang ada. Misalnya, dalam hal
ini, username=abc, maka kita ganti menjadi username=<script>alert(1)</script>
Figure 5 Injeksi pada GET Method
Bagaimana? Hasilnya mencurigakan bukan? Suatu metacharacter dapat masuk ke luar dari form yang
ada. Nah, mari kita sedikit melihat source code dari hasil setelah injeksi ini.
Figure 6 View Source pada Hasil Injeksi
Pada bagian ini, kita akan beralih dengan melakukan pemeriksaan celah XSS dengan GET Method. Coba
http://localhost/xss/home.php?username=abc&password=abc&token=abc
(ingat, URL yang Anda gunakan mungkin akan berbeda). Dalam hal ini, kita akan dapat melihat bahwa
pengisian terhadap form yang tersedia juga dapat dilakukan via URL (GET Method). Sekarang, mari kita
coba injeksi dengan javascript sederhana seperti sebelumnya pada URL yang ada. Misalnya, dalam hal

Bagaimana? Hasilnya mencurigakan bukan? Suatu metacharacter dapat masuk ke luar dari form yang

<td> <input type="text" name="txusername" size=20 value="<script>alert("1")</script>" /></td>

Perhatikan baik-baik. Bila script berjalan dengan baik, maka seharusnya seperti ini :
<td> <input type="text" name="txpassword" size=50 value="abc"/> </td>

Sederhananya adalah, bila berjalan dengan baik, maka setiap value yang ada akan berwarna biru.
Namun, bila tidak berjalan sebagaimana harusnya, maka akan berwarna merah seperti yang nampak
pada gambar.

Perhatikan alurnya baik-baik, script ini diakhir oleh character > di bagian akhir. Dikarenakan kita juga
mempunyai character > pada injeksi kita (</script>), maka secara tidak langsung, hasil injeksi kita akan
mati atau tidak berjalan. Lalu, bagaimana menjalankannya? Tinggal tambahkan character > di awal
bukan? Tapi, belum selesai sampai di sini. Selain menambahkan character > di awal, terdapat 1
character lagi yang harus ditambahkan.

Sekarang, lihat lagi alur script nya.
Input type=text
name=txusername
value=<script>alert(1)</script> disederhanakan value=isi_value

Setiap deklarasi, dilanjutkan dengan tanda kutip. Sekarang, permasalahan ke-2 yang membuat script kita
tidak berjalan adalah script ini dinilai bagian dari value sehingga fungsi pop up nya tidak akan keluar
karena dibaca sebagai input-an biasa. Untuk membuatnya berjalan, maka kita harus tutup tanda kutip
pada value. Kurang lebih, saat nilai belum diisi, maka sistem secara tidak langsung sudah siap dengan
syntax berikut :
Input type= _____ menunggu isi dan kemudian ditutup setelah diisi.
Name= _____ menunggu isi dan kemudian ditutup setelah diisi.
Value= _____ menunggu isi dan kemudian ditutup setelah diisi.
Maka, pada bagian value, kita isikan dengan character langsung supaya dia langsung tertutup.
Kemudian, baru dilanjutkan dengan character > yang merupakan penutup akhir script. Jadi, inti akhirnya
begini :
<td> <input type="text" name="txusername" size=20 value=""><script>alert("1")</script>" /></td>




Langsung saja kita ke praktik nya :
Ketikan pada URL :
http://localhost/xss/home.php?username="><script>alert("1")</script>&password=abc&token=abc
Bila hasilnya benar, maka akan nampak hasil seperti berikut ini :

Figure 7 Hasil injeksi melalui GET Method

Hal ini juga berlaku untuk value password dan token pada scenario ini.

IV. SOLUSI
Berikan pem-filter-an terhadap metacharacter baik pada form maupun pada URL yang ada. Jadi,
seseorang tidak diizinkan untuk meng-input character seperti > / \ ; ataupun ,.
Berbagai macam bahasa pemrograman mempunyai ciri khas tersendiri dalam mengatasi hal ini, namun
inti dari semuanya tetap sama.

V. KESIMPULAN
Dari dua scenario di atas, dapat kita lihat bahwa terdapat perbedaan yang cukup significant dari hasil
injeksi pada URL yang ada.
- Pada POST Method, Attacker tidak dapat mengirimkan langsung link hasil injeksi kepada
korbannya. Bukan berarti tidak dapat, hanya saja diperlukan pihak ke-3 untuk dapat
menginjeksikan script yang ada pada target. Dengan mempertimbangkan hal ini, tentu saja kita
tidak dapat menilai bahwa nilai risiko yang terdapat di dalamnya tinggi.

- Pada GET Method, Attacker dapat langsung mengirimkan link hasil injeksi kepada korbannya.
Dengan melihat perbedaan antara kedua metode di atas, maka dapat disimpulkan bahwa XSS
dengan GET Method jauh lebih berbahaya dibandingkan dengan POST Method.

- Script yang diinjeksikan pada demo ini dapat bervariasi.

- Cara mem-bypass logika aplikasi pada demo ini merupakan satu dari sekian banyak cara dalam
mengakali hal ini. Jadi, tidak selalu setiap form ataupun URL dapat di-bypass dengan cara ini.

Anda mungkin juga menyukai