PT. Digital Media Techindo

Perum Pondok Tandala, Jl. Bungur V No. 230
Kawalu, Kota Tasikmalaya
Jawa Barat - Indonesia 46182




Menurut OWASP, Broken Authentication & Session Management adalah ketika “fungsi aplikasi yang terkait dengan otentikasi dan manajemen sesi tidak diterapkan dengan benar, yang mana memungkinkan penyerang untuk mengkompromikan password, key, maupun token sesi, atau memanfaatkan kelemahan penerapan lainnya untuk mengasumsikan identitas pengguna”.

Dengan kata lain, penyerang bisa mendapatkan akses pengguna yang tidak sah karena kekurangan dalam implementasinya. Sebelum memanfaatkan kerentanan ini, kamu perlu mengetahui beberapa konsep:

  1. Apa itu Sesi dan mengapa kita memerlukan Sesi
  2. Apa itu Cookie
  3. Apa itu Otentikasi

Seperti yang kamu tahu, aplikasi yang bekerja pada protokol HTTP merupakan protokol stateless, tidak dapat mempertahankan aktivitas pengguna. Dengan kata lain, server tidak dapat menyimpan memori identitas/aktivitas setiap klien (pengguna) yang terhubung ke situs web.

Misalnya, saat kamu masuk ke Facebook dan mengubah gambar profil, kamu perlu memasukkan kredensial/akun kamu untuk semua permintaan yang dikirim ke server karena server tidak tahu siapa kamu.

Jadi pertanyaannya adalah, bagaimana server melacak aktivitas pengguna? Pengguna tidak dapat memasukkan kredensialnya untuk permintaan tersebut. Dan ini dia, Sesi.

Apa itu Sesi?

Sesi adalah penyimpanan sisi server informasi pengguna untuk melanjutkan aktivitas dengan situs web. Biasanya, semua server menghasilkan sesi untuk koneksi tersebut dengan token sesi unik yang dikenal sebagai ID Sesi.

Perhatikan, nilai sesi harus disimpan sisi server dan bukan sisi client. Misalnya, kapan pun kamu masuk ke situs web, server akan menyimpan informasi kamu di sistem sebagai Cookie.

Cookie ini akan membantu keasliannya. Karena server menghasilkan ID sesi untuk pengguna, klien tidak perlu memberikan informasi ini pada setiap permintaan berikutnya. Klien (browser) biasanya menyimpan dan mengirim token tersebut sebagai cookie ke server.

Saat pengguna mengeklik tautan Logout, cookie yang berisi ID sesi akan dihapus dan server akan menghentikan aktivitas pengguna.

Apa itu Cookie?

Serupa dengan Sesi, cookie juga menyimpan data di komputer klien. Cookie dibuat saat kamu menggunakan browser untuk mengunjungi situs web yang menggunakan cookies untuk melacak pergerakan kamu di dalam situs, membantu kamu melanjutkan dari posisi yang kamu tinggalkan, mengingat login terdaftar, pilihan tema, preferensi, dan fungsi penyesuaian lainnya. Untuk mengetahui lebih lanjut tentang cookie, kunjungi di: http://www.allaboutcookies.org/cookies/.

Apa itu Otentikasi?

Otentikasi adalah proses keamanan yang memastikan dan mengkonfirmasi identitas pengguna, biasanya verifikasi Username/Password yang dilakukan oleh server. Dan biasanya proses otentikasi akan:

  • Pengguna memasukkan kredensial/akun Login-nya
  • Server memverifikasi kredensial pengguna dan membuat sesi yang kemudian disimpan dalam database
  • Cookie dengan ID sesi ditempatkan di browser pengguna
  • Pada setiap permintaan berikutnya, ID sesi diverifikasi terhadap value dari database ke permintaan proses, jika ID pada klien bervariasi dari ID di database maka permintaan tidak akan diproses
  • Begitu pengguna Logout dari aplikasi, sesi akan dibersihkan pada klien maupun server

