Cross Site scripting attack (XSS) / Serangan skrip lintas situs(XSS)
Pengantar Kerentanan XSS
Serangan Cross-Site Scripting XSS adalah injeksi kode berbahaya yang dieksekusi di browser korban. Demikian juga, dapat dilakukan dengan strategi yang berbeda - dengan praktis tidak ada skrip yang disimpan di server web.
Motivasi mendasar di balik serangan ini adalah untuk mengambil informasi karakter klien lain - cookie, token sesi, dan data lainnya. Serangan ini digunakan untuk menerima cookie orang lain. Seperti yang mungkin kita sadari, cookie membantu kita masuk secara alami. Dengan cara ini, kita dapat masuk dengan karakter yang berbeda dengan cookie yang diambil. Terlebih lagi, ini adalah salah satu alasan mengapa serangan ini dianggap sebagai serangan yang paling berbahaya.
Serangan XSS sedang dilakukan di sisi klien. Serangan ini dapat dilakukan dengan berbagai bahasa pemrograman sisi klien. Namun, paling sering, serangan ini dilakukan dengan Javascript dan HTML.
Bagaimana XSS Dilakukan?
Serangan Cross-Site Scripting menyiratkan pengiriman dan injeksi kode atau konten berbahaya. Kode berbahaya biasanya terdiri dari bahasa pemrograman sisi klien seperti Javascript, HTML, VBScript, Flash, dll. Bagaimanapun, Javascript dan HTML biasanya digunakan untuk memainkan serangan ini.
Serangan ini bisa dilakukan dengan berbagai cara. Bergantung pada jenis serangan XSS, konten destruktif mungkin tercermin pada browser clint atau disimpan dalam database dan dieksekusi tanpa gagal ketika klien memanggil kapasitas yang sesuai.
Pembenaran prinsip untuk serangan ini adalah persetujuan validasi input yang tidak tepat, di mana informasi berbahaya dapat masuk ke hasilnya. Klien jahat dapat memasukkan konten yang disuntikkan ke dalam kode situs. Kemudian, pada saat itu, program tidak dapat mengetahui apakah kode yang dieksekusi berbahaya atau tidak.
Akibatnya, konten yang merusak sedang dieksekusi pada program korban, atau struktur palsu ditampilkan untuk klien. Ada beberapa struktur dimana serangan XSS bisa terjadi.
Jenis utama Cross-Site Scripting adalah sebagai berikut:
1. Cross-Site Scripting dapat terjadi pada konten destruktif yang dijalankan di sisi klien.
2. Halaman atau struktur palsu diperlihatkan kepada klien (di mana korban mengetik kualifikasi atau memutuskan koneksi jahat)
Jenis XSS
Ada tiga jenis pengaturan awal lintas situs, khususnya:
1. Tercermin XSS ( Reflected XSS )
2. XSS Tersimpan ( Stored XSS )
3. XSS berbasis Dom ( Dom-based XSS )
1. Apa yang dimaksud dengan serangan XSS yang direfleksikan?
Serangan XSS yang direfleksikan, atau disebut serangan non-persisten, terjadi ketika konten berbahaya dipantulkan dari aplikasi web ke browser korban.
Skrip diaktifkan melalui koneksi yang mengirimkan permintaan ke situs dengan kerentanan yang memberdayakan eksekusi skrip berbahaya. Kerentanan biasanya merupakan efek samping dari permintaan yang mendekati tidak cukup dibersihkan, yang memperhitungkan kontrol akun kapasitas aplikasi web dan aktivasi skrip berbahaya.
Untuk menyebarkan tautan berbahaya, pelakunya secara teratur memasukkannya ke dalam email atau situs pihak ketiga (misalnya, di area komentar atau media sosial). Sambungan dimasukkan ke dalam teks jangkar yang mendorong klien untuk mengetuknya, yang memulai permintaan XSS untuk memanfaatkan situs, yang mencerminkan serangan ke klien.
Contoh serangan XSS yang direfleksikan
Contoh: Anggap kita memiliki situs dengan bidang pencarian.
Misalkan bidang permintaan pencarian rentan. Ketika klien memasukkan skrip apa pun, itu akan dieksekusi.
Pertimbangkan, klien memasukkan skrip dasar "<script>alert("Barangkali ada")</scipt> " seperti yang ditampilkan di bawah ini:
Kemudian, setelah mengklik tombol "Cari/Enter", skrip yang dimasukkan akan dieksekusi.
Seperti yang kita temukan di Contoh, skrip yang disusun ke dalam bidang kueri akan dieksekusi. Ini menunjukkan kerentanan serangan XSS. Meskipun demikian, skrip yang lebih tidak aman mungkin juga konsisten.
Banyak penganalisis memicu serangan Cross-Site Scripting dengan Javascript Injection, yang juga dilakukan di sisi klien. Di keduanya, skrip serangan berbahaya sedang disuntikkan. Namun, dalam kasus serangan XSS, label tidak penting untuk menjalankan skrip.
Bagaimana Menguji Terhadap XSS?
Pertama, untuk menguji terhadap serangan XSS, dapat dilakukan pengujian black box. Artinya, dan sangat baik dapat dicoba tanpa review kode. Meskipun demikian, tinjauan kode secara konsisten merupakan praktik yang disarankan, dan juga membawa hasil yang lebih dapat diandalkan. Dari pengalaman pengujian perangkat lunak saya, saya mungkin ingin menambahkan bahwa jika strategi pengujian kotak hitam yang layak dipilih dan dilakukan dengan tepat, ini sudah cukup.
Saat memulai pengujian, penganalisis mempertimbangkan bagian situs mana yang rentan terhadap kemungkinan serangan XSS.
Lebih baik mencantumkannya dalam catatan pengujian apa pun, dan dengan cara ini, kami akan yakin tidak ada yang terlewatkan. Kemudian, pada saat itu, penganalisis harus mengantisipasi bidang informasi kode atau skrip apa yang harus diperiksa. Sangat penting untuk mengingat, apa arti hasil, aplikasi itu rentan, dan itu meruntuhkan hasil sepenuhnya.
Saat menguji kemungkinan serangan, penting untuk memeriksa bagaimana reaksinya terhadap skrip yang dibuat dan apakah skrip itu dieksekusi atau tidak, dll.
2. Apa itu serangan XSS Tersimpan?
Serangan XSS yang persisten merupakan bahaya yang sangat kritis karena dapat memiliki jangkauan yang luas dan tidak memerlukan fase rekayasa sosial (seperti serangan XSS Tercermin. yang akan kita bahas di bagian berikutnya dari seri ini) untuk membuat klien melakukan gerakan tertentu, seperti mengklik koneksi.
Bagaimanapun, bagaimana tepatnya serangan Stored XSS bekerja? Apa konsekuensi dari serangan yang berhasil? Bagaimana memperlakukan situasi serangan yang sebenarnya? Terlebih lagi, di atas segalanya, bagaimana Anda bisa aman dari mereka?
Bagaimana kalau kita selesaikan.
Bagaimana Cara Kerja Serangan XSS Tersimpan?
Serangan skrip lintas situs yang persisten dapat terjadi saat situs atau aplikasi web. Mengizinkan masukan klien belum benar-benar membersihkan atau membatasi substansinya. Ini menganggap kode berbahaya untuk dimasukkan sebagai input, yang disimpan di server dan ditampilkan kepada pengunjung situs yang tidak menaruh curiga.
Misalnya, seorang peretas dapat terdiri dari skrip berbahaya saat memposting komentar di weblog terkenal. Dalam hal ini, kita semua yang memeriksa artikel blog itu bisa terkena skrip jahat. Kode penyerang ditangani secara tidak benar sebagai input yang valid melalui situs web online yang bersangkutan dan akibatnya tidak dikodekan dengan baik.
gambar : blog.hacksec.in
Contoh bidang entri konten tekstual yang rentan terhadap serangan XSS yang disimpan.
Bidang input konten tekstual adalah area maksimum yang biasa untuk injeksi muncul; namun, tempat yang biasanya tidak menyertakan skrip (seperti tag gambar atau atribut acara) juga merupakan tujuan utama. Detail apa pun yang tidak terkait untuk memasukkan validasi, penyandian, atau pemfilteran kemungkinan dapat dimanfaatkan oleh penyerang.
gambar : blog.hacksec.in
Namun, Stored XSS agak mudah dilakukan oleh peretas. Setelah mengamati situs yang rentan, yang perlu mereka lakukan hanyalah menyuntikkan kode berbahaya mereka dan menunggu korban untuk mengunjungi (peretas akan mempromosikan kualitas mereka melalui pesan spam atau posting media berbasis web). Menemukan situs target itu sendiri adalah bagian yang paling kompleks dari siklus.
Interaksi untuk mengamati tujuan yang rentan biasanya berjalan sebagai berikut:
1. Penyerang mengamati situs yang mungkin rentan.
2. Mereka mengujinya dengan menyimpan skrip di server dan memanfaatkan kerentanan.
3. Mereka menjelajahi halaman yang akan menyampaikan kode berbahaya.
4. Mereka memverifikasi apakah skrip dijalankan.
Target Utama Serangan XSS Tersimpan
Setiap situs yang mempertimbangkan berbagi konten oleh klien adalah tujuan yang mungkin untuk serangan XSS yang Persisten. Pikirkan tempat mana pun dengan kolom komentar atau kotak teks untuk input dan tujuan klien di mana informasi itu disimpan dan ditampilkan ke klien yang berbeda.
Target umum meliputi:
1. Tujuan komunikasi orang ke orang.
2. Tandai area situs, misalnya, situs atau platform berbagi video.
3. sistem CRM/ERP.
4. Konsol server email.
Serangan XSS yang tersimpan berhasil karena kepercayaan klien pada situs nyata - situs tersebut akhirnya memiliki kerentanan yang dapat dimanfaatkan melalui XSS.
Apa itu XSS Berbasis DOM?
Sesuai eksplorasi dan studi yang berbeda, hingga setengah dari situs rentan terhadap kerentanan XSS Berbasis DOM. Analis keamanan mendeteksi masalah DOM XSS di organisasi web profil tinggi seperti Google, Yahoo, dan Amazon.
XSS berbasis DOM, juga disebut Tipe-0 XSS, adalah serangan XSS di mana muatan serangan dijalankan dengan menyesuaikan DOM dalam program korban. Ini membuat pelanggan menjalankan kode tanpa informasi atau persetujuan klien. Halaman sebenarnya (misalnya, respons HTTP) tidak akan berubah, namun perubahan berbahaya dalam iklim DOM akan menyebabkan kode pelanggan yang terdapat di halaman tersebut dieksekusi secara bergantian.
Ini bervariasi dari serangan XSS yang direfleksikan atau disimpan, yang menempatkan muatan serangan ke halaman respons karena kerentanan sisi server. DOM XSS adalah kelemahan di sisi klien.
Bagaimana Serangan DOM XSS Bekerja?
Serangan DOM XSS biasanya mengikuti siklus ini:
1. Browser korban mendapatkan koneksi dan mengirimkan permintaan HTTP ke hacksec.in, dan menerima halaman HTML statis.
2. Browser korban kemudian, pada saat itu, mulai mem-parsing HTML ini ke dalam DOM. DOM berisi artikel yang disebut dokumen, yang mencakup properti yang disebut URL, properti ini diisi dengan URL halaman saat ini sebagai fitur pembuatan DOM.
3. Saat parser memproses kode Javascript, parser mengeksekusinya dan mengubah HTML mentah halaman. Untuk situasi ini, kode referensi document.URL, dengan demikian, sepotong string ini ditanamkan pada waktu parsing dalam HTML.
4. String kemudian diurai, dan kode Javascript dieksekusi sehubungan dengan halaman serupa, menghasilkan XSS.
Logika di balik DOM XSS adalah bahwa input dari klien - sumber - menuju ke titik eksekusi - tenggelam. Dalam model sebelumnya, sumber kami adalah document.write dan sink adalah alert(document.cookie).
Setelah situs mengeksekusi kode berbahaya, penyerang dapat mencuri cookie program klien atau mengubah perilaku halaman di aplikasi web.
Bagaimana Penyerang Mengeksploitasi Kerentanan DOM XSS?
Bagaimana kalau kita melompat lebih jauh untuk memahami sumber potensial atau fokus bagian, serangan dapat melakukan serangan DOM XSS, dan "sink" atau objek DOM di mana mereka dapat mengeksekusi kode berbahaya.
Sumber
Sumber adalah properti JavaScript yang berisi informasi yang mungkin dikontrol oleh penyerang:
document.URL
document.rujukan
lokasi
lokasi.href
location.search
location.hash
location.pathname
Tenggelam
Sink adalah fungsi DOM yang mengizinkan eksekusi kode JavaScript atau rendering HTML.
eval
setTimeout
setInterval
document.write
element.innerHTML
Aplikasi apa pun rentan terhadap skrip lintas situs berbasis DOM, dengan asumsi ada cara yang dapat dieksekusi untuk membuat informasi dari sumber hingga tenggelam.
Berbagai sumber dan sink memiliki sifat dan perilaku berbeda yang dapat mempengaruhi exploitabilitas dan menentukan strategi apa yang digunakan. Selanjutnya, konten aplikasi dapat melakukan persetujuan atau penanganan informasi lainnya yang harus diwajibkan ketika bermaksud memanfaatkan kerentanan.
Terima kasih sudah membaca
BLOG Lainya:
0 Komentar