XSS merupakan serangan injeksi kode yang memasukkan skrip ke situs web. Ada dua jenis XSS: reflected yang memanfaatkan tautan berbahaya, dan stored yang lebih berbahaya karena skrip tersimpan di situs. Dokumen ini menjelaskan cara mendeteksi kelemahan XSS, melakukan eksploitasi dengan iframe, dan mencegah XSS dengan encoding tag dan karakter khusus.
2. Hacking Website Cross-Site Scripting XSS
1. Definisi XSS
XSS merupakan kependekan yang digunakan untuk istilah cross site
scripting. XSS merupakan salah satu jenis serangan injeksi code (code injection
attack). XSS dilakukan oleh penyerang dengan cara memasukkan kode HTML atau
client script code lainnya ke suatu situs. Serangan ini akan seolah-olah datang dari
situs tersebut. Akibat serangan ini antara lain penyerang dapat mem-bypass
keamanan di sisi klien, mendapatkan informasi sensitif, atau menyimpan aplikasi
berbahaya. Alasan kependekan yang digunakan XSS bukan CSS karena CSS
sudah digunakan untuk cascade style sheet.
XSS dibagi menjadi 2 tipe, yaitu :
Reflected XSS, merupakan tipe XSS yang paling umum dan yang paling mudah
dilakukan oleh penyerang. Penyerang menggunakan social engineering agar tautan
dengan kode berbahaya ini diklik oleh pengguna. Dengan cara ini penyerang bisa
mendapatkan cookie pengguna yang bisa digunakan selanjutnya untuk membajak
session pengguna. Mekanisme pertahanan menghadapi serangan ini adalah dengan
melakukan validasi input sebelum menampilkan data apapun yang di-generate oleh
pengguna. Jangan percayai apapun data yang dikirim oleh pengguna.
Stored XSS, lebih jarang ditemui dan dampak serangannya lebih besar. Sebuah
serangan stored XSS dapat berakibat pada seluruh pengguna. Stored XSS terjadi
saat pengguna diizinkan untuk memasukkan data yang akan ditampilkan kembali.
Contohnya adalah pada message board, buku tamu, dll. Penyerang memasukkan
kode HTML atau client script code lainnya pada posting mereka. Serangan ini lebih
menakutkan. Mekanisme pertahanannya sama dengan reflected XSS: jika pengguna
diizinkan untuk memasukkan data, lakukan validasi sebelum disimpan pada aplikasi.
3. 2. XSS Targeting
Dalam kasus ini kita menggunakan tipe penyerangan Stored XSS dengan cara yang
paling sederhana. Sebelum anda melakukan penetrasi dalam hacking website, ada
baiknya kita mengechcek apakah target website mempunyai kelemahan dalam XSS.
Tools yang dapat digunakan adalah :
- http://xss-scanner.com. Tools ini dapat dengan mudah medeteksi apakah
sebuah web memliki kelemahan dalam sisis XSS atau tidak. (Kekurangannya
adalah masih kurang impresive karena tidak mendukung website yang
mempunyai redirect seperti 301 atau 302).
- XSS ME Firefox Plugin. Tools ini cukup tangguh karena dapat memeriksa
setiap titik kelemahan – kelamahan XSS dalam sebuah website.
Pada kasus ini kita menggunakan tools XSS ME dan dengan tujuan website yang di
target adalah : https://www.celotehriki.com/hack-xss/
a. Gambar XSS ME keitka sudah mendapatkan target :
4. Terlihat pada gambar a bahwa protocol https baik SSL atau pun TLS tidak
menjadikan sebuah website aman dari penyerangan.
b. Gambar Result Scan
Terlihatpada gambar b menunjukan hasil dari scan XSS ME, disitu terlihat banyak
sekali kelemahan – kelemahan yang bisa kita gali, yaitu sebanyak 308 test kita bisa
menggunakan 158 tehnik untuk XSS nya.
Kesimpulanya pada poin ini adalah target https://www.celotehriki.com/hack-xss/
dapat diexploitasi kelemahan – kelemahan XSS nya, dengan demikian kita masuk
adalam proses selanjutnya.
Note : url target ini adalah server VPS saya pribadi, jadi memang saya setting
default tanpa ada tambahan apa – apa dan pastinya tidak mencoba di tempat yang
merugikan orang lain
5. 3. Exploitasi XSS
Setelah kita mendapatkan target dan target kita mempunyai kelemahan pada sisi
XSS nya, maka langkah selanjutnya adalah mencoba penetrasi langsung ke target.
Tehnik dalam kasus penyerangan dalam XSS kuhususnya Strored XSS saya
melakukan dengan menginject paksa sebuah ifrme ke dalam halaman website
tersebut, berikut langkah – langkahnya :
3.1 Isi form dengan iframe script :
3.2 Scriptnya seperti ini :
<iframe src= "https://www.mdcreative.id/hack.html" style="position:
absolute; top: 0; left: 0; width: 100%; height: 500%;
background:#333;"></iframe>
3.3 Form berhasil di input dan lihat hasilnya. Booooom seketika itu juga halaman
target pun berubah menjadi seperti dibawah ini.
6. 3.4 XSS Berhasil
Kesimpulan dalam poin ini adalah sctrip kita bekerja dengan benar,
selain menggunakan tehnik iframe kita juga bisa menggunakan script –
script lainnya seperti alert, document location, dll.
7. 4. Penanganan XSS
Target XSS bisa dimana saja, di tempat yang tidak diduga sekalipun,
inilah daftar target yang banyak digunakan untuk eksploitasi XSS :
1. URL
2. HTTP referrer objects
3. Parameter GET
4. Parameter POST
5. Window.location
6. Document.referrer
7. document.location
8. document.URL
9. document.URLUnencoded
10. cookie data
11. headers data
12. database data
Bagaimana cara mengatasinya?
Pertama, lakukan encoding untuk karakter <, >,' dan ". LIhat
encoding dibawah :
& –> &
< –> <
> –> >
" –> "
' –> '
/ –> /
8. Untuk fungsi diatas jika anda menggunakan PHP anda dapat
memakai fungsi htmlspecialchars() ini akan meng-encode semua
Tag HTML dan spesial karakter.
Atau anda dapat menambahkan filter dengan str_replace
$input = str_replace(array('&','<','>'), array('&','<','>'),
$input);
Atau menggunakan Open Source Libraries mengenai pencegahan
XSS attack seperti PHP AntiXSS , HTML Purifier , xssprotect ,
XSS HTML Filter
Anda dapat menggunakan salah satu dari library diatas, semuanya
sama baiknya yang penting lakukan pencegahan sejak dini, sebelum
website anda terkena serangan.
5. Source
-https://id.wikipedia.org/wiki/XSS
-https://www.owasp.org/index.php/Testing_for_Cross_site_scripting
-https://www.ethic.ninja/2014/10/bagaimana-mengatasi-serangan
xss.html
-https://labs.securitycompass.com/exploit-me/xss-me/