Oleh: Muhamad Raehan Ramadhan | Kategori: Security Research | Status: ✅ Patched & Fixed
⚠️ Disclaimer
Artikel ini ditulis untuk tujuan edukasi keamanan siber. Kerentanan yang dibahas telah dilaporkan secara resmi melalui program pengungkapan bug internal dan telah diperbaiki sepenuhnya oleh tim IT Universitas MH Thamrin sebelum artikel ini dipublikasikan.
Pendahuluan
Portal akademik student.thamrin.ac.id merupakan infrastruktur kritikal bagi mahasiswa Universitas Mohammad Husni Thamrin — menjadi pintu akses utama untuk biodata, nilai, hingga informasi keuangan. Sebagai jantung aktivitas digital kampus, integritas data di dalamnya adalah prioritas yang tidak bisa dikompromikan.
Dalam riset keamanan independen yang saya lakukan, ditemukan kerentanan Stored Cross-Site Scripting (XSS) pada fitur pembaruan biodata. Celah ini memungkinkan penyerang menyisipkan skrip berbahaya yang tersimpan secara permanen di database server. Artikel ini akan membedah aspek teknis temuan tersebut hingga langkah remediasinya.
Profil Kerentanan
| Atribut | Detail |
|---|---|
| Target | student.thamrin.ac.id |
| Tipe Kerentanan | Stored XSS (Persistent) |
| Rating | Medium / High |
| Vektor Serangan | Form Input Data Pribadi (Settings Profile) |
Analisis Teknis
1. Titik Masuk (Entry Point)
Celah ditemukan pada formulir pembaruan data pribadi mahasiswa — khususnya pada kolom seperti Alamat atau Nama Orang Tua. Pengujian awal menunjukkan bahwa sistem tidak melakukan validasi ketat terhadap karakter khusus di sisi server.
2. Injeksi Payload
Untuk membuktikan adanya celah, saya menyisipkan payload sederhana yang dirancang untuk memutus struktur HTML atribut value pada elemen input:
"><script>alert(1)</script>
Payload ini bekerja dengan cara menutup tag input yang sedang aktif (">), lalu memaksa browser untuk mengeksekusi tag <script> baru yang disisipkan setelahnya.
3. Mekanisme Eksekusi (The Trigger)
Karena tidak adanya Output Encoding, skrip tersebut tersimpan secara literal di database. Setiap kali halaman profil dimuat, browser akan merender skrip itu sebagai kode JavaScript aktif — bukan sebagai teks biasa.
Hasil: Fungsi alert() berhasil dipicu, membuktikan bahwa kode JavaScript dari pihak luar dapat berjalan di bawah origin domain kampus.
Analisis Dampak
Stored XSS jauh lebih berbahaya daripada Reflected XSS karena sifatnya yang menetap. Jika tidak segera diperbaiki, potensi dampaknya meliputi:
| Skenario | Dampak |
|---|---|
| Session Hijacking | Pencurian session cookie milik admin atau dosen yang mengakses profil tersebut, memberikan akses penuh ke sistem |
| Data Exfiltration | Membaca dan mengirim data sensitif dari halaman web secara otomatis ke server milik penyerang |
| Phishing Internal | Menampilkan form login palsu di atas halaman asli portal untuk mencuri kredensial mahasiswa lain secara massal |
Remediasi & Status Keamanan
Setelah laporan diterima, tim pengembang menerapkan dua lapis pertahanan:
✅ Input Sanitization
Membersihkan seluruh input pengguna dari karakter berbahaya sebelum data masuk ke database.
✅ Context-Aware Output Encoding
Mengonversi karakter khusus menjadi entitas HTML yang aman sebelum ditampilkan ke browser.
// Contoh implementasi di PHP
echo htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
// Karakter berbahaya dikonversi, contoh:
// < → <
// > → >
// " → "
🛡️ Status Saat Ini: Pengujian ulang menunjukkan bahwa payload kini ditampilkan sebagai teks biasa dan tidak lagi dieksekusi oleh browser. Portal dinyatakan Aman.
Kesimpulan
Keamanan siber adalah sebuah proses kolaboratif. Respons yang cepat dan kooperatif dari tim IT Universitas MH Thamrin dalam menangani laporan ini patut diapresiasi — membuktikan komitmen nyata kampus dalam menjaga privasi dan keamanan data ribuan mahasiswanya.
Secure code, secure campus! 🔐