
Oleh: Muhamad Raehan Ramadhan | Kategori: Cyber Security | Status: ✅ Reported
Disclaimer: Artikel ini ditulis untuk tujuan edukasi keamanan siber. Kerentanan yang dibahas telah dilaporkan secara bertanggung jawab kepada pihak terkait melalui proses responsible disclosure.
Pendahuluan
Portal akademik siakad.thamrin.ac.id merupakan sistem informasi akademik yang digunakan oleh civitas akademika Universitas MH Thamrin untuk mengelola data mahasiswa, nilai, dan berbagai informasi akademik lainnya.
Dalam riset keamanan independen yang saya lakukan, saya mengidentifikasi kerentanan Reflected Cross-Site Scripting (XSS) pada fitur input data mahasiswa. Yang menarik dari temuan ini adalah backend sudah melakukan pembersihan output — namun payload tetap berhasil dieksekusi oleh browser.
Profil Kerentanan
| Atribut | Detail |
|---|---|
| Target | siakad.thamrin.ac.id |
| Tipe | Reflected XSS |
| Severity | Medium |
| Entry Point | Input data mahasiswa |
| Payload | raehanramadhan19"><script>alert(1)</script>zxcv99 |
Analisis Teknis
Titik Masuk (Entry Point)
Celah ditemukan pada form input data mahasiswa. Pengujian awal menunjukkan bahwa sistem sudah menerapkan pembersihan di sisi output — karakter seperti < dan > tampaknya di-encode. Namun terdapat celah pada konteks tertentu yang memungkinkan payload tetap lolos.
Injeksi Payload
Payload yang digunakan:
raehanramadhan19"><script>alert(1)</script>zxcv99
Payload ini dirancang untuk:
- Menggunakan prefix
raehanramadhan19sebagai penanda unik agar mudah dilacak di response - Menutup atribut HTML yang sedang terbuka dengan
" - Menutup tag input dengan
> - Menyisipkan tag
<script>baru untuk eksekusi JavaScript - Menambahkan suffix
zxcv99untuk memastikan payload tidak ter-filter sebagai pola umum
Mekanisme Bypass
Meskipun backend melakukan sanitasi output, payload tetap berhasil tembus. Ini mengindikasikan bahwa:
- Sanitasi tidak diterapkan secara konsisten di semua konteks rendering
- Kemungkinan terdapat perbedaan konteks antara di mana data di-encode dan di mana data di-render ke browser
- Atau sanitasi hanya dilakukan pada satu lapisan, sementara ada jalur lain yang tidak tersanitasi
Bukti Eksekusi
Fungsi alert(1) berhasil dipicu di browser, membuktikan bahwa JavaScript dari input pengguna dapat dieksekusi di bawah origin domain siakad.thamrin.ac.id.
Analisis Dampak
Reflected XSS umumnya membutuhkan korban untuk mengklik link berbahaya yang sudah disisipi payload. Dalam konteks portal akademik, dampak potensialnya meliputi:
- Session Hijacking — Payload dapat digunakan untuk mencuri session cookie mahasiswa atau staf akademik yang mengklik link berbahaya
- Credential Harvesting — Menampilkan form login palsu di atas halaman asli untuk mencuri username dan password
- Targeted Attack — Link berisi payload dapat dikirim via email phishing yang tampak berasal dari domain resmi kampus
Remediasi yang Disarankan
Untuk menutup celah ini secara menyeluruh, beberapa langkah yang perlu diterapkan:
1. Context-Aware Output Encoding
Pastikan encoding diterapkan sesuai konteks rendering:
- Di dalam atribut HTML → HTML attribute encoding
- Di dalam tag
<script>→ JavaScript encoding - Di dalam URL → URL encoding
2. Content Security Policy (CSP)
Tambahkan header CSP untuk membatasi eksekusi script:
Content-Security-Policy: default-src 'self'; script-src 'self'
3. Input Validation
Validasi dan tolak karakter berbahaya seperti <, >, ", ' pada sisi server sebelum diproses.
Kesimpulan
Temuan ini menunjukkan bahwa sanitasi output saja tidak cukup — konsistensi penerapan encoding di seluruh konteks rendering adalah kunci. Celah ini juga menjadi pengingat bahwa sistem akademik yang menyimpan data sensitif ribuan mahasiswa perlu mendapat perhatian keamanan yang serius.
Secure code, secure campus.
Ditulis oleh Muhamad Raehan Ramadhan — Security Researcher & IT Student