by Aldi Pratama
Cross Site Scripting adalah salah satu jenis serangan
injeksi kode ke dalam Web Server, Cross
Site Scripting 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.
Type Cross Site Scripting :
·
Reflected
·
Stored
Reflected :
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 :
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.
Nah untuk kesempatan kali ini saya
akan memberikan caranya untuk melakukan Cross Site Scripting dengan menggunakan
metode Stored, pertama kita siapkan Web Server yang saya gunakan untuk pantest
ini saya menggunakan Web DVWA Vulnerability, langsung saja saya berikan
contohnya di bawah ini :
1.
Setelah WebVulnerability telah siap untuk di akses kita
akses menggunakan web browser dan ketikan Ip Address Web Server. Setelah itu
klik tab XSS Stored, dan ada sebuah inputan untuk mengisi Name dan Massage
·
Name : Test 1
·
Massage : <sCrIpT>alert(“Test
XSS”);</sCrIpT>
Setelah itu Klick
Sign Guestbook untuk execute script tersebut
Dan efek dari Script tersebut akan seperti gambar di
bawah ini
Setelah itu kita coba menggunakan Script Iframe untuk di
inject di web tersebut dan akan menampilkan efek attack yang berbeda, metodenya
sama seperti yang pertama hanya script-nya saja yang berbeda
·
Name :
test 2
·
Message :
<iframe src="https://alpratamanetwork.blogspot.co.id"></iframe>
Dan efeknya akan muncul sebuah web lain yang telah di
input links di dalam script iframe tersebut
1.
Berikut saya akan contohkan lagi script lain yang berbeda
untuk script ini akan merubah keseluruhan tampilan web yang di attack
·
Name :
test3
·
Message : <div
style="position:fixed;top:0;left:0;width:100%;height:100%;background-color:green;z-index:9999;"
onmouseover="prompt(document.domain)"/>
1.
Dan efeknya akan seperti gambar berikut, jika kalian seorang
programer kalian bisa memodifikasi lagi script tersebut dengan script yang lain
agar tampilannya bisa berbeda atau memasukan gambar menjadi gambar anonymous
mungkin sekian tutorial dari saya untuk pantest menggunakan cross site
scripting stored
Recomendasi untuk mengatasi masalah untuk serangan ini :
Hal ini
diperlukan untuk meningkatkan validasi input pengguna dalam parameter rentan,
dengan menolak karakter yang tidak diinginkan di bidang input (misalnya 5
karakter XML yang signifikan: <> & "'), atau menyandikannya
sebelum mengembalikannya ke halaman. Ada beberapa skema encoding yang dapat
digunakan tergantung di mana konten pengguna dimasukkan, tetapi skema pengodean
keluaran entitas HTML paling dasar adalah:
< → & lt;
> → &
gt;
& → &
amp;
" → &
# 034;
' → &
# 039;
Sebagai contoh,
dengan enkode yang diterapkan dengan benar, input pengguna <script> </
script> harus dikodekan sebelum rendering ke halaman sebagai & lt;
script & gt; & lt; / script & gt; atau jika karakter khusus dihapus
dari input pengguna, itu akan dikembalikan ke halaman sebagai skrip / skrip.
Diperlukan juga
penggunaan strategi pemfilteran masukan yang positif ("penerimaan dikenal
baik"), yaitu, gunakan daftar putih input yang dapat diterima yang
benar-benar sesuai dengan spesifikasi yang ditentukan misalnya. panjang minimum
dan maksimum, dan jenis parameter sintaks / data yang benar (misalnya hanya
menerima nilai numerik dengan panjang dari 1 hingga 11 karakter) dan menolak
masukan apa pun yang tidak benar-benar sesuai dengan spesifikasi, atau secara
opsional mengubahnya menjadi sesuatu yang memiliki. Pengembang aplikasi harus
dapat menentukan pola validasi yang sangat kuat - biasanya berdasarkan ekspresi
reguler - untuk memvalidasi data masukan yang terstruktur dengan baik, seperti
tanggal, nomor akun, kode pos, alamat email, dll.
Jangan hanya
mengandalkan validasi masukan daftar hitam. Blacklist juga dapat berguna untuk
mendeteksi serangan potensial atau menentukan masukan mana yang sangat salah
sehingga mereka harus ditolak mentah-mentah, tetapi pencegahan XSS tidak boleh
hanya mengandalkan mencari masukan jahat atau salah bentuk.
Referensi Links :
https://id.wikipedia.org/wiki/XSS