Skenario 12 / 26FAIL
Security Misconfiguration - CORS - Wildcard Origin
Lingkungan lab — bukan sistem produksi
Tangkapan layar dan trafik mentah tidak diterjemahkan; teks di dalamnya mungkin menggunakan bahasa lain.
vuln-bank/Evidence/[FAIL] Security Misconfiguration - CORS - Wildcard Origin
01 — Catatan
Catatan pengujian
Kerentanan
[FAIL] Security Misconfiguration - CORS - Wildcard Origin
Deskripsi
Aplikasi mengirim header Access-Control-Allow-Origin dengan nilai wildcard (*) pada seluruh respons, termasuk respons endpoint yang mengembalikan data sensitif. Kebijakan ini menghapus perlindungan same-origin untuk pembacaan respons oleh skrip lintas origin.
Dampak
Low: situs mana pun dapat membaca respons endpoint yang tidak memerlukan autentikasi langsung dari browser pengunjung, termasuk /debug/users yang memuat kredensial. Dampaknya dibatasi oleh fakta bahwa nilai wildcard tidak dapat dikombinasikan dengan kredensial, sehingga cookie sesi tidak ikut terkirim pada permintaan lintas origin.
Catatan pengujian yang jujur: pembacaan lintas origin terhadap data milik pengguna yang sedang login TIDAK berhasil dibuktikan, karena aplikasi mengirim token melalui header Authorization yang tidak dapat diakses situs penyerang. Temuan ini dilaporkan sebagai kelemahan konfigurasi yang memperlemah pertahanan berlapis, bukan sebagai pencurian data terautentikasi.
CWE
CWE-942: Permissive Cross-domain Policy with Untrusted Domains
OWASP
A05:2021 - Security Misconfiguration
Skenario
Eksploitasi: permintaan dikirim dengan header Origin milik domain penyerang (https://evil.example.com) -> respons mengembalikan Access-Control-Allow-Origin: * sehingga skrip pada origin mana pun diizinkan membaca isi respons.
Endpoint
Seluruh endpoint http://127.0.0.1:5001/ (header dikirim secara global)
Fitur terdampak
Kebijakan CORS tingkat aplikasi
Rekomendasi perbaikan
- Ganti wildcard dengan allow-list origin yang memang dipercaya.
- Jangan kirim header CORS pada endpoint yang tidak dimaksudkan untuk diakses lintas origin.
- Tetapkan Vary: Origin dan jangan pernah memantulkan header Origin secara buta.
- Tinjau ulang endpoint yang mengembalikan data sensitif tanpa autentikasi.
Bukti konsep
1) (Screenshot 1) EKSPLOITASI: permintaan dengan Origin https://evil.example.com ke /debug/users -> respons mengembalikan Access-Control-Allow-Origin: * , mengizinkan origin mana pun membaca isi respons.
Lihat catatan sumber (bahasa Indonesia)
Vulnerability:
[FAIL] Security Misconfiguration - CORS - Wildcard Origin
Description:
Aplikasi mengirim header Access-Control-Allow-Origin dengan nilai wildcard (*) pada seluruh respons, termasuk respons endpoint yang mengembalikan data sensitif. Kebijakan ini menghapus perlindungan same-origin untuk pembacaan respons oleh skrip lintas origin.
Impact:
Low: situs mana pun dapat membaca respons endpoint yang tidak memerlukan autentikasi langsung dari browser pengunjung, termasuk /debug/users yang memuat kredensial. Dampaknya dibatasi oleh fakta bahwa nilai wildcard tidak dapat dikombinasikan dengan kredensial, sehingga cookie sesi tidak ikut terkirim pada permintaan lintas origin.
Catatan pengujian yang jujur: pembacaan lintas origin terhadap data milik pengguna yang sedang login TIDAK berhasil dibuktikan, karena aplikasi mengirim token melalui header Authorization yang tidak dapat diakses situs penyerang. Temuan ini dilaporkan sebagai kelemahan konfigurasi yang memperlemah pertahanan berlapis, bukan sebagai pencurian data terautentikasi.
CWE:
CWE-942: Permissive Cross-domain Policy with Untrusted Domains
OWASP:
A05:2021 - Security Misconfiguration
Scenario:
Eksploitasi: permintaan dikirim dengan header Origin milik domain penyerang (https://evil.example.com) -> respons mengembalikan Access-Control-Allow-Origin: * sehingga skrip pada origin mana pun diizinkan membaca isi respons.
Endpoint:
Seluruh endpoint http://127.0.0.1:5001/ (header dikirim secara global)
Affected Feature:
Kebijakan CORS tingkat aplikasi
Remediation:
- Ganti wildcard dengan allow-list origin yang memang dipercaya.
- Jangan kirim header CORS pada endpoint yang tidak dimaksudkan untuk diakses lintas origin.
- Tetapkan Vary: Origin dan jangan pernah memantulkan header Origin secara buta.
- Tinjau ulang endpoint yang mengembalikan data sensitif tanpa autentikasi.
POC:
1) (Screenshot 1) EKSPLOITASI: permintaan dengan Origin https://evil.example.com ke /debug/users -> respons mengembalikan Access-Control-Allow-Origin: * , mengizinkan origin mana pun membaca isi respons.
02 — Tangkapan layar
Tangkapan layar (1)
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.
REKAMAN 01 / 1
GET /debug/users HTTP/1.1
User-Agent: python-requests/2.33.1
Accept-Encoding: gzip, deflate, br, zstd
Accept: */*
Connection: keep-alive
Origin: https://evil.example.com
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 816
Access-Control-Allow-Origin: https://evil.example.com
Vary: Origin
Server: Werkzeug/2.0.1 Python/3.9.25
Date: Wed, 30 Sep 2026 03:12:59 GMT
{
"users": [
{
"account_number": "ADMIN001",
"id": 1,
"is_admin": true,
"password": "[REDACTED-LAB-VALUE]",
"username": "admin"
},
{
"account_number": "7503483798",
"id": 4,
"is_admin": false,
"password": "[REDACTED-LAB-VALUE]",
"username": "ma_normal_user"
},
{
"account_number": "7658808238",
"id": 5,
"is_admin": true,
"password": "[REDACTED-LAB-VALUE]",
"username": "ma_evil_admin"
},
{
"account_number": "0932191785",
"id": 2,
"is_admin": false,
"password": "[REDACTED-LAB-VALUE]",
"username": "pentest_attacker"
},
{
"account_number": "9159912486",
"id": 3,
"is_admin": false,
"password": "[REDACTED-LAB-VALUE]",
"username": "pentest_victim"
}
]
}