Sekarang mari kita memanfaatkan celah ini secara praktis. Jalankan server bWAPP (test server) dan pilih ‘Broken Auth. – Insecure Login Forms‘. Bug ini bisa jadi konyol, tapi untuk menciptakan kesadaran, seseorang harus menyaring sumber halaman untuk menemukan informasi sensitif.

Jadi, ketika kamu melihat sumber halaman (klik kanan pada halaman dan pilih melihat sumber halaman), kamu harus melihat kredensial pengguna yang tersimpan dalam HTML.

Hal ini memungkinkan hacker untuk mendapatkan otentikasi dengan mudah, bagaimanapun ini tidak akan terjadi secara real time, kamu mungkin jarang melihat ini. Secara umum kita menyaring komentar HTML dan bidang tersembunyi, saya akan mengatakan itu adalah praktik yang baik.


Sekarang kita akan melihat tingkat kerentanan kode lain, pilih ‘Session Mgmt. – Administrative Portals‘ dan mengatur tingkat keamanan menjadi ‘low’.

Jika kamu melihat URL ‘/bWAPP/smgmt_admin_portal.php?admin=0’, ada sebuah string yang ditambahkan setelah ‘?’ dengan value ‘0’, yang berarti ID sesi dilewatkan dalam string kueri di mana orang bisa melihat dan memanipulasi vaue. Mari kita ubah nilainya dari ‘0’ ke ‘1’.

Jadi, seseorang bisa dengan mudah melakukan brute force URL dengan ID yang berbeda. Juga lihat bug ‘Session Mgmt. – Session ID in URL’.

Sekarang, atur tingkat keamanan ke ‘medium‘ di halaman Administrative Portals dan segarkan halaman (CTRL+R). Jika kamu melihat URL, tidak ada string kueri dengan ‘admin’. Jadi, apakah bug itu diperbaiki? Tidak, sebagai analis keamanan kamu harus selalu mencari berbagai cara untuk menemukan kekurangannya, dengan kata-kata sederhana hanya berpikir seperti pengembang bagaimana dia memperbaikinya.

Mengapa kamu tidak memeriksa cookies (tekan F12) dan cobalah untuk memodifikasinya. Jalankan OWASP ZAP/Burp Suite/Fiddler untuk menangkap permintaan dan buat permintaan baru dengan memodifikasi cookie ‘admin’. Disini saya menggunakan Fiddler. Tangkap permintaan dan putar ulang menggunakan Composer. Ubah nilai ‘0’ ke ‘1’.

Kerentanan yang paling umum lainnya adalah pengelolaan logout yang salah. Pilih bug ‘Broken Auth. – Logout Management‘ dan klik link ‘here‘ yang ditampilkan di halaman.

Setelah kamu mengklik ‘Ok’, kamu akan diarahkan ke halaman Login tapi sesi masih hidup. Cukup klik tombol kembali pada Browser, kamu akan diarahkan ke halaman /bWAPP/ba_logout.php. Oleh karena itu penyerang dapat dengan mudah melakukan serangan fiksasi sesi. Saya akan mengulas tentang ‘Fiksasi Sesi’ di pembahasan selanjutnya dengan sangat rinci.

Jadi, kita telah mengetahui bahwa Broken Authentication & Session Management melibatkan semua jenis kekurangan yang disebabkan oleh kesalahan dalam implementasi otentikasi dan/atau manajemen sesi.

Bagaimana menemukan kerentanan ini?

Review Secure Code dan pengujian penetrasi dapat digunakan untuk mendiagnosis masalah otentikasi dan manajemen sesi. Kita harus meninjau setiap aspek mekanisme otentikasi dengan hati-hati untuk memastikan kredensial pengguna terlindungi sepanjang waktu selama transit. Meskipun kita belum menyertakan fitur Lupa/Ubah Password, seseorang harus memeriksa ulang mekanisme implementasi tersebut.

Referensi: https://www.owasp.org/index.php/Top_10_2013-A2-Broken_Authentication_and_Session_Management


administrator

Just a simple person who like photography, videography, code, and cyber security enthusiast.