“Bug lagi, bug lagi!.”
Sebenarnya memang tidak ada website yang dapat 100 persen aman dari celah keamanan, contohnya pada kasus yang akan saya ceritakan kali ini. Bug dapat muncul dari tempat yang mungkin tidak diduga oleh si pembuat website.

Table of Contents

Pendahuluan

Bug yang kali ini akan saya bahas adalah bug yang terdapat pada salah satu subdomain milik kampus saya berkuliah, jadi pihak kampus saya itu memiliki sebuah sistem untuk menangani proses penerimaan mahasiswa baru secara online, sistem tersebut memiliki desain yang cukup modern dan simpel. Selain itu, website ini juga memiliki fungsi penerimaan mahasiswa baru (PMB) secara umumnya seperti fungsi daftar, registrasi dan lain-lain yang berhubungan dengan pendaftaran kuliah.

Namun ada fungsi yang cukup unik, yaitu fungsi daftar secara “khusus”, fungsi tersebut digunakan oleh mahasiswa/dosen/pihak yang berhubungan dengan kampus untuk mendaftarkan teman/keluarga nya agar daftar ke kampus tersebut dengan maksud mendapatkan keuntungan, ya keuntungan karena pada saat daftar secara khusus calon mahasiswa memerlukan sebuah kode refferal atau kode referensi, sehingga pemilik kode tersebut mendapatkan imbalan/keuntungan.

Analisa

Penemuan bug jenis SQL injection pada website ini sudah dua kali saya temukan, sebelumnya kurang lebih di tahun 2016 saya menemukan bug SQL Injection untuk melakukan “bypass login” pada website pendaftaran ini, sudah saya laporkan namun sepertinya pihak dari kampus masih kurang memahami tentang pentingnya keamanan pada website. Kembali ke pembahasan, jadi fokus saya tertuju pada fungsi pendaftaran khusus.

Yang pertama kali saya lakukan adalah mengecek bagaimana fungsi yang seharusnya terjadi pada saat menjalankan fungsi pendaftaran khusus.

Ternyata jika saya mengisikan no referensi yang salah akan memunculkan sebuah pesan kesalahan.

SQL Injection

Setelah mendapatkan pesan kesalahan, lalu saya menggunakan “mantra khusus” untuk mengecek apakah ada peluang untuk injeksi melalui parameter no referensi. no referensi yang asalnya menggunakan nomor,

diubah menjadi ‘or”=’

dan benar saja, terdapat bug SQL Injection pada parameter inputan no referensi

Seperti yang dapat dilihat pada gambar diatas, sistem tidak menampilkan pesan eror, padahal no referensi yang diinputkan tidak sesuai dengan no referensi yang ada.

Kesimpulan

Kesalahan

  • Inputan tidak dibersihkan dari karakter - karakter berbahaya, terbukti pada saat memasukan tanda petik sistem langsung memunculkan pesan eror

Penanganan

  • Untuk mengatasi masalah SQL Injection developer website dapat menggunakan fungsi mysql_real_escape_string atau mengubah terlebih dahulu inputan parameter kedalam bentuk enkripsi.
  • Sebaiknya matikan fitur error reporting pada website production.

Note : Bug ini telah diperbaiki.