Mass Assignment - Authentication - User Registration
Lingkungan lab — bukan sistem produksi
Tangkapan layar dan trafik mentah tidak diterjemahkan; teks di dalamnya mungkin menggunakan bahasa lain.
crAPI/Evidence/[PASS] Mass Assignment - Authentication - User Registration
01 — Catatan
Catatan pengujian
Kerentanan
Deskripsi
Dampak
CWE
OWASP
Skenario
Endpoint
Fitur terdampak
Rekomendasi perbaikan
Bukti konsep
Lihat catatan sumber (bahasa Indonesia)
Vulnerability: [PASS] Mass Assignment - Authentication - User Registration
Description:
Diuji apakah endpoint pendaftaran rentan mass assignment dengan menyisipkan field privileged (role=admin, isAdmin=true) pada body signup.
Impact:
Tidak ada dampak: server mengabaikan field privileged sehingga eskalasi hak tidak terjadi.
CWE:
CWE-915: Improperly Controlled Modification of Dynamically-Determined Object Attributes (diuji, tidak rentan)
OWASP:
API3:2023 - Broken Object Property Level Authorization (diuji negatif)
Scenario:
Normal: registrasi standar. Eksploitasi: signup + role=admin/isAdmin. Hasil: login menunjukkan role tetap user -> PASS (kontrol berjalan, CIA tidak terlanggar).
Endpoint:
POST http://127.0.0.1:8888/identity/api/auth/signup
Affected Feature:
Registrasi Pengguna (crapi-identity)
Remediation:
Pertahankan allow-list field yang boleh di-set klien saat registrasi (kondisi saat ini sudah benar).
POC:
1) (Screenshot 1) NORMAL: signup dengan field standar -> 200.
2) (Screenshot 2) EKSPLOITASI: signup dengan tambahan role=admin & isAdmin=true -> 200 (terdaftar).
3) (Screenshot 3) HASIL: login akun tsb -> JWT role tetap "user" -> field privileged diabaikan (kontrol berjalan).
02 — Tangkapan layar
Tangkapan layar (3)
Alur normal: registrasi dengan field standar, tanpa role.
Percobaan eksploitasi: tambahkan role=admin dan isAdmin=true ke body signup untuk meminta hak akses lebih tinggi.
Hasil (PASS): login ke akun baru menunjukkan role="user". Server mengabaikan field untuk hak akses lebih tinggi sehingga percobaan eksploitasi gagal. Tidak ada dampak yang teramati pada kerahasiaan, integritas, atau ketersediaan dalam pengujian ini.
03 — Request dan response
Rekaman HTTP
Sebagian nilai kredensial disamarkan pada tampilan HTML publik ini. Penyamaran ini tidak menjamin bahwa seluruh data sensitif atau berkas tertaut sudah disamarkan.
POST /identity/api/auth/signup HTTP/1.1
Host: 127.0.0.1:8888
Content-Type: application/json
{"name":"MassAssign Tester","email":"[REDACTED-EMAIL]","number":"+19990111","password":"[REDACTED-LAB-VALUE]"}HTTP/1.1 403
Server: openresty/1.27.1.2
Content-Type: application/json
Content-Length: 71
{
"message": "Number already registered! Number: +19990111",
"status": 403
}Alur normal: registrasi dengan field standar, tanpa role.
POST /identity/api/auth/signup HTTP/1.1
Host: 127.0.0.1:8888
Content-Type: application/json
{"name":"MassAssign Tester","email":"[REDACTED-EMAIL]","number":"+19990222","password":"[REDACTED-LAB-VALUE]","role":"admin","isAdmin":true}HTTP/1.1 403
Server: openresty/1.27.1.2
Content-Type: application/json
Content-Length: 71
{
"message": "Number already registered! Number: +19990222",
"status": 403
}Percobaan eksploitasi: tambahkan role=admin dan isAdmin=true ke body signup untuk meminta hak akses lebih tinggi.
POST /identity/api/auth/login HTTP/1.1
Host: 127.0.0.1:8888
Content-Type: application/json
{"email":"[REDACTED-EMAIL]","password":"[REDACTED-LAB-VALUE]"}HTTP/1.1 401
Server: openresty/1.27.1.2
Content-Type: application/json
Content-Length: 88
{
"token": null,
"type": "",
"message": "Given Email is not registered! ",
"mfaRequired": false
}
# JWT payload -> role: "user" (BUKAN admin)Hasil (PASS): login ke akun baru menunjukkan role="user". Server mengabaikan field untuk hak akses lebih tinggi sehingga percobaan eksploitasi gagal. Tidak ada dampak yang teramati pada kerahasiaan, integritas, atau ketersediaan dalam pengujian ini.