Cross-Site Scripting (XSS) Sederhana

Mar 08 2023
Dengan keterpaparan saya yang terbatas pada keamanan dunia maya dan beragam topik yang mencakup bidang ini, keingintahuan saya semakin bertambah selama bertahun-tahun. Saat saya memfilter melalui artikel dan berbagai sumber penelitian, saya ingin berbagi dan mendokumentasikan perjalanan saya dalam memahami serangan dunia maya lebih jauh.
Sumber: Sophia Ly

Dengan keterpaparan saya yang terbatas pada keamanan dunia maya dan beragam topik yang mencakup bidang ini, keingintahuan saya semakin bertambah selama bertahun-tahun. Saat saya memfilter melalui artikel dan berbagai sumber penelitian, saya ingin berbagi dan mendokumentasikan perjalanan saya dalam memahami serangan dunia maya lebih jauh. Hari ini, kita akan membahas sekilas tentang salah satu serangan dunia maya yang paling umum: pembuatan skrip lintas situs (XSS).

Apa itu Cross-Site Scripting (XSS)?

Skrip lintas situs , juga dikenal dengan akronimnya, XSS, adalah serangan di mana penyerang "menyuntikkan" skrip berbahaya yang dapat dieksekusi ke dalam kode aplikasi atau situs web tepercaya.

Menurut laporan statistik Edge Scan, aplikasi web adalah risiko tertinggi untuk jenis serangan ini.

Bagaimana serangan ini diperbolehkan?

Sesuatu yang selalu saya tanyakan pada diri sendiri adalah, "Nah, bagaimana sebenarnya serangan ini diizinkan?". Serangan ini dapat terjadi melalui manipulasi permintaan dan tanggapan HTTP atau DOM. Jika tidak ada protokol keamanan untuk memvalidasi atau memeriksa data yang diteruskan melalui permintaan/respons HTTP atau bahkan ke DOM, Anda berisiko terkena serangan XSS ini.

Bagaimana XSS Bekerja: Sebuah Visualisasi

Sumber: Sophia Ly (gambar dari iStock dan Canva)
  • Peretas sedang mencari kerentanan situs web, di mana mereka dapat mengorek kode Anda sendiri. Jika situs web Anda tidak mengambil tindakan pencegahan untuk melindungi dirinya sendiri, peretas dapat memanfaatkan ruang yang tidak terlindungi ini untuk menyuntikkan skrip jahat mereka.
  • Jika skrip berhasil ditempatkan, skrip penyerang dipicu.
  • Informasi pribadi dikirim ke peretas.
  • Penekanan tombol pengguna ditangkap.
  • Seorang pengguna dialihkan ke situs web jahat.
  • Informasi cookie diambil dari pengguna, yang masuk ke situs web (sehingga membahayakan akun korban).
  • Serangan XSS yang dipantulkan
  • Serangan XSS Tersimpan
  • Serangan berbasis DOM

Serangan yang direfleksikan melibatkan input dari permintaan HTTP yang segera direfleksikan sebagai respons. Contoh sederhana dapat ditunjukkan jika seseorang memasukkan serangan skrip ini ke dalam bidang pencarian formulir. Setelah pengguna "mengklik" kirim, browser mengenali input ini sebagai HTML, tidak melihat sesuatu yang berbahaya tentangnya, dan tetap menjalankan skrip berbahaya ini. Kode yang disuntikkan berjalan ke situs web yang diakses pengguna. Serangan itu kemudian muncul di browser pengguna (OWASP).

Di bawah ini adalah contohnya. Penyerang menyisipkan skrip berbahaya di bidang pencarian situs web, dan sebagai hasilnya, kotak dialog peringatan muncul bertuliskan "xss". Jelas ada lebih banyak niat jahat daripada penyerang yang menginginkan kotak peringatan muncul di halaman Anda, tetapi contoh ini menunjukkan betapa mudahnya mengeksekusi skrip yang disuntikkan ini.

Sumber: https://en.wikipedia.org/wiki/Cross-site_scripting

Catatan: Serangan yang direfleksikan TIDAK disimpan secara permanen dan TIDAK persisten. Mereka tidak hidup dalam aplikasi. Serangan yang dipantulkan biasanya terjadi ketika pengguna membuka tautan yang mencurigakan atau membuka halaman web tertentu.

Sumber: DM Facebook saya yang sebenarnya, di mana, seorang teman mengklik tautan yang mencurigakan (berdoa untuk akunnya)

Tanda-tanda tautan XSS:

  • Seorang penyerang secara emosional menarik perhatian pembaca, dengan menciptakan skenario terburuk yang membuat seseorang sangat penasaran untuk mengklik, yang dapat diilustrasikan pada gambar di atas.
  • Ada URL singkat yang meniru URL perusahaan tepercaya. Ini membuat pengguna yang tidak berpengalaman merasa itu asli, mengharapkan tautan untuk mengarahkan ulang ke halaman perusahaan itu.
  • Namun, tautan itu tidak mengarahkan ulang ke video TikTok dan sebagai gantinya informasi cookie pengguna dicuri, memberikan akses penyerang ke login pengguna.

