DOM-Based XSS

DOM-Based XSS=JS Logic Error

3. Jenis-jenis XSS (Secara Mekanisme, Bukan Definisi)

Modul pembelajaran mengenai  Cross-Site Scripting (DOM XSS) umumnya mencakup pemahaman mendalam tentang bagaimana skrip berbahaya dieksekusi di sisi klien (browser) tanpa melibatkan server dalam proses eksekusinya. 

Berikut adalah sub-topik utama dalam modul DOM Based XSS:

1. Dasar-Dasar DOM Based XSS

  • Definisi DOM XSS: Penjelasan bahwa serangan ini terjadi pada sisi klien (client-side), di mana manipulasi Document Object Model (DOM) menyebabkan eksekusi skrip berbahaya.
  • Perbedaan dengan XSS Klasik: Berbeda dengan Reflected atau Stored XSS, pada DOM XSS, payload (skrip) tidak pernah dikirim ke server, melainkan diproses sepenuhnya di browser korban.
  • Konsep DOM (Document Object Model): Memahami bagaimana JavaScript mengakses dan memanipulasi elemen HTML (misalnya: document.location.searchinnerHTML). Acunetix +3

2. Komponen Utama DOM XSS

  • Source (Sumber): Tempat input pengguna berbahaya berasal. Contoh: URL, window.location.searchwindow.location.hash, atau referrer.
  • Sink (Tujuan): Fungsi atau elemen DOM yang menerima data dari source dan mengeksekusinya. Contoh: eval()setTimeout()innerHTMLdocument.write().
  • Alur Data: Bagaimana data mengalir dari source ke sink tanpa pembersihan (sanitization) yang tepat. ouTube +1

3. Contoh Kasus dan Eksploitasi

  • Manipulasi URL: Menggunakan fragment URL (#) atau query string (?) untuk memasukkan payload JavaScript.
  • Objek window.location: Contoh kerentanan saat aplikasi menggunakan location.hash untuk mengubah konten halaman secara dinamis.
  • DOM XSS pada 404 Pages: Memanfaatkan halaman kesalahan yang mencerminkan input URL. YouTube +1

4. Deteksi dan Analisis

  • Analisis Kode Sisi Klien: Memeriksa JavaScript dalam browser (melalui Developer Tools) untuk mencari fungsi sink yang berbahaya.
  • Alat Bantu (Tools): Menggunakan DOM Invader dari Burp Suite, OWASP ZAP, atau scanner otomatis lainnya untuk mengidentifikasi source dan sink. Acunetix +3

5. Pencegahan dan Mitigasi

  • Output Encoding: Melakukan encode data di sisi klien sebelum menempatkannya ke dalam DOM.
  • Validasi Input: Memastikan data yang diterima dari source (URL, dll) sesuai format yang diharapkan.
  • Menggunakan API yang Aman: Menghindari penggunaan sink berbahaya (seperti innerHTML) dan beralih ke alternatif yang lebih aman (seperti textContent atau innerText).
  • Content Security Policy (CSP): Menerapkan kebijakan CSP yang ketat untuk membatasi eksekusi skrip. Anak Teknik Indonesia +4

Sub-topik ini sering diajarkan dalam konteks keamanan aplikasi web (AppSec) dan bug bounty hunting.

Leave a Reply

Your email address will not be published. Required fields are marked *