Kali ini saya mau share bagaimana cara saya menemukan sebuah bug pada NFT Marketplace crosea.io. Pertama selalu saya tegaskan pekerjaan saya yang utama bukan BugBounty hunter, tapi disini saya hanya kadang suka iseng mencari bug/pentesting diwaktu luang saya. Jadi, disini saya hanya pemula dan maaf jika ada salah salah kata.
Ok jadi langsung saja, untuk yang pertama ini saya melakukan pengecekan pada edit user karena siapa tau di websitenya ini terdapat celah IDOR
Ketika saya coba klik edit terdapat popup authenticate yang dimana disitu ada process sign dan verify message untuk wallet web3, lalu saya coba klik sign & verifikasi dan seperti biasa kita disuruh melakukan sign disini saya sign menggunakan metamask.
Lalu setelah itu saya coba edit edit dan saya sambil pantau networknya, disini ada yang mengganjal
Disini tidak ada JWT auth yang mana kemungkinan bisa kita manipulasi si authnya dan saya cek di cookie tidak ada auth yang disimpen baik di cookie maupun localstorage, jadi kemungkinan auth ini di generate dari sisi client. Setelah itu saya coba search endpointnya di tab source dimana disitu letak dari semua script si client
Bisa kalian lihat, disitu ada hal yang menarik yang bisa dilihat yaitu dibagian AES.encrypt yang dimana saya tau berarti di headers auth ini di generate dari sisi client, tapi sekarang problemnya adalah kita tahu keynya tapi kita gatau parameternya apa saja atau payloadnya apa saja yang buat di generate si auth itu. Jadi disini saya coba scriptnya saya copy lalu saya suruh chatgpt men translate script tersebut agar mudah dibaca
Disini kita tau bahwa kita butuh satu parameter yang berisi sebuah nilai yang akan di enkripsi, disini saya langsung coba paramater pertamanya saya isi dengan address dari si akun, langsung saya coba di repl
dan saya coba authnya di postman
Dan berhasilll, sekarang kita coba liat di webnya apakah berubah
Misi pertama sukses! Dan kemudian saya cek lagi di source ada endpoint apa aja yang bisa di edit menggunakan auth tersebut
Disini saya menemukan ada endpoint lagi yaitu collection/edit yang kemungkinan juga bisa kita rubah dan mainkan, markicob mari kita coba
Pertama aku suruh chatgpt buat translate kodenya kedalam curl
Lalu kita import hasil curlnya ke postman, nah disitu ketahuan kita butuh apa aja
Address token, owner address nah sementara berdasarkan view source tadi yang dijadikan auth adalah owner address maka langsung kita eksekusi dan ya bisa kalian liat diatas message success, lalu kita cek di webnya dan….
Success !!!!
Timeline :
~ 13 Maret 2023 : Bug Reported
~ 20 Maret 2023 : Bug Fixed
Terimakasih banyak semuanya yang sudah baca, jangan lupa subscribe, follow dan share!!!