Virus corona, yap.. virus yang satu ini sedang booming sejak kemunculan nya pertama kali di china, virus tersebut berdampak pada banyak aspek termasuk di bidang pendidikan. Sekolah, Kampus, semua ditutup sampai waktu yang belum dapat ditentukan, kemudian hal itu lah yang menyebabkan sekolah - sekolah atau kampus mengubah cara belajar nya, yang asalnya tatap muka menjadi belajar secara daring.
Hal itu banyak dikeluhkan oleh peserta didik, dikarenakan ada yang merasa susah untuk mencerna ilmu secara online, tugas online dan hal-hal lain nya yang serba online. Pihak - pihak terkait segera memikirkan cara agar para siswa atau mahasiswa agar tidak susah saat belajar daring, salah satu nya menggunakan sistem E-Learning.
Table of Contents
Pendahuluan
Seperti postingan saya sebelumnya, disana dijelaskan bahwa saya memang orang yang senang melakukan sesuatu dan selalu kepo haha. Jadi pada saat itu pihak kampus menyediakan sebuah layanan e-learning, tampilan nya seperti dibawah ini:
Dari halaman yang pertama kali dilihat saja mata saya langsung tertuju pada sebuah parameter di address bar, yaitu pada parameter /?affcode. lalu saya coba lakukan testing, hal yang pertama saya tes adalah SQL Injection.
Namun tidak ada respon apapun, halaman tetap memunculkan halaman nya dengan normal, saya pikir web tersebut aman dari serangan SQL Injection. Lalu saya pikirkan kembali, apakah ada kemungkinan celah dari parameter tersebut. saya coba lihat source code dari halaman tersebut ternyata string yang saya masukan tersimpan ke halaman website tersebut dan inilah yang dinamakan refleksi, jadi yang kita masukan muncul kedalam halaman.
Analisa
Setelah mengetahui bahwa halaman tersebut merefleksikan masukan yang saya tulis, maka saya lakukan tes untuk mengecek apakah terdapat bug XSS atau tidak.
Saya menggunakan payload seperti yang tertera dibawah ini:
1 |
|
ternyata masukan pada parameter affcode terbaca oleh sistem, seperti pada gambar diatas, masukan tersimpan pada beberapa atribut HTML, namun belum fungsi alert dari payload tersebut tidak berjalan.
Penemuan Reflected XSS
Dari temuan diatas, saya lalu memikirkan bagaimana cara memastikan bahwa benar terdapat XSS pada halaman tersebut. Akhirnya saya pun mencoba payload dengan attribut img
1 |
|
Tapi tetap saja halaman tidak bereaksi atas payload yang saya gunakan :(
Akhirnya saya berhenti sejenak, dan mencoba mencari bug yang lain, tetapi tiba - tiba saja saya ingin sekali me-refresh halaman tersebut (karena jaringan internet saya lemot makanya sering refresh halaman webnya hahaha), entah kenapa muncul sebuah alert atau pesan seperti message box.
Setelah itu saya coba dengan menggunakan payload untuk mendapatkan cookies dari user.
1 |
|
Dari situ saya menyadari, bahwa bug tersebut berasal dari cookies yang disimpan oleh web, seperti pada gambar diatas, sebuah pesan alert menampilkan isi dari cookies, disitu terlihat jelas ada elemen html yang ikut masuk kedalam cookies milik user pada field affcode.
Kesimpulan
Jadi website tersebut menyimpan affcode secara langsung tanpa dicek terlebih dahulu apakah affcode mengandung string “berbahaya” atau tidak, sehingga jika user memasukan affcode menggunakan kode HTML maka sistem akan membaca masukan user sebagai HTML juga.
Perlu diketahui, bahwa bug jenis XSS ini dapat digunakan oleh penjahat untuk mendapatkan akses seorang user melalui cookies user tersebut.
Penanganan
Website ini menggunakan LMS atau Learning Management System Chamilo dengan versi yang lawas, maka disarankan untuk update LMS tersebut ke versi terbaru.