( $1000 ) Insecure direct Object References (IDOR) Via TakeOver Unsubscribe Feature

Assalamualaikum Bug Hunter & Hi everyone.

Dikesempatan kali ini saya akan membagikan sebuah temuan Insecure Direct Object References (IDOR) simple yang berpotensi TakeOver Sebuah Fitur Subscribe & Unsubscribe.

Katakanlah situs itu adalah https://redacted.com/

Ketika saya melakukan Penetration Testing di situs itu, maka saya menemukan sebuah API yang melakukan GET untuk fitur Subscribe & Unsubscribe. Berikut cuplikan request nya :

GET /api/v1/subscription?user_email=12345 HTTP/1.1
Host: redacted.com
Cookie: ****************
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://account.redacted.com/
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-site
Sec-Fetch-User: ?1
Te: trailers
Connection: close

Dari cuplikan request diatas, saya mencoba mengakses URL nya dibrowser, dan berfungsi :)

Berikut full URL nya :

https://redacted.com/api/v1/subscription?user_email=12345

Berikut screenshot fitur nya :

screenshot sudah saya edit semua agar tidak ada yang diungkapkan

Lalu mana kerentanan IDOR nya?

Follow me :)

Ketika fitur itu mengambil GET dari API parameter URL berupa :

/api/v1/subscription?user_email=12345

Langkah pertama atau paling penting untuk menguji itu adalah dengan menyiapkan 2 akun pengujian di masing-masing browser yang berbeda.

Buka akun pengujian anda yang ke 2 di browser lain, selanjutnya buka URL :

https://redacted.com/api/v1/subscription?user_email=12345

Lihat hasilnya, berikut cuplikan screenshot yang ditampilkan saat membuka URL itu :

Lihat, itu hampir sama dengan fitur di akun pengujian 1.

Disini saya belum bisa menyimpulkan apakah itu kerentanan, karena bisa saja itu fitur untuk akun pengujian 2 saya.

Langkah penting selanjutnya adalah, anda perlu mengaktifkan salah satu fitur Subscribe di akun pengujian 1 nya.

screenshot ketika beberapa fitur di Subscribe di aktifkan ( akun pengujian 1 )

Selanjutnya akses URL tadi di akun pengujian 2.

Apa yang terjadi, berikut screenshotnya :

screenshot fitur subcribe di akun pengujian 2

Lihat, berhasil :)

Apa yang dapat anda ( atttacker ) lakukan disana?

Saya rasa pertanyaan itu sangat bagus dan menarik.

Mari cek fitur itu lebih rinci lagi :)

Disana anda ( attacker ) tidak hanya dapat melihat apa saja yang diaktifkan dan apa saja yang tidak diaktifkan di fitur Subscribe tersebut. Bahkan disana anda ( attacker ) dapat mengambilalih fitur itu.

Kali ini saya menonaktifkan salah satu di fitur Subscribe itu yaitu fitur Newsletter menggunakan akun pengujian 2. Lihat hasil nya :

Berhasil :)

Mari cek itu kembali dari akun pengujian 1. Dan berikut hasil nya :

Berhasil wkwwkwk.

Selanjutnya saya segera melaporkan temuan ini ke pihak pemilik programnya melalui Hackerone. Maaf saya tidak dapat menyebutkan nama programnya, karena ini adalah Private Program di Hackerone.

Tidak lama setelah melaporkannya, kemudian laporan saya diresponds oleh pemilik programnya, dan kemudian laporan saya ditutup sebagai “Duplicate”

Sebelumnya saya sudah berfikir juga bahwa ini akan “Duplicate”. Karena temuan simple ini pasti sudah ditemukan oleh peneliti lain. Dan tidak sampai disana, saya mencoba untuk meminta tim analis dari pemilik program nya untuk mengundang akun Hackerone saya ke pemilik laporan aslinya. Dan permintaan saya akhirnya disetujui :)

Disana saya mencoba untuk menganalisa kembali laporan aslinya dengan laporan saya. Dan ternyata ada perbedaan Langkah serta Endpoint.

Saya akan mencoba menggambarkan hasil analisa saya terhadap laporan asli nya di artikel ini, yaitu :

  1. Saya setuju bahwa dilaporan aslinya juga membahas temuan terkait fitur Unsubscribe juga, tetapi langkahnya berbeda.
  2. Di laporan aslinya memberikan langkah unsubscribe melalui sebuah URL, dan kemudian setelah itu, attacker diminta memasukkan email akun yang terhubung ke website itu. Dan ini sangat berbeda dengan temuan saya.
  3. Di analisa nomor 2, ketika attacker diminta memasukkan email akun yang terhubung ke website itu, maka disini langkah attacker sangat terbatas, karena attacker harus mengetahui email korban yang terhubung dengan akun website itu, dan jelas ini mempengaruhi penilaian risk severity nya.

Ketiga analisa itu saya rasa sudah cukup untuk melaporkannya kembali ke pemilik programnya, dan saya bergegas melaporkan analisa kesimpulan saya terkait laporan asli dengan laporan saya yang ditutup sebagai “Duplicate” tadi.

Dan tak lama setelah itu, pemilik program meresponds nya, dan segera membuka kembali laporan saya :)

Saya senang melihat laporan itu dibuka kembali.

Sebulan kemudian, pemilik program meresponds terkait laporan itu, dan saya diberikan bounty $1.000

Pemburu Bug & Pengujian Penetrasi

Love podcasts or audiobooks? Learn on the go with our new app.