Taking Control: Changing API Responses for Gaining Admin Access

9 months ago 63
BOOK THIS SPACE FOR AD
ARTICLE AD

Aminudin

Setelah lama tidak mencari cari bug karena banyak kerjaan T_T akhirnya saya bisa mencari bug kembali. Kali ini saya menemukan bug kembali pada sebuah NFT Marketplace pada Ecosystem Hedera.

Ok seperti biasa bug yang pertama saya cari adalah Sensitive Data Exposure, yaitu mencari sensitive data / env yang sekiranya ditaruh pada client, jadi saya langsung Inpsect Element lalu menuju ke Sources

Tapi bisa kalian lihat, saya tidak menemukan hal hal menarik jadi langsung saya coba cari bug kebanggaan saya yang kedua, yaitu IDOR. Saya ke bagian Edit Profile lalu rubah salah satu datanya sembari saya inspect element

Lalu bisa kalian lihat kembali di Request Headersnya terdapat Cookie / Session yang dimana biasanya tidak memungkinkan Untuk Dilakukan IDOR karena Perubahan Data user harus sesuai dengan Session yang Connect / Yang login.

Lalu saya mencari cari dari mulai subdomain yang kira kira aneh tapi tidak menemukan sesuatu, tapi ketika saya coba iseng mengetik https://hashguild.xyz/admin atau menambahkan Path admin pada urlnya tiba tiba ada hal yang menarik, saya diredirect ke halaman admin

Ternyata kena restrict access, tapi anehnya kalau kalian perhatikan pada halaman admin ini dia tidak menggunakan Menu Auth seperti login / Connect wallet, yang kemudian membuat saya berpikir bahwa kemungkinan ada logic di client dari current cookies / session yang diloginkan di home/awal tadi.

Kemudian saya coba kebagian edit user kembali dan saya check request API tapi sepertinya tidak ada payload yang memastikan bahwa untuk merubah seperti roles/type user, tapi setelah dilihat lihat API nya menggunakan Graphql. Lalu saya menggunakan https://graphdoc.io/ untuk melakukan inspect documentation graphqlnya dan boom!!! ternyata bisa

Lalu pada query Mutation updateUser saya menemukan property userType yang dimana memiliki value enum COLLECTOR, CREATOR dan ADMIN lalu saya coba edit usernya dengan userTypenya ADMIN melalui Postman, karena kalau dari sisi client dia valuenya hanya ada COLLECTOR dan CREATOR, lalu saya coba lagi edit dan boom! success!

Lalu saya coba lagi kehalaman /admin tadi dan tapi ternyata masih muncul tulisan “You Have No Access” hal tersebut membuat saya sedih dan merenung…… Tapi saya tidak menyerah dan langsung saya lakukan Inspect Element kembali ketika mengakses path /admin tersebut

Ternyata saya menemukan hal janggal lainnya yaitu ada sebuah query untuk mendapatkan list id dari para admin, lalu tidak pikir panjang saya lalu coba Intercept menggunakan Burp Suite untuk merubah responsenya

Lalu saya tambahkan id user saya pada API get list admin tadi, dan BOOOOM!!!!!!

Bisa kalian lihat saya berhasil masuk ke dashboard adminnya, dan untuk masuk ke halaman Manage Collection atau semua menu pada menu admin saya harus melakukan hal yang sama yaitu Intercept Request untuk merubah response dari getAdmin, karena pada setiap menu admin ini dibatasi hanya untuk id id yang ada pada API getAdmin tersebut.

Lalu sudah masuk saya di dashboard ini bisa meruba Data collection, merubah posisi NFT pada homenya, menjadikan user lain menjadi admin pada collection NFT

Saya juga bisa menjadikan user saya sendiri sebagai admin NFT Collectionnya

Sebenarnya kalian gausah masuk dashboard admin web, kalian sudah bisa merubah rubah datanya yang penting kalian tau query graphqlnya bisa diketahui dengan graphDoc tadi, query query mana yang tidak ada restrictnya bisa kalian coba coba sendiri menggunakan Postman.

Untuk fixingnya sederhana untuk Backend pada query query terkhusus action admin bisa ditambah restrict menggunakan JWT atau apapun agar yang bisa menjalankan query tersebut hanya admin Dan Disable inspect jika API menggunakan GraphQL.

Video : https://youtu.be/HAwKA4lLXL4

Timeline :

~ 30 May 2023 : Bug Reported

~ 30 May 2023 : Bug Fixed!!

~ 6 June 2023 : awarded two Guilty Pandas NFTs

Read Entire Article