Sabtu, 27 April 2019

Bug bounty write-up: Bypass Reflected XSS dan bypass blocked document.cookie


Selamat datang pada artikel pertama saya tentang bug bounty write-up. Sebetulnya saya males kalau nulis write-up seperti ini, berhubung saya mau promosi tool "Bashter v4", jadinya saya tulis deh :P.

Kemarin ada yang tanya ke kita nih, pertanyaannya yaitu:

"Bang belajar bug bounty berapa lama?"

Jujur saya baru bulan ini (April 2019) mulai fokus Bug Bounty di BugCrowd, dulu sekitar tahun 2017 sempat juga di HackerOne tapi ditolak mulu jadinya frustasi.

Abstrak

Awalnya saya hanya sedang QC tool Bashter v4 saja, tapi secara tidak sengaja menemukan Bug disalah satu website ecommerce di Negara bagian Timur sana.
Dengan salah satu fitur XSS Detection via URL di Bashter akhirnya saya menemukan celah tersebut.

Note: URL akan dihide karena saya tidak dapat izin untuk di "disclose". Saya cuma mau sharing pengalamannya saja.

Vulnerable link:
https://[REDACTED].com/[REDACTED]/?fbs=Inject_Here

Reflected XSS tersebut terdapat pada tag <a href="... inject here ...".

How to Reproduce

Saya mencoba payload seperti di bawah ini:
https://[REDACTED].com/[REDACTED]/?fbs=%22%20onmouseover=%22alert(73313)%22

Namun aplikasi tidak menerima input tersebut karena output "onmouseover" direplace menjadi NULL.


Bypass onmouseover
Setelah itu saya isang mengubah "onmouseover" menjadi "o<p>nmouseover" dan akhirnya, alert pun muncul.



Kemudian saya report url di bawah ini (dengan risk "Medium"):
https://[REDACTED].com/[REDACTED]/?fbs=%22%20o%3Cp%3Enmouseover=%22alert(73313)%22

Setelah menunggu beberapa jam saya dapat balasan bahwa celah tersebut valid (Yeay! rewarded $100), but i feel something wrong.
Yaitu bounty-nya masuk kedalam range yang paling rendah.
Kemudian saya menanyakan terkait Bounty-nya dan lagi-lagi dibalas dengan cepat.

"The vulnerability that you find is not too dangerous for other users , because we have disabled inputted document object"

Dalam hati "Hum, okay", kemudian saya mengetest untuk menampilkan alert dengan document.cookie.
https://[REDACTED].com/[REDACTED]/?fbs=%22%20o%3Cp%3Enmouseover=%22alert(document.cookie)%22

Ternyata benar, output "document.cookie" direplace menjadi "[removed]".


Bypass blocked document.cookie

Pada akhirnya mental pemberontak saya bangun dan mengatakan dalam hati "are you f*ckin sure?".

Lalu saya meminum kopi dan membuka Google, kemudian mencari-cari artikel dengan keyword:

  • How to save document cookie into variable -document.cookie


Saya menemukan alternatif yaitu menggunakan:
  • document['cookie']


Setelah itu saya kembali membuka celah XSS dan mengganti document.cookie menjadi document['cookie']:

https://[REDACTED].com/[REDACTED]/?fbs=%22%20o%3Cp%3Enmouseover=%22alert(document['cookie'])%22

Dan mulut kotor saya berbicara: "Finally! come to papa b*tch"

Akhirnya dengan menggunakan "document['cookie']", cookie berhasil saya tampilkan pada alert tersebut.


Lalu saya merevisi dan memperjelas report yang telah saya kirimkan sebelumnya.


Timeline:

  • 26 Apr 2019 (1 PM) = Report via HackerOne
  • 26 Apr 2019 (3 PM) = Company: Valid! + rewarded $100
  • 26 Apr 2019 (3 PM) = Asked about Bounty
  • 26 Apr 2019 (6 PM) = Company staff explain that
  • 27 Apr 2019 (1 AM) = Bypass document cookie report sent!
  • 27 Apr 2019 (9 AM) = Resolved + rewarded $150
  • 27 Apr 2019 ( ~~ ) = Time to sleep #EOF :P


Oh iya untuk Bashter yang versi 4 ini belum kita release, masih dalam tahap proses testing dulu yah, untuk yang versi 3 bisa kalian download di github kami.


Terima kasih.
Share:

4 komentar:

  1. "Ternyata benar, output "document.cookie" direplace menjadi "[removed]"."
    cara nge-check payload kita direplace jadi apa gimana ya gan? saya coba view-page-source tapi gag ada payload saya. mohon pencerahannya, terima kasih sebelumnya

    BalasHapus
  2. Kemungkinan di dalam DOM, bisa di check via inspect element terus copy all source

    BalasHapus
  3. Bg misal nya kita udh ada pemberitahuan di hackerone dpt bounty,terus kita isi pajak bank kan (form tax ) di payment ada tulisan pending payment,itu maksud nya apa?thanks

    BalasHapus