Cara Mengatasi Session Hijacking - CRUDPRO

Cara Mengatasi Session Hijacking

Cara Mengatasi Session Hijacking
Cerita ini untuk pemula dan siapa saja yang memiliki pemahaman dasar tentang cookie (cookie sesi), tetapi tidak yakin bagaimana cara mengamankannya dengan benar. Anda tidak perlu menjadi ahli keamanan untuk melakukan itu. Anda hanya perlu memahami prosesnya dan kemudian Anda akan tahu.

Jika Anda tidak tahu tentang cookie atau cara kerjanya, silakan baca artikel tentang Cookie HTTP ini.

Ayo mulai! Anda memiliki aplikasi web luar biasa yang menawarkan layanan hebat bagi pelanggan. Itu berarti Anda akan memiliki mekanisme Otentikasi untuk mengarahkan pengguna ke aplikasi Anda. Anda tahu betapa pentingnya keamanan. Anda menerapkan segala macam tindakan keamanan selama otentikasi. Besar!

Setelah autentikasi berhasil, Anda harus membuat Sesi untuk pengguna tersebut. Ini berarti Anda benar-benar membuat cookie dan mengirimkannya kembali ke browser. Misalnya, di aplikasi web Java, secara default disebut JSESSIONID. Ini terlihat seperti ini:

Cara Mengatasi Session Hijacking

Dengan menggunakan cookie ini, hanya server web Anda yang dapat mengidentifikasi siapa penggunanya dan akan menyediakan konten yang sesuai. Dan kue ini terlihat bagus. Tidak ada informasi sensitif dalam cookie, hanya ID acak (tidak dapat ditebak). Jadi pengguna akan Aman! …Baik?

Yah tidak tepat, mari kita lihat lebih dekat.

Cara Mengatasi Session Hijacking

Ada dua properti dalam cookie ini: HttpOnly (HTTP) dan Secure. Nilainya kosong, artinya tidak diaktifkan untuk cookie ini. Di situlah sampai pada titik yang tidak lagi aman.

Di sinilah Session Hijacking berperan.

Session Hijacking, terkadang juga dikenal sebagai pembajakan cookie, adalah eksploitasi sesi komputer yang valid — terkadang juga disebut kunci sesi — untuk mendapatkan akses tidak sah ke informasi atau layanan di sistem komputer.

Jadi itu adalah tindakan mencuri ID sesi pelanggan, yang dengannya mereka dapat mengakses aplikasi web Anda seolah-olah mereka adalah pelanggan tersebut.

Apakah ini mungkin? Bagaimana mereka mendapatkan ID sesi yang ada di browser pengguna?

Iya itu mungkin. Dua properti cookie (atau bendera) yang kita lihat sebelumnya (HttpOnly dan Secure) adalah alasannya.

HttpOnly Flag

Cookie

HttpOnly
tidak dapat diakses oleh API Document.cookie JavaScript; mereka hanya dikirim ke server. Misalnya, cookie yang mempertahankan sesi sisi server tidak perlu tersedia untuk JavaScript, dan bendera HttpOnly harus disetel.

Jadi secara sederhana, jika Anda tidak menyetel flag httpOnly, maka cookie Anda dapat dibaca dari kode JavaScript ujung depan.

Buka halaman web mana pun yang kukinya tidak memiliki bendera httpOnly. Kemudian buka Chrome Dev Console lalu ketuk Tab Konsol (Cmd + Shift+ J atau Ctrl + Shift+ J). Ketik document.cookie dan Enter, dan Anda akan melihat sesuatu seperti ini:

Cara Mengatasi Session Hijacking

Seperti yang Anda lihat, Anda mendapatkan semua info cookie. Penyerang JavaScript dapat dengan mudah memposting ini ke server mereka sendiri untuk digunakan nanti.

Anda mungkin bertanya-tanya bagaimana mereka dapat menulis kode ini di Aplikasi Anda. Itu mungkin dalam beberapa cara.

