Pengujian Celah keamanan WebSocket - CRUDPRO

Pengujian Celah keamanan WebSocket

Bagian ini menjelaskan cara memanipulasi pesan dan koneksi WebSocket, menjelaskan jenis kerentanan keamanan yang dapat terjadi dengan WebSocket, dan memberikan beberapa contoh pemanfaatan kerentanan WebSocket.

WebSocket banyak digunakan dalam aplikasi web modern. Mereka dimulai melalui HTTP dan menyediakan koneksi berumur panjang dengan komunikasi asinkron dua arah.

WebSocket digunakan untuk semua jenis tujuan, seperti melakukan tindakan pengguna atau mengirim informasi sensitif. Hampir semua kerentanan keamanan web yang terjadi dengan HTTP biasa dapat terjadi sehubungan dengan komunikasi WebSocket.

Baca selengkapnya : Apa itu WebSocket?

Lab:
Jika Anda sudah terbiasa dengan konsep dasar di balik kerentanan WebSocket dan ingin berlatih mengeksploitasinya dengan target yang realistis dan sengaja dibuat rentan, ikuti tautan di bawah ke semua lab tentang topik ini. Anda dapat mengaksesnya. Lihat semua lab WebSocket

Memanipulasi Traffic WebSocket

Menemukan kerentanan keamanan WebSocket biasanya memerlukan aplikasi untuk memanipulasi kerentanan keamanan WebSocket dengan cara yang tidak terduga. Ini dapat dilakukan dengan menggunakan Burp Suite. Dengan Burp Suite, Anda dapat:

  • Mencegat dan memodifikasi pesan WebSocket.

  • Mainkan dan buat pesan WebSocket baru.

  • Mengoperasikan koneksi WebSocket.

Intersepsi dan modifikasi pesan WebSocket

Anda dapat menggunakan BurpProxy untuk mencegat dan mengubah pesan WebSocket sebagai berikut:

  • Atur browser Anda untuk menggunakan Burp Suite sebagai server proxy.

  • Mengacu pada fungsi aplikasi yang menggunakan WebSocket. Anda dapat memverifikasi bahwa WebSocket sedang digunakan dengan menggunakan aplikasi Anda dan mencari entri yang muncul di tab Riwayat WebSocket dalam BurpProxy.

  • Pada tab Intercept Proxy Burp, pastikan intersepsi diaktifkan.

  • Saat pesan WebSocket dikirim dari browser atau server Anda, pesan tersebut muncul di tab Intercept sehingga Anda dapat melihat atau memodifikasinya. Tekan tombol maju untuk meneruskan pesan.

Catatan: Anda dapat mengonfigurasi apakah Burp Proxy mencegat pesan klien-ke-server atau server-ke-klien. Ini dilakukan dengan opsi pesan Intercept WebSocket pada tab Opsi.

Replaying and generating pesan WebSocket baru

Selain mencegat dan memodifikasi pesan WebSocket dengan cepat, Anda juga dapat memutar pesan individual untuk menghasilkan pesan baru. Anda dapat melakukan ini dengan menggunakan Burp Repeater.

  • Di Burp Proxy, pilih pesan di riwayat WebSocket atau tab Intercept, dan pilih Send to Repeater dari menu konteks.

  • Burp Repeater sekarang dapat mengedit pesan yang dipilih dan mengirimnya beberapa kali.

  • Anda dapat memasukkan pesan baru dan mengirimkannya ke arah klien atau server.

  • Anda dapat melihat riwayat pesan yang dikirim melalui koneksi WebSocket di panel Riwayat dalam Burp Repeater. Ini termasuk pesan yang dihasilkan oleh Burp Repeater dan pesan yang dihasilkan oleh browser atau server melalui koneksi yang sama.

  • Jika Anda ingin mengedit dan mengirim ulang pesan di panel riwayat, Anda dapat melakukannya dengan memilih pesan dan memilih Edit dan Kirim Ulang dari menu konteks.

Pengoperasian koneksi WebSocket

Selain bekerja dengan pesan WebSocket, Anda mungkin juga perlu bekerja dengan jabat tangan WebSocket untuk membuat koneksi.

Ada berbagai situasi di mana Anda mungkin perlu bekerja dengan jabat tangan WebSocket.

  • Ini dapat memungkinkan Anda untuk mencapai lebih banyak permukaan serangan.

  • Beberapa serangan dapat memutuskan koneksi, jadi Anda perlu membuat koneksi baru.

  • Token atau data lain dalam permintaan jabat tangan asli sudah kedaluwarsa dan mungkin perlu diperbarui.

