Oleh: Muhamad Raehan Ramadhan | Prodi: Teknik Informatika UMHT | Status: ✅ Reported & Fixed
⚠️ Disclaimer
Riset ini dilakukan sebagai bentuk Ethical Hacking independen demi menjaga integritas data kampus. Seluruh temuan telah dilaporkan kepada Tim IT Universitas MH Thamrin untuk diperbaiki. Tidak ada data mahasiswa yang dimodifikasi atau disalahgunakan selama proses ini berlangsung.
Pendahuluan
Sebagai mahasiswa Teknik Informatika, mengasah kemampuan keamanan siber paling efektif dilakukan melalui studi kasus nyata. Berangkat dari kepedulian terhadap keamanan data sivitas akademika, saya melakukan tinjauan keamanan pada subdomain ict.thamrin.ac.id/cbt.
Dari tinjauan tersebut, saya mengidentifikasi celah Stored Cross-Site Scripting (XSS) pada modul registrasi. Kerentanan ini tergolong kritikal karena berdampak langsung pada integritas sistem ujian yang dikelola universitas.
Memahami Stored XSS
Stored XSS (atau Persistent XSS) terjadi ketika aplikasi web menyimpan input berbahaya dari pengguna ke dalam database tanpa proses sanitasi terlebih dahulu. Akibatnya, skrip jahat tersebut akan dieksekusi secara otomatis di browser siapa pun yang memuat data itu — termasuk mahasiswa lain, bahkan panel Admin.
Bedah Teknis: Proof of Concept (PoC)
1. Vektor Injeksi
Celah ditemukan pada formulir registrasi mahasiswa baru. Saya menyisipkan payload JavaScript sederhana pada kolom Nama Lengkap:
"><script>alert(1)</script>
2. Kegagalan Validasi (Bypass)
Sistem menerima input tersebut tanpa melakukan filtering terhadap karakter khusus. Akibatnya, akun berhasil terdaftar dan payload tersimpan secara permanen di database server CBT.
3. Eksekusi Skrip (The Trigger)
Saat pengguna login dan masuk ke Dashboard Mahasiswa, sistem memanggil data Nama Lengkap dari database. Karena data tidak di-encode, browser mengeksekusi payload tersebut sebagai kode program — bukan sebagai teks biasa.
🎥 Bukti Video: Tonton Video PoC di YouTube
Analisis Dampak
Jika celah ini dieksploitasi oleh pihak yang tidak bertanggung jawab, beberapa skenario berbahaya berikut dapat terjadi:
| Skenario | Dampak |
|---|---|
| Pencurian Sesi Admin (Blind XSS) | Jika Admin membuka daftar mahasiswa, skrip akan mencuri Session Cookie dan memberikan akses penuh ke sistem CBT |
| Manipulasi Integritas Ujian | Penyerang dengan akses admin dapat mengubah soal, kunci jawaban, hingga nilai mahasiswa |
| Phishing Internal | Menampilkan halaman login palsu di dashboard mahasiswa untuk mencuri kredensial akun secara massal |
Rekomendasi Mitigasi
Berikut langkah Secure Coding yang disarankan untuk mencegah serangan serupa:
✅ Context-Aware Output Encoding
Gunakan fungsi seperti htmlspecialchars() pada PHP — atau library setara di framework lain — sebelum menampilkan data ke browser.
echo htmlspecialchars($nama, ENT_QUOTES, 'UTF-8');
✅ Input Validation
Terapkan allow-list pada kolom nama: hanya izinkan karakter A–Z, a–z, spasi, dan tanda baca tertentu. Tolak karakter seperti <, >, ", dan '.
✅ Content Security Policy (CSP)
Pasang header CSP yang ketat di server untuk memblokir eksekusi skrip dari sumber yang tidak dikenal.
Content-Security-Policy: default-src 'self'; script-src 'self'
Kesimpulan
Keamanan siber di lingkungan kampus adalah tanggung jawab bersama. Penemuan ini merupakan bentuk kontribusi saya sebagai mahasiswa Teknologi Informasi untuk memastikan infrastruktur digital Universitas Mohammad Husni Thamrin tetap kokoh dan terpercaya.
Stay secure, stay ethical! 🔐