XSS Persistens
(Stored)
XSS Persistens (Cross-Site Scripting Persisten) adalah salah satu jenis serangan XSS (Cross-Site Scripting) yang memungkinkan penyerang untuk menyuntikkan skrip berbahaya ke dalam halaman web yang disimpan secara permanen di server. Skrip berbahaya ini kemudian dieksekusi setiap kali halaman tersebut dimuat oleh pengguna lain.
XSS Persisten berbeda dengan XSS Reflektif/reflected karena dalam XSS Persisten, skrip berbahaya disimpan di server dan dieksekusi setiap kali halaman yang terinfeksi diakses, bukan hanya ketika parameter URL dikirim.
XSS Persisten berbeda dengan XSS Reflektif/reflected karena dalam XSS Persisten, skrip berbahaya disimpan di server dan dieksekusi setiap kali halaman yang terinfeksi diakses, bukan hanya ketika parameter URL dikirim.
Cara Kerja XSS Persisten:
1. Skrip Berbahaya Dimasukkan: Penyerang menyuntikkan kode JavaScript berbahaya ke dalam formulir atau input yang akan disimpan oleh server, seperti komentar, forum, atau pesan di aplikasi web.
2. Penyimpanan di Server: Aplikasi web menyimpan input pengguna, termasuk skrip berbahaya tersebut, dalam database atau file, tanpa melakukan validasi atau penyaringan yang cukup.
3. Eksekusi Skrip Berbahaya: Setiap kali halaman web yang menyimpan skrip berbahaya tersebut dimuat oleh pengguna lain, skrip akan dieksekusi di browser mereka.
4. Dampak: Skrip berbahaya ini bisa digunakan untuk mencuri data pengguna (seperti cookies, session ID), mengalihkan pengguna ke situs berbahaya, atau bahkan melakukan tindakan lain yang dapat merusak aplikasi atau membahayakan penggunanya.
1. Skrip Berbahaya Dimasukkan: Penyerang menyuntikkan kode JavaScript berbahaya ke dalam formulir atau input yang akan disimpan oleh server, seperti komentar, forum, atau pesan di aplikasi web.
2. Penyimpanan di Server: Aplikasi web menyimpan input pengguna, termasuk skrip berbahaya tersebut, dalam database atau file, tanpa melakukan validasi atau penyaringan yang cukup.
3. Eksekusi Skrip Berbahaya: Setiap kali halaman web yang menyimpan skrip berbahaya tersebut dimuat oleh pengguna lain, skrip akan dieksekusi di browser mereka.
4. Dampak: Skrip berbahaya ini bisa digunakan untuk mencuri data pengguna (seperti cookies, session ID), mengalihkan pengguna ke situs berbahaya, atau bahkan melakukan tindakan lain yang dapat merusak aplikasi atau membahayakan penggunanya.
Contoh Sederhana XSS Persisten:
Misalkan ada sebuah aplikasi web yang memungkinkan pengguna untuk mengirimkan komentar dan menampilkannya di halaman lain. Aplikasi web ini tidak memvalidasi atau menyaring input dengan benar. Jika seorang penyerang menyuntikkan skrip berbahaya dalam bentuk komentar, skrip ini akan disimpan dan dijalankan setiap kali halaman dimuat oleh pengguna lain.
Contoh komentar berbahaya :
<script>alert('XSS Persisten!');</script>
Jika aplikasi web tidak menyaring atau memvalidasi input ini, maka komentar tersebut akan disimpan di server dan ditampilkan di halaman web. Setiap kali pengguna mengunjungi halaman yang berisi komentar tersebut, skrip JavaScript akan dijalankan, yang dapat menampilkan pesan peringatan atau bahkan melakukan tindakan yang lebih merusak.
Jika aplikasi web tidak menyaring atau memvalidasi input ini, maka komentar tersebut akan disimpan di server dan ditampilkan di halaman web. Setiap kali pengguna mengunjungi halaman yang berisi komentar tersebut, skrip JavaScript akan dijalankan, yang dapat menampilkan pesan peringatan atau bahkan melakukan tindakan yang lebih merusak.
Dampak dari XSS Persisten:
1. Pencurian Informasi: Penyerang dapat menggunakan skrip untuk mencuri data sensitif pengguna, seperti cookies atau informasi sesi, yang dapat digunakan untuk meretas akun pengguna.
2. Pengalihan Pengguna: Skrip dapat mengarahkan pengguna ke situs berbahaya yang dirancang untuk mencuri informasi lebih lanjut atau menyebarkan malware.
3. Pemalsuan Konten: Skrip bisa digunakan untuk mengubah atau memalsukan konten di halaman yang dilihat oleh pengguna lain.
Cara Mencegah XSS Persisten:
1. Validasi dan Sanitasi Input: Semua input dari pengguna harus disaring dan divalidasi dengan hati-hati untuk memastikan bahwa kode HTML atau JavaScript berbahaya tidak diterima atau dijalankan. Ini bisa dilakukan dengan menggunakan pustaka sanitasi input yang menghapus atau mengubah karakter berbahaya.
2. Menggunakan CSP (Content Security Policy): Dengan CSP, Anda dapat membatasi skrip mana yang dapat dijalankan pada halaman dan mencegah eksekusi skrip yang berasal dari sumber yang tidak terpercaya.
3. Escaping Data: Sebelum menampilkan data input pengguna di halaman web, pastikan untuk escape karakter-karakter khusus (seperti `<`, `>`, `&`, dll.) sehingga kode HTML atau JavaScript tidak dieksekusi.
4.Penggunaan HTTPOnly dan Secure Cookies: Gunakan atribut `HTTPOnly` dan `Secure` pada cookie untuk mengurangi kemungkinan pencurian sesi menggunakan XSS.
XSS Persisten adalah salah satu bentuk serangan yang sangat berbahaya karena dapat menargetkan banyak pengguna, bahkan jika mereka tidak berinteraksi langsung dengan input berbahaya. Oleh karena itu, penting untuk selalu menjaga keamanan aplikasi web dengan memvalidasi input dan menerapkan kebijakan keamanan yang ketat.
1. Validasi dan Sanitasi Input: Semua input dari pengguna harus disaring dan divalidasi dengan hati-hati untuk memastikan bahwa kode HTML atau JavaScript berbahaya tidak diterima atau dijalankan. Ini bisa dilakukan dengan menggunakan pustaka sanitasi input yang menghapus atau mengubah karakter berbahaya.
2. Menggunakan CSP (Content Security Policy): Dengan CSP, Anda dapat membatasi skrip mana yang dapat dijalankan pada halaman dan mencegah eksekusi skrip yang berasal dari sumber yang tidak terpercaya.
3. Escaping Data: Sebelum menampilkan data input pengguna di halaman web, pastikan untuk escape karakter-karakter khusus (seperti `<`, `>`, `&`, dll.) sehingga kode HTML atau JavaScript tidak dieksekusi.
4.Penggunaan HTTPOnly dan Secure Cookies: Gunakan atribut `HTTPOnly` dan `Secure` pada cookie untuk mengurangi kemungkinan pencurian sesi menggunakan XSS.
XSS Persisten adalah salah satu bentuk serangan yang sangat berbahaya karena dapat menargetkan banyak pengguna, bahkan jika mereka tidak berinteraksi langsung dengan input berbahaya. Oleh karena itu, penting untuk selalu menjaga keamanan aplikasi web dengan memvalidasi input dan menerapkan kebijakan keamanan yang ketat.
https://www.acunetix.com/blog/articles/persistent-xss/