Salah satu caranya adalah dengan menyuntikkan beberapa pustaka JS pihak ketiga yang tidak tepercaya seperti logging, utilitas pembantu, dll. Baca artikel ini Saya memanen nomor kartu kredit dan kata sandi dari situs Anda. Begini caranya.

Cara lain adalah dengan menggunakan Cross Site Scripting Attack. Kami tidak akan membahas detailnya, tapi ingat itu bisa dilakukan.

Jadi bagaimana kita memperbaikinya?

Cookie sesi bahkan tidak perlu dapat diakses oleh klien JavaScript. Itu hanya diperlukan untuk server. Kita harus membuatnya hanya dapat diakses oleh server. Ini dapat dilakukan dengan menambahkan satu kata (httpOnly) di header respons http set_cookie Anda. Seperti ini:

Set-Cookie: JSESSIONID=T8zK7hcII6iNgA; Expires=Wed, 21 May 2018 07:28:00 GMT; HttpOnly

Dengan menambahkan flag httpOnly, Anda menginstruksikan browser bahwa cookie ini tidak boleh dibaca oleh kode JavaScript. Browser akan mengurus sisanya. Ini adalah tampilannya setelah menambahkan bendera httpOnly:

Cara Mengatasi Session Hijacking

Perhatikan tanda centang di properti HTTP. Itu menunjukkan bahwa httpOnly diaktifkan.

Cara Mengatasi Session Hijacking

Di sini Anda dapat melihat bahwa document.cookie tidak mengembalikan cookie sesi kami. Artinya tidak ada JS yang dapat membacanya, termasuk skrip eksternal apa pun.

Secure Flag

Bendera aman menginstruksikan browser bahwa cookie hanya boleh dikembalikan ke aplikasi melalui koneksi terenkripsi, yaitu koneksi HTTPS.

Jadi, saat cookie dikirim ke browser dengan flag secure, dan saat Anda membuat permintaan ke aplikasi menggunakan HTTP, browser tidak akan menyertakan cookie ini dalam permintaan. Itu akan melampirkannya hanya dalam permintaan HTTPS. Permintaan HTTPS akan dienkripsi sehingga cookie akan dikirim dengan aman melalui jaringan ke aplikasi Anda.

Bagaimana cara seseorang membaca cookie dalam permintaan HTTP?

Ini dapat dicapai ketika seseorang (disebut serangan "Man in the Middle") memantau semua lalu lintas di jaringan pelanggan. Mereka dapat melihat data teks yang jelas jika permintaannya dalam HTTP.

Saat dikirim melalui HTTPS, semua data akan dienkripsi dari browser dan dikirim ke jaringan. Penyerang tidak akan bisa mendapatkan data mentah yang Anda kirim. Penyerang juga tidak akan dapat mendekripsi konten. Inilah sebabnya pengiriman Data melalui SSL aman.

Jadi bagaimana kita memperbaikinya?

Sama seperti flag httpOnly, Anda hanya perlu menambahkan flag secure di header respons HTTP set_cookie Anda. Seperti ini:

Set-Cookie: JSESSIONID=T8zK7hcII6iNgA; Expires=Wed, 21 May 2018 07:28:00 GMT; HttpOnly; Secure

Di Jawa, itu bisa dilakukan dengan beberapa cara. Jika Anda menggunakan Servlet 3.0 atau lebih baru, Anda dapat mengonfigurasi pengaturan ini di web.xml seperti ini:

<session-config>
    <cookie-config>
        <http-only>true</http-only>
        <secure>true</secure>
    </cookie-config>
 
</session-config>

Jika lingkungan Anda tidak mendukungnya, maka Anda dapat menambahkannya secara manual.

Terakhir, inilah tampilannya saat kedua flag disetel,

Cara Mengatasi Session Hijacking
Kesimpulan

Jadi saat Anda berurusan dengan cookie sesi atau cookie penting lainnya, pastikan Anda menambahkan dua flag ini.

Terima kasih telah membaca, Happy Securing!