Pengujian keamanan · Keamanan API

crAPI

Pengujian crAPI, API yang sengaja dibuat rentan, dengan fokus pada kontrol akses, autentikasi, dan validasi input.

Pengujian lab · Lingkungan simulasi

Ringkasan pengujian

Fokus pengujian

Bisakah pengguna yang sudah login mengakses data pengguna lain?

Pendekatan

Saya menguji kontrol akses, autentikasi, dan validasi input, lalu mendokumentasikan temuan dengan request, response, dan tangkapan layar.

Hasil

19 skenario pengujian: 11 FAIL dan 8 PASS, dengan 49 tangkapan layar. Ini hasil pengujian lab, bukan metrik produksi. Jumlah tersebut merujuk pada skenario pengujian, bukan jumlah kontrol yang berbeda.

Pengujian keamanan / Laporan

Laporan pengujian penetrasi

Lihat laporan HTML atau buka PDF asli yang tersedia di bawah. Bahasa setiap PDF tercantum pada tautannya.

Bukti / Indeks skenario

Telusuri skenario pengujian

PASS berarti aplikasi berperilaku sesuai harapan pada skenario tersebut. FAIL berarti skenario tersebut mengonfirmasi kelemahan keamanan. Jumlah ini merujuk pada skenario pengujian, bukan jumlah kontrol yang berbeda.

01
Broken Function Level Authorization - Workshop - Management Users EndpointEndpoint manajemen /workshop/api/management/users/all -- yang semestinya hanya untuk administrator -- dapat diakses oleh pengguna terautentikasi biasa (role=user). Endpoint mengembalikan data seluruh pengguna aplika…
FAIL
02
Broken Object Level Authorization - Vehicle - Location TrackingEndpoint lokasi kendaraan mengembalikan posisi GPS milik pengguna lain hanya berbekal UUID kendaraan. Server memverifikasi autentikasi tetapi tidak memverifikasi kepemilikan objek (BOLA/IDOR).
FAIL
03
Broken Object Level Authorization - Workshop - Mechanic ReportEndpoint mechanic_report menerima report_id sekuensial dan mengembalikan laporan servis milik pengguna lain (VIN & email pemilik) tanpa verifikasi keterkaitan dengan pemanggil.
FAIL
04
Improper Inventory Management - Authentication - OTP Endpoint VersionsEndpoint verifikasi OTP tersedia dalam beberapa versi yang aktif bersamaan: versi lama /identity/api/auth/v2/check-otp masih berfungsi berdampingan dengan versi terbaru v3. Versi lama/undokumented meningkatkan attac…
FAIL
05
JWT Signature Not Verified - Authentication - JWT ValidationLayanan identity crAPI tidak memverifikasi tanda tangan JWT. Token ber-header alg:none tanpa signature diterima, dan token RS256 yang payload-nya diubah tanpa di-resign juga diterima. Penyerang bebas memalsukan toke…
FAIL
06
NoSQL Injection - Community - Coupon ValidationEndpoint validate-coupon memasukkan nilai JSON coupon_code langsung ke query MongoDB tanpa sanitasi tipe. Operator query (mis. $ne, $gt) mencocokkan kupon apa pun tanpa mengetahui kodenya.
FAIL
07
OTP Bruteforce Protection Bypass - Authentication - Password ResetVerifikasi OTP reset (/v3/check-otp) mengunci setelah 9 percobaan per sesi, NAMUN pembatas ini ter-reset setiap memanggil /forget-password yang sendirinya tidak di-rate-limit/CAPTCHA. Proteksi brute-force dapat dile…
FAIL
08
Server-Side Request Forgery - Workshop - Contact MechanicEndpoint contact_mechanic menerima URL penuh pada parameter mechanic_api dan melakukan permintaan HTTP server-side ke URL tersebut lalu memantulkan responsnya. Penyerang dapat mengarahkannya ke layanan INTERNAL yang…
FAIL
09
Unauthenticated Order Access - Shop - Order DetailsEndpoint GET /workshop/api/shop/orders/{order_id} mengembalikan detail pesanan lengkap tanpa autentikasi, dengan order_id sekuensial yang mudah dienumerasi.
FAIL
10
Unrestricted Resource Consumption - Authentication - Login Rate LimitingEndpoint login crAPI tidak menerapkan rate limiting maupun account lockout. Percobaan login yang gagal berulang kali tidak dibatasi, sehingga memungkinkan brute-force/credential stuffing dan konsumsi sumber daya ser…
FAIL
11
Unsafe Consumption of APIs - Workshop - Contact Mechanic UpstreamEndpoint contact_mechanic mengonsumsi respons dari mechanic API (URL yang dikendalikan klien) dan memantulkannya kembali ke pengguna tanpa memvalidasi/menyaring struktur maupun isinya. Aplikasi secara implisit mempe…
FAIL
12
Broken Access Control - Login - CSRF Token Cookie Binding
PASS
13
Broken Object Level Authorization - Shop - Return OrderDiuji apakah aksi retur pesanan (return_order) rentan BOLA dengan mencoba meretur pesanan milik pengguna lain.
PASS
14
Broken Object Level Authorization - Vehicle - Location Tracking (Unauthenticated)Diuji akses endpoint lokasi kendaraan tanpa autentikasi apa pun.
PASS
15
Broken Object Level Authorization - Workshop - Mechanic Report (Unauthenticated)Diuji akses endpoint mechanic_report tanpa autentikasi.
PASS
16
Mass Assignment - Authentication - User RegistrationDiuji apakah endpoint pendaftaran rentan mass assignment dengan menyisipkan field privileged (role=admin, isAdmin=true) pada body signup.
PASS
17
NoSQL Injection - Community - Coupon Validation (Normal Input)Diuji validasi kupon dengan input string biasa (valid & tak dikenal), tanpa operator NoSQL.
PASS
18
OTP Bruteforce Protection - Authentication - Password Reset (Per-Session Lockout)Diuji brute-force OTP dalam satu sesi OTP tanpa meminta OTP baru.
PASS
19
Unrestricted Access to Sensitive Business Flow - Shop - Coupon ClaimDiuji apakah alur bisnis sensitif (klaim kupon untuk menambah saldo) dapat disalahgunakan dengan mengklaim kupon yang sama berulang kali (replay).
PASS