Anda dapat menggunakan Burp Repeater untuk bekerja dengan jabat tangan WebSocket.

  • Kirim pesan WebSocket ke Burp Repeater seperti dijelaskan di atas.

  • Di Burp Repeater, klik ikon pensil di sebelah URL WebSocket. Ini akan membuka wizard yang memungkinkan Anda untuk menyambung ke WebSocket tersambung yang ada, mengkloning WebSocket yang tersambung, dan menyambung kembali ke WebSocket yang terputus.

  • Jika Anda memilih untuk mengkloning WebSocket yang terhubung atau menyambung kembali ke WebSocket yang terputus, wizard akan menampilkan detail lengkap permintaan jabat tangan WebSocket dan jika perlu sebelum melakukan jabat tangan. Dapat diedit.

  • Ketika Anda mengklik Connect, Burp akan melakukan jabat tangan yang dikonfigurasi dan mencoba menampilkan hasilnya.Jika koneksi WebSocket baru berhasil dibuat, Anda dapat menggunakannya untuk mengirim pesan baru dengan Burp Repeater.

Kerentanan keamanan WebSocket

Sebagai aturan umum, kerentanan keamanan virtual terkait WebSocket dapat terjadi.

  • Masukan yang diberikan pengguna yang dikirim ke server diproses dengan cara yang tidak aman, yang dapat menyebabkan kerentanan seperti injeksi SQL dan injeksi entitas eksternal XML.

  • Beberapa kerentanan buta yang dicapai melalui WebSockets hanya dapat dideteksi menggunakan teknologi out-of-band (OAST).

  • Jika data yang dikendalikan oleh penyerang dikirim ke pengguna aplikasi lain melalui WebSocket, itu dapat menyebabkan XSS atau kerentanan sisi klien lainnya.

Memanipulasi pesan WebSocket untuk mengeksploitasi kerentanan

Sebagian besar kerentanan berbasis input yang memengaruhi WebSocket dapat ditemukan dan dieksploitasi dengan merusak konten pesan WebSocket.

Misalnya, aplikasi obrolan Anda menggunakan WebSockets untuk mengirim pesan obrolan antara browser Anda dan server. Saat pengguna memasukkan pesan obrolan, pesan WebSocket yang mirip dengan berikut ini dikirim ke server:

{"message":"Hello Carlos"}
Isi pesan dikirim ke pengguna obrolan lain (sekali lagi melalui WebSocket) dan ditampilkan di browser pengguna sebagai berikut:
<td>Hello Carlos</td>
Dalam situasi ini, jika tidak ada pemrosesan input atau pertahanan yang berfungsi, penyerang dapat melakukan serangan XSS proof-of-concept dengan mengirimkan pesan WebSocket berikut:
{"message":"<img src=1 onerror='alert(1)'>"}

lab : Memanipulasi pesan WebSocket untuk mengeksploitasi kerentanan

Memanipulasi jabat tangan WebSocket untuk mengeksploitasi kerentanan

Beberapa kerentanan WebSocket hanya dapat dideteksi dan dieksploitasi dengan memanipulasi jabat tangan WebSocket. Kerentanan ini cenderung mencakup kelemahan desain seperti:

  • Kepercayaan palsu pada header HTTP untuk membuat keputusan keamanan seperti header X-Forwarded-For.

  • Cacat dalam mekanisme pemrosesan sesi, karena konteks sesi di mana pesan WebSocket diproses biasanya ditentukan oleh konteks sesi pesan jabat tangan.

  • Permukaan serangan diperkenalkan oleh header HTTP khusus yang digunakan oleh aplikasi.

lab :Memanipulasi jabat tangan WebSocket untuk mengeksploitasi kerentanan

Eksploitasi kerentanan menggunakan WebSockets lintas situs

Beberapa kerentanan keamanan WebSocket terjadi saat membuat koneksi WebSocket lintas domain dari situs web yang dikendalikan penyerang. Ini disebut serangan pembajakan WebSocket lintas situs dan melibatkan pemanfaatan kerentanan pemalsuan permintaan lintas situs (CSRF) di jabat tangan WebSocket. Serangan seringkali memiliki konsekuensi serius, berpotensi memungkinkan penyerang untuk melakukan tindakan istimewa atas nama pengguna korban atau menangkap data sensitif yang dapat diakses oleh pengguna korban.

Baca selengkapnya : Pembajakan WebSocket lintas situs

Cara Melindungi Koneksi WebSocket

Gunakan panduan berikut untuk meminimalkan risiko kerentanan keamanan yang terjadi dengan WebSockets.

  • Gunakan wss://protocol (WebSockets over TLS).

  • Hard-code URL titik akhir WebSocket sehingga Anda tidak menyertakan data yang dapat dikontrol pengguna di URL ini.

  • Lindungi pesan jabat tangan WebSocket dari CSRF untuk mencegah WebSocket lintas situs dari pembajakan kerentanan.

  • Memperlakukan data yang diterima melalui WebSocket sebagai tidak dapat diandalkan di kedua arah. Memproses data dengan aman di sisi server dan klien untuk mencegah kerentanan berbasis input seperti injeksi SQL dan skrip lintas situs.