Search Suggest

Business Logic Error on Dicoding

Hallo semuanya selamat datang pada artikel pertama saya di blog pribadi saya. Pada kesempatan kali ini izinkan saya untuk membagikan sebuah artikel temuan bug pada sebuah platform pembelajaran online tentang teknologi yang populer di Indonesia yaitu dicoding.

Sebelum saya masuk ke pembahasan, saya akan memberikan sedikit cerita sebelum saya mendapatkan bug ini. Jadi, beberapa bulan sebelum saya mendapatkan bug pada dicoding, saya mengikuti program kampus merdeka yaitu MSIB (magang & studi independent bersertifikat) suatu program pemerintah yang bertujuan untuk para mahasiswa belajar / mencari pengalaman di luar kampus dan mendapatkan full konversi SKS (tidak melakukan kuliah tapi mendapatkan nilai). Dan saya diterima mitra dicoding sebagai tempat belajar saya studi independent selama 1 semester. Singkat cerita saya lulus dari program tersebut selama 1 semester lama-nya dan mendapatkan 1000 point dicoding sebagai hadiah kelulusan. Dan kita akan mulai ke pembahasan-nya.

Setelah saya lulus MSIB dan mendapatkan 1000 point dicoding, saya mulai mencari celah keamanan pada platform dicoding. Setelah melakukan beberapa uji coba, saya menemukan kerentanan yang disebabkan oleh race condition pada parameter “point”. Kerentanan ini memungkinkan user untuk menggunakan poin tanpa harus membayar biaya apa pun / user dapat menggandakan point.

Apa itu Race Conditon?

Sebuah situasi di mana beberapa proses yang berjalan bersamaan saling berkompetisi untuk mengakses dan memanipulasi data yang sama.

Misalkan, ketika 2 atau lebih user ingin melakukan perubahan data pada record yang sama, maka akan sering terjadi konflik inilah yang biasa disebut dengan race condition. Dengan kata lain, pada concurrent proses, salah satu yang selesai duluan maka berhasil menang, dan yang lain akan mendapatkan error.

Bug ini kerap kali disalahgunakan oleh para hacker untuk mengeksploitasi sistem, dimana seharusnya user tersebut dapat melakukan suatu aksi sekali namun user mendapat keuntungan lain setelah melakukan aksi beberapa kali (secara simultan).

Dampak Kerentanan

Menggandakan point secara berkala sampai berapapun (unlimited).

Proof Of Concept!

Tools:
  • Burp Suite
  • Turbo Intruder (Burp Suite Extension)
Langkah-langkah:
  1. Pertama Login ke akun dicoding melalui link ini https://www.dicoding.com/login.
  2. Pergi ke dashboard tukar point (https://www.dicoding.com/rewards/966).
  3. Capture request dengan intercept pada Burp Suite kemudian send to turbo intruder.

  4. Pilih examples/race.py untuk menggunakan script race condition tersebut.
  5. Diatas request parameter berikan payload seperti ini Test: %s

  6. Klik Attack dan dapat dilihat penyerang dapat melakukan request secara bersamaan yaitu 3 request dalam waktu yang sama, dampak nya yaitu hanya dengan menggunakan 300 point tetapi pesanan yang terkonfirmasi ada 3.
Point awal:

Bug ter-exploitasi:

Ketika 3 pesanan diatas dibatalkan oleh admin maka point akan dikembalikan. Jadi hanya modal 300 point, dengan menggunakan metode ini, point tersebut akan kembali 3x lipat yaitu 900 Point:
 

Timeline

  • Report: 14 February 2023
  • Triage: 22 February 2023
  • Fix: Resolved
  • Rewards: Undisclosed
Demikian tulisan yang saya buat untuk kesempatan ini. Saya berharap tulisan ini dapat memberikan manfaat dan motivasi bagi teman-teman bug hunter yang juga bekerja keras dalam mencari dan melaporkan bug pada sebuah sistem. Jika ada kekurangan atau kesalahan, saya sangat mengharapkan masukan dan kritik dari teman-teman bug hunter lainnya agar tulisan ini dapat lebih baik kedepannya.
Mahasiswa Sistem Informasi di Universitas Singaperbangsa Karawang, yang memiliki minat di Cyber ​​Security, Penetration Testing, Front-end Web Development. saya memiliki pengalaman dalam Web Pentest.

1 komentar

  1. keren bang, sangat bermanfaat