Cross Site Scripting
Cross-Site Scripting (XSS) adalah salah satu jenis serangan cyber yang cukup diperhitungkan. Bahkan, serangan ini pernah menyerang platform yang ternama sekalipun seperti Facebook, Google, dan PayPal. Beberapa orang yang berpengalaman di bidang IT Security mungkin sudah tidak asing dengan beberapa hal yang disebut sebagai resiko keamanan pada aplikasi. Berdasarkan yang dipaparkan dalam penjelasan website yang mengulas mengenai keamanan dalam teknologi informasi, yakni OWASP (Open Web Application Security Project), terdapat 10 jenis resiko keamanan aplikasi web yang paling kritis. Salah satunya adalah Cross-Site Scripting.
- Apa itu Cross-Site Scripting (XSS)?
Cross-Site Scripting, atau biasa disebut XSS, merupakan serangan berupa code injection yang menanamkan kode/skrip berbahaya di website. Cross-site scripting memanfaatkan kerentanan pada aplikasi web berupa input dan output yang tidak divalidasi atau dikodekan. Dalam kata lain, Cross-site scripting mengunakan aplikasi web untuk mengantarkan script berbahaya ke browser dari korban karena penyerang tidak bisa langsung menjalankan script berbahaya di browser korban. Korban secara tidak sadar akan mengunduh script berbahaya dan browser akan menjalankan code tersebut, script berbahaya bisa terunduh dikarenakan aplikasi web menampilkan user input tanpa di validasi terlebih dahulu. Penyerang akan memasukkan string berupa kode kedalam input web app seperti search, form, command dan bahkan postingan. contoh serangan yang biasanya dilakukan adalah dengan menggunakan javascript karena bisa melakukan beberapa tipe serangan seperti: cookie stealing, keylogging, dan phising.
- Cara Kerja
Berdasarkan penjelasan XSS di atas, dapat diketahui bahwa tujuan dari XSS sangat berbahaya bagi para developer website. Oleh karena itu, penting untuk mengetahui bagaimana cara kerja XSS. Dengan begitu, para developer website dapat mendeteksinya dari awal dan melakukan berbagai macam pencegahan dan mitigasi.
Sederhananya, XSS bekerja dengan melakukan eksekusi script berbahaya di browser korban dengan cara memasukkan kode berbahaya ke halaman web atau web aplikasi yang sah. Umumnya serangan ini dilakukan menggunakan Javascript, VBScript, ActiveX, Flash, dan bahasa sisi klien lainnya. Nantinya, penyerang akan menghubungi para korban melalui form kolom komentar, hingga message boards dengan mengunggah link untuk membuat script yang berbahaya. Ketika korban melakukan klik terhadap link tersebut, script mulai menyerang dan menyamar sebagai si korban. Melalui cara inilah, para hacker dapat mengetahui data-data milik korban.
- Jenis-Jenis Cross-Site Scripting (XSS)
- Reflected Cross Site Scripting (non-persistent)
Reflected XSS juga dikenal sebagai serangan XSS yang tidak persisten atau menetap. Dalam kasus serangan reflected XSS, script berbahaya dipantulkan ke situs web lain di browser pengguna. Ini terjadi ketika input pengguna dari URL atau data POST tercermin pada halaman tanpa disimpan, sehingga memungkinkan penyerang untuk menyuntikkan konten berbahaya. Ini berarti bahwa seorang penyerang harus mengirim URL jahat atau formulir posting kepada korban untuk memasukkan payload, dan korban harus mengklik tautan. Payload semacam ini juga umumnya ditangkap oleh filter XSS bawaan di browser pengguna, seperti Chrome, Internet Explorer atau Edge.
2. Stored Cross-Site Scripting (Persistent)
Stored XSS, juga dikenal sebagai XSS persisten, termasuk memasukkan kode berbahaya langsung ke aplikasi web. Ini terjadi ketika payload disimpan, misalnya dalam database dan kemudian dieksekusi ketika pengguna membuka halaman pada aplikasi web. Contoh lain dari Cross-Site Scripting ini adalah formulir pencarian (Search form), di mana pengunjung mengirim Query pencarian mereka ke server, dan hanya mereka yang melihat hasilnya.
Penyerang biasanya mengirim tautan khusus korban yang mengarahkan pengguna yang tidak curiga ke halaman yang rentan. Dari halaman ini, mereka sering menggunakan berbagai metode untuk memicu pembuktian konsep mereka.
3. DOM-Based Cross-Site Scripting
DOM XSS adalah bentuk serangan XSS di mana script berbahaya hadir dalam Document Object Model alih-alih HTML. Dalam serangan Cross-Site Scripting yang reflected dan stored, kalian dapat melihat payload kerentanan di halaman respons tetapi dalam XSS berbasis DOM, kode sumber HTML dan respons serangan akan persis sama, yaitu payload tidak dapat ditemukan diresponnya. Itu hanya dapat diamati pada saat runtime atau dengan menyelidiki DOM halaman.
- Contoh Kasus
Peristiwa yang akan diangkat kali ini adalah kejadian di tahun 2004 di mana KPU memperkenalkan sistem teknologi terbarunya senilai Rp 152 miliar. Proyek prestisius ini memiliki harga yang selangit namun kenyataannya tidak menjamin keamanan dari berbagai serangan siber. Bermula dari aksi KPU yang klaim secara sepihak bahwa sistem teknologi informasi yang digunakan sudah sangat canggih sehingga tidak mungkin diretas.
Namun, aksi pamer teknologi KPU itu menarik banyak perhatian dan ternyata terdapat banyak lubang dalam sistem teknologi tersebut. Xnuxer, yang bernama asli Dani Firmansyah, sebagai pelaku yang melakukan peretasan tersebut. Xnuxer melakukan pembobolan situs KPU untuk melakukan beberapa tes sistem keamanannya saja. Ternyata, lulusan sarjana Ilmu Polituk Internasional Universitas Muhammadiyah Yogyakarta itu bisa melakukannya denga mudah bahkan tanpa tools khusus.
Dia berhasil meretas situs Tabulasi Nasional Pemilu tnp.kpu.go.id pada 16 April 2004 dengan cara XSS atau cross-site scripting dan SQL injection. Setelah berhasil meretas, dia mengganti nama partai yang terdaftar menjadi nama partai politik Jambu, Mbah Jambon, sampai Kolor Ijo. Mengetahui situsnya diretas, KPU langsung melaporkannya ke Kepolisian Daerah Metro Jaya pada 24 April 2004 yang menyebabkan Xnuxer resmi ditahan oleh kepolisian.
Berselang 7 bulan pasca kasus itu, Dani, atau yang dikenal sebagai Xnuxer, itu dituntut hukuman 1 tahun penjara dengan denda Rp 10 juta. Tetapi, karena dia bersikap kooperatif, hukuman penjaranya terpangkas menjadi 6 bulan 21 hari.
- Bagaimana Mencegah Serangan Cross-Site Scripting (XSS)?
Setelah memahami bagaimana mekanisme kerja dari XSS, anda dapat melakukan berbagai langkah atau strategi untuk mencegah serangan XSS ini, seperti analisis keamanan situs, menambahkan SDL, mengadopsi crossing boundaries policy, dan lain-lain. Berikut penjelasan lebih lanjut mengenai pencegahan yang dapat dilakukan.
- Periksa Keamanan Situs. Demi menjaga keamanan aplikasi website yang dimiliki, anda perlu memastikan bahwa halaman yang membangkitkan konten secara dinamis tidak mendukung tag yang tidak diinginkan, seperti filtering, validasi, hingga encoding. Pemilik situs websites dapat menggunakan website vulnerability scanner, seperti Sucuri atau VirusTotal untuk menganalis keamanan situs. Dengan melakukan cara ini, diharapkan pemilik situs dapat mengetahui informasi lengkap tentang kelemahan dan kerentanan keamanan yang ada di dalam situs tersebut.
- Mengadopsi Cross Boundaries Policy. Ini memungkinkan pengguna untuk memasukkan informasi login sebagai bentuk otentikasi. Pemilik situs website juga dapat mengatur ulang dan meminta pengguna untuk memasukkan kredensial mereka pada halamn website tertentu.
- Menambahkan SDL (Security Development Lifecycle). Dengan menambahkan SDL, aplikasi web dapat membatasi jumlah kesalahan coding dan pelanggaran keamanan. SDL juga bisa membantu pengembangan untuk membangun perangkat lunak yang aman dan terhindar dari serangan XSS.
Sebagai tambahan, untuk pencegahan cross site scripting, kita juga memerlukan validasi dan pengkodean setiap input dari user. Selain itu, kita juga harus menvalidasi output dari user input seperti comment dan posting. Kita bisa juga menggunakan framework pada bahasa pemrograman server site seperti strip_tags() pada html dan php, OWASP Java HTML Sanitizer Project pada java dan .net Selain itu dari sisi user mengunakan anti-malware, internet security, dan latest update browser bisa mencegah untuk mengunjungi situs-situs yang telah terinfeksi cross site scripting.
- Kesimpulan.
XSS adalah serangan yang berpotensi untuk menjadi salah satu serangan yang paling berbahaya untuk sebuah situs website. Hal ini tentu bisa menjadi konsekuensi yang mungkin tidak akan bisa pemilik website manapun menerimanya. Tujuan dari serangan ini adalah mengambil data penting, mengambil cookie dari user atau mengirimkan suatu program yang dapat merusak user, namun seakan-akan penyebabnya adalah dari web itu sendiri. Namun, Anda dapat mencegah adanya serangan XSS pada situs website dengan melakukan langkah yang sudah tertulis di atas.
Referensi:
https://www.nesabamedia.com/pengertian-xss/
https://owasp.org/www-community/attacks/xss/
https://www.monitorteknologi.com/apa-itu-serangan-xss/
https://www.merdeka.com/teknologi/9-kasus-peretasan-di-wilayah-indonesia.html