Weak Password Reset Implementation

Halo administrator skilvul…
Dengan senang hati kami ingin kembali melaporkan temuan kerentanan pada situs Skilvul berupa “weak password reset implementation”, kerentanan ini akan kami reproduksi dengan mencantumkan gambar agar tidak terjadi miss komunikasi dengan pihak skilvul dikarenakan kerentanan ini tergolong dalam Taxonomy P2 (High).

Proof of Concept:
Pada suatu hari ojan sedang memantau forum peretas untuk mendapatkan kredensial akun yang bocor ia melihat sebuah utas dengan format email:password (victim@mail[.]com:pass123), ia berinisiatif untuk melakukan serangan Credential Stuffing targetnya yaitu situs skilvul[.]com

Pada halaman login ojan menginput kredensial login yang ia dapat dari forum tadi, dirinya berhasil login kehalaman skilvul[.]com tanpa adanya rintangan 2FA (Two Factor Authentication).

Setelah berhasil login ia berinisiatif untuk mengubah password milik korban, tapi ia terkendala oleh autentikasi “Password Lama”.

Alhasil demi mendapatkan akun tersebut ia pun melakukan forensik menggunakan akun baru dan dirinya memahami bagaimana autentikasi ini bekerja:

Validasi password lama → True → Lakukan autentikasi pengubahan password → Password berhasil diubah

Dirinya berhasil menciptakan logika untuk melewati autentikasi password lama dengan cara melompati autentikasi melalui POST Data buatan sehingga jalur autentikasi berubah menjadi seperti berikut ini:

Lakukan autentikasi pengubahan password → Password berhasil diubah



Host:
api[.]skilvul[.]com

Requests:
[{“operationName”:“resetPassword”,“query”:“mutation resetPassword($token: String, $password: String!) {\n resetPassword(data: {token: $token, password: $password}) {\n success\n error\n __typename\n }\n}\n”,“variables”:{“password”:“Halo123”}}]



Yeah itulah permintaan data yang harus ia buat & kirimkan melalui POST Method dengan begitu ojan tidak perlu menginput “Password Lama” milik korban.

Boom! dengan mengirimkan permintaan buatan, dirinya berhasil mengubah password korban tanpa autentikasi validasi password lama dan terjadilah Account Takeover :sunglasses:

Patching Kerentanan:
Secara teori, administrator website dapat menambal kerentanan Weak Password Reset Implementation ini dengan cara menggabungkan requests validasi password lama dan autentikasi password baru menjadi satu permintaan saja.
Sedangkan untuk menghindari serangan Credential Stuffing ada baiknya pihak Skilvul menambahkan Autentikasi Dua Faktor (2FA)

Nenek saya memiliki sebuah sistem keamanan berteknologi tinggi → sebuah paku berkarat yang ia gunakan untuk mengunci pintu. :sneezing_face:

1 Like

Hi @ojan ,

Another good find! Saya akan menyampaikan masalah ini ke pihak tim dev dan akan segera memperbaikinya.

Alasan kami belum menambahkan 2FA adalah karena user demographics kami yang tergolong masih sangat awam tetapi rencana itu sudah ada di bbrp pipeline yg akan datang.

Terima kasih sekali lagi atas waktunya dan sudah menyampaikan penemuan ini ke pihak Skilvul!

Baik bang @johan sama-sama

1 Like