Serangan tersimpan "menyimpan" menyuntikkan skrip di beberapa tempat, seperti database atau server, lalu menggunakan data ini nanti dalam respons HTTP. Skrip ini menyuntikkan langsung ke aplikasi web. Contohnya adalah ketika situs web memungkinkan Anda untuk menulis komentar. Setelah Anda mengirimkan komentar Anda, situs web menyimpan komentar Anda di server/database mereka. Dengan demikian, penyerang dapat menyimpan skrip mereka di dalam basis data situs web dengan berkomentar. Oleh karena itu, setiap pengguna lain yang menelusuri halaman ini yang menampilkan komentar ini tanpa sadar menjalankan skrip yang disimpan dan disimpan dalam database ini.

Sumber: https://en.wikipedia.org/wiki/Cross-site_scripting

Catatan: Serangan yang disimpan disimpan secara permanen dan terus-menerus . Mereka juga dikenal sebagai "XSS persisten" dan dikenal lebih merusak daripada serangan yang dipantulkan (Imperva.com). Mereka hidup dalam aplikasi dan dapat memiliki efek jangka panjang.

Serangan XSS Berbasis DOM

DOM adalah API web. Intinya, itu hanyalah cara penataan dan representasi bagaimana halaman web muncul. Bahasa skrip, seperti Javascript, menggunakan DOM untuk memanipulasi elemen DOM yang mengubah struktur, gaya, dan tampilan halaman web Anda. Ini sangat penting untuk mengedit halaman web.

Karena sifatnya yang mudah diakses, ia datang dengan implikasi yang memungkinkan bentuk lain dari XSS: serangan berbasis DOM. Penting untuk dicatat bahwa serangan XSS berbasis DOM berbeda dari serangan XSS yang dipantulkan dan disimpan, karena mereka "tidak menyentuh server web", sedangkan serangan XSS yang dipantulkan dan disimpan melakukannya.

Namun, serangan berbasis DOM dapat dilihat sebagai sub-kelas dari serangan yang dipantulkan karena serangan tersebut mencerminkan respons secara langsung, melainkan pada kode sisi klien. (Wikipedia).

Aliran Taint & XSS Berbasis DOM

Taint-flow adalah cara kita memvisualisasikan XSS berbasis DOM. Taint-flow adalah proses aliran data tercemar ke dalam tubuh kode Anda, melalui dua istilah kunci: sources dan sinks .

Sumber: Sophia Ly

Sumber memungkinkan data tercemar untuk masuk. Saya suka menggunakan analogi, jadi saya suka membayangkan sumber sebagai portal atau pintu masuk. Beberapa contoh terkenal meliputi: document.cookie, document.URL, localStorage, sessionStorage.
“
Pada akhirnya, setiap properti yang dapat dikendalikan oleh penyerang adalah sumber potensial” (Portswigger.net).

Sinks mengeksekusi data, yang diberikan oleh sumber. Beberapa contoh terkenal meliputi: document.write , document.body.innerHTML, setTimeOut. Wastafel umum untuk injeksi JavaScript adalah: eval . Data yang dimasukkan dari sumber digunakan sebagai masukan untuk bak cuci, dan bak cuci mengeksekusi sendiri .

Kesimpulan

Secara keseluruhan, XSS adalah proses menyuntikkan skrip dengan maksud jahat. Permintaan dan respons HTTP penting dalam memahami bagaimana serangan yang dipantulkan dan disimpan terjadi, sementara manipulasi DOM dan aliran noda adalah proses utama dalam memahami bagaimana XSS berbasis DOM terjadi.

Perbedaan utama antara setiap serangan adalah bahwa serangan XSS yang dipantulkan melibatkan input dari permintaan HTTP yang segera direfleksikan sebagai respons pada browser Anda, sedangkan serangan XSS yang disimpan "menyimpan" input ini dalam sesuatu seperti database eksternal, kemudian menggunakan data ini nanti di a Respons HTTP. Serangan berbasis DOM melibatkan skrip berbahaya yang disuntikkan ke dalam DOM dan merupakan sub-kelas dari serangan yang dipantulkan.

Serangan yang dipantulkan lebih umum, tetapi serangan yang disimpan lebih merusak.

Penting untuk mempertimbangkan mengamankan aplikasi Anda untuk menghindari jenis serangan ini yang dapat menghemat senam mental dan menenangkan pikiran Anda.

Sumber

https://portswigger.net/web-security/dom-based#:~:text=The%20Document%20Object%20Model%20(DOM,of%20how%20modern%20websites%20work

https://www.imperva.com/learn/application-security/cross-site-scripting-xss-attacks/#:~:text=Stored%20XSS%2C%20also%20known%20as,application%2C%20onto%20a%20user's%20browser.