My First Bounty at Dicoding.com
Introduction
Halo, Sebelumnya perkenalkan nama saya Yudistira Arya. Saat ini saya sedang menempuh pendidikan pada salah satu Universitas Swasta di Indonesia. Saya sangat aktif pada platform HackTheBox untuk melakukan aksi "Legal" Hacking terhadap mesin yang disediakan disana.
Deskripsi singkat
Bug yang saya temukan pada website Dicoding merupakan bug yang mengizinkan penyerang untuk menautkan akun pihak ketika seperti Google dan Facebook kepada akun Dicoding orang lain karena kesalahan manajemen session browser sehingga penyerang mendapatkan Akses Penuh ke akun Dicoding korban.
Proof of Concept :
- Saya membuat dua akun baru terlebih dahulu untuk keperluan melakukan testing sehingga tidak mengakibatkan kerusakan atau penyalahgunaan data pada akun orang lain. Untuk akun pertama akan saya sebut Attacker dan akun kedua akan saya sebut Victim.
- Saya melakukan pengetesan pada semua fungsi aplikasi sampai akhirnya saya melihat fitur penautan akun menggunakan aplikasi pihak ketika.
- Saya mencoba untuk mengaitkan akun Attacker dengan Aplikasi pihak ketiga, yakni Google menggunakan akun Google milik Attacker.
- Ketika proses penautan akan dilakukan, saya mengaktifkan Burp Suite untuk mencegat lalu lintas jaringan dan melihat request yang terjadi.
- Saya menemukan bahwa Dicoding melakukan penautan akun dengan endpoint
/sso/auth/google?state=&code=&scope=&authuser=1&prompt=none
- Seketika saya langsung menyalin endpoint yang berisikan token tersebut kemudian meng-drop request tersebut agar token OAuth ini belum terpakai.
- Selanjutnya saya mencoba untuk menggunakan token OAuth ini untuk melakukan penautan pada akun Victim dengan cara logout dan login ke akun Victim pada browser yang sama.
- Selanjutnya saya mencoba untuk login menggunakan akun google Attacker yang ditautkan dan sekarang saya mendapatkan akses ke akun Victim.
What’s wrong?
Disini saya mengira bahwa tidak ada validasi pada token OAuth seperti CSRF token sehingga proses penyerangan berjalan dengan sukses. Akan tetapi setelah mengirimkan laporan kerentanan ini ke pihak Dicoding, mereka mengkonfirmasi bahwa kerentanan ini tidak dapat di reproduce.
Singkat cerita, mereka mengkonfirmasi bahwa bug ini hanya dapat di eksploitasi dengan menggunakan browser yang sama. Mereka juga menjelaskan bahwa bug ini dapat di eksploitasi karena kelalaian dalam managemen session cookie sehingga token CSRF untuk OAuth tidak di-clear ketika user melakukan logout dari browser.
Bug ini dinyatakan sebagai tingkat paling rendah karena tingkat eksploitasi yang sulit (browser yang digunakan haruslah sama dan pada perangkat yang sama)
Closing
Demikianlah valid bug pertama yang saya temukan dalam perjalan menuju roma xD. Semoga artikel ini bermanfaat dan menambah wawasan terkait kerentanan dan teknik untuk memperbaikinya. Apabila ada yang ingin dibicarakan, kalian dapat menghubungi saya melalui media sosial seperti Facebook , Instagram, atau Telegram. Adios!