Insecure direct object references (IDOR) are a type of access control vulnerability that arises when an application uses user-supplied input to access objects directly. The term IDOR was popularized by its appearance in the OWASP 2007 Top Ten. However, it is just one example of many access control implementation mistakes that can lead to access controls being circumvented. IDOR vulnerabilities are most commonly associated with horizontal privilege escalation, but they can also arise in relation to vertical privilege escalation.
Halo semuanya,
Pada tulisan kali ini saya mau share lagi tentang bagaimana cara saya mendapatkan bug IDOR pada sebuah “NFT Marketplace”. Jadi dengan bug ini saya bisa merubah data profile / wallet profile orang lain tanpa harus login ke profile tersebut.
Seperti biasa pada tulisan saya, saya menyebutkan saya bukan bugbounty hunter jadi saya selalu mencari bug yang simple simple aja seperti missconfiguration, IDOR dll. Jadi, disini pertama yang saya lakukan adalah mencari Sensitive Data Exposure, namun tidak membuahkan hasil apa apa T_T
Lanjut ke target bug saya kedua yang biasa saya cari setelah Sensitive Data Exposure yaitu IDOR, seperti biasa kalian bisa langsung ke profile terus coba edit profile kalian sembari buka Inspect Element > Network. Disitu bisa kalian liat kalau dia terdapat Bug IDOR biasanya tidak akan headers Authorization / ada Authorization tapi menggunakan seperti static key, misalnya kalian coba logout dan login kembali lalu coba cek lagi dan keynya masih sama. Nah, disitu ada kemungkin vuln dengan IDOR.
Nah disini setelah saya Inspect Element dan liat Networknya saya dapet satu endpoint dimana disitu muncul ketika saya edit profile, lalu saya coba cek ke Request Headersnya
Bisa kalian cek disini tidak ada headers Authorization yang dimana “kemungkinan besar” endpoint tersebut vuln untuk IDOR.
Dan jika diliat dari payloadnya juga disini terdapat data user dan juga address, disitu saya langsung berpikir bahwa kemungkinan untuk edit sebuah profile wallet disitu hanya membutuhkan address dari user orang lain. Lalu saya coba menggunakan address dari CEO nya dan boom
Before Edit :
After Edit :
Success!
Lalu saya penasaran lagi, apakah mereka ada validation dari payload atau ngga, jadi saya coba cek API buat get profile user dan ketika saya lihat disitu ada field “verified”, lalu saya coba edit profile saya dan merubah valuenya ke true dan boom
Before Edit :
After Edit :
Dan boom saya bisa membuat profile saya langsung “verified” tanpa harus submit form, hehey :)
Timeline :
~ 15 August 2022 : Bug Reported
~ 15 August 2022 : they said now there is no bug bounty and it will only start in 1 week and I can submit at that time
~ 22 August 2022 : Submitted the bug