Skip to content
Home » How to get €500 with XSS – Bug Bounty

How to get €500 with XSS – Bug Bounty

Halo semuanya! Hari ini saya akan berbagi pengalaman bagaimana saya berhasil mendapatkan reward €500 dari program bug bounty melalui penemuan kerentanan XSS (Cross-Site Scripting).

Apa itu XSS?

XSS (Cross-Site Scripting) adalah kerentanan keamanan web di mana penyerang dapat menyisipkan kode berbahaya (biasanya JavaScript) ke dalam situs web yang kemudian dieksekusi di browser pengguna lain.

Tiga Jenis Utama XSS:

Jenis XSSPenjelasanTingkat Risiko
Reflected XSSKode berbahaya dikirim melalui permintaan (misalnya URL) dan langsung “dipantulkan” ke halaman respons tanpa validasi yang tepat.Tinggi
Stored XSSKode berbahaya disimpan dalam database situs web (komentar, profil, dll) dan dieksekusi setiap kali pengguna mengakses halaman yang memuat data tersebut.Sangat Tinggi
DOM-based XSSTerjadi ketika JavaScript di sisi klien memodifikasi DOM dengan cara yang tidak aman berdasarkan data yang berasal dari pengguna.Sedang-Tinggi

Proof of Concept (POC)

Berikut adalah langkah-langkah bagaimana saya menemukan dan membuktikan kerentanan XSS:

Langkah 1: Reconnaissance

Pertama saya mengakses website target, redacted.com dan melakukan information gathering menyeluruh.

Langkah 2: Identifikasi Target

Setelah melakukan reconnaissance, saya menemukan bahwa target menampilkan beberapa campaign di URL:

https://redacted.com/dashboard/signup/campaign/id

Langkah 3: Injeksi Payload

Saya mencoba memasukkan payload XSS berikut:

<math href="javascript:alert(document.cookie)">CLICKME</math>

Langkah 4: Verifikasi

Ternyata payload yang saya masukkan berhasil tereflect pada website, dan ketika tombol CLICKME diklik, payload XSS berhasil tereksekusi!

Analisis Teknis

Serangan XSS ini menggunakan teknik yang cukup menarik:

  1. Tag <math> adalah tag HTML yang valid dan umumnya digunakan untuk markup matematika dalam format MathML.
  2. Dalam POC ini, tag <math> disalahgunakan dengan menambahkan atribut href yang berisi protokol javascript: diikuti dengan kode JavaScript alert(document.cookie).
  3. Ketika pengguna mengklik teks “CLICKME”, browser akan mengeksekusi kode JavaScript yang ditentukan dalam atribut href.
  4. Fungsi alert(document.cookie) menampilkan popup yang berisi cookie dari domain saat ini, yang bisa berisi informasi sesi pengguna yang sensitif.

Mengapa Serangan Ini Berhasil?

  • Beberapa browser memperlakukan tag <math> seperti tag navigasi lainnya (seperti <a>) ketika memiliki atribut href
  • Link dengan protokol javascript: akan menjalankan kode JavaScript ketika diklik
  • Website target tidak menerapkan validasi input dengan baik, sehingga memungkinkan penyisipan kode berbahaya

Mitigasi dan Perbaikan

Untuk mencegah kerentanan XSS seperti ini, developer sebaiknya:

  1. Implementasikan validasi input yang ketat
  2. Terapkan encoding output yang tepat
  3. Gunakan Content-Security-Policy (CSP)
  4. Aktifkan X-XSS-Protection header
  5. Sanitasi data pengguna sebelum ditampilkan

Kesimpulan

Kerentanan XSS masih banyak ditemukan di berbagai website, bahkan yang memiliki tingkat keamanan tinggi sekalipun. Sebagai security researcher, penting untuk terus mempelajari teknik-teknik baru dalam menemukan celah keamanan.

Temuan ini berhasil dilaporkan melalui program bug bounty dan mendapatkan reward sebesar €500.


Disclaimer: Artikel ini dibuat untuk tujuan edukasi. Selalu dapatkan izin tertulis sebelum melakukan pengujian keamanan pada website yang bukan milik Anda.

Leave a Reply

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