OWASP atau Open Web Security Project adalah organisasi amal nirlaba yang berfokus pada peningkatan keamanan perangkat lunak dan aplikasi web.
Organisasi menerbitkan daftar kerentanan keamanan web teratas berdasarkan data dari berbagai organisasi keamanan.
Kerentanan keamanan web diprioritaskan tergantung pada eksploitasi, pendeteksian, dan dampak pada perangkat lunak.
- Eksploitasi -
Apa yang diperlukan untuk mengeksploitasi kerentanan keamanan? Eksploitasi tertinggi ketika serangan hanya membutuhkan browser web dan yang terendah adalah pemrograman dan alat tingkat lanjut.
- Deteksi -
Seberapa mudah mendeteksi ancaman? Yang tertinggi adalah informasi yang ditampilkan pada URL, Formulir atau pesan Kesalahan dan yang paling rendah adalah kode sumber.
- Dampak atau Kerusakan -
Berapa banyak kerusakan yang akan terjadi jika kerentanan keamanan terungkap atau diserang? Sistem crash tertinggi menjadi lengkap dan terendah tidak ada sama sekali.
Tujuan utama OWASP Top 10 adalah untuk mendidik para pengembang, desainer, manajer, arsitek dan organisasi tentang kerentanan keamanan yang paling penting.
10 kerentanan keamanan teratas menurut 10 teratas OWASP adalah:
- Injeksi SQL
- Cross Site Scripting
- Otentikasi Rusak dan Manajemen Sesi
- Referensi Objek Langsung Tidak Aman
- Pemalsuan Permintaan Lintas Situs
- Kesalahan Konfigurasi Keamanan
- Penyimpanan Kriptografi Tidak Aman
- Kegagalan untuk membatasi Akses URL
- Perlindungan Lapisan Transportasi Tidak Memadai
- Pengalihan dan Penerusan Tidak Tervalidasi
Injeksi SQL
Deskripsi
Injeksi adalah kerentanan keamanan yang memungkinkan penyerang mengubah pernyataan SQL backend dengan memanipulasi data yang disediakan pengguna.
Injeksi terjadi ketika input pengguna dikirim ke juru bahasa sebagai bagian dari perintah atau kueri dan mengelabui penerjemah agar menjalankan perintah yang tidak diinginkan dan memberikan akses ke data yang tidak sah.
Perintah SQL yang saat dijalankan oleh aplikasi web juga dapat mengekspos database back-end.
Implikasi
- Penyerang dapat memasukkan konten berbahaya ke bidang yang rentan.
- Data sensitif seperti Nama Pengguna, Kata Sandi, dll. Dapat dibaca dari database.
- Data database dapat dimodifikasi (Sisipkan / Perbarui / Hapus).
- Operasi Administrasi dapat dijalankan pada database
Objek Rentan
- Bidang Masukan
- URL yang berinteraksi dengan database.
Contoh:
- Injeksi SQL di Halaman Login
Masuk ke aplikasi tanpa memiliki kredensial yang valid.
UserName yang valid tersedia, dan kata sandi tidak tersedia.
Uji URL: http://demo.testfire.net/default.aspx
Nama Pengguna: sjones
Kata sandi: 1 = 1 'atau pass123
Kueri SQL dibuat dan dikirim ke Interpreter seperti di bawah ini
SELECT * FROM Users WHERE User_Name = sjones AND Password = 1 = 1 'or pass123;
Rekomendasi
- Daftar putih bidang masukan
- Hindari menampilkan pesan kesalahan mendetail yang berguna bagi penyerang.
Cross Site Scripting
Deskripsi
Cross Site Scripting juga dikenal sebagai XSS.
Skrip target kerentanan XSS tertanam di halaman yang dijalankan di sisi klien yaitu browser pengguna, bukan di sisi server. Cacat ini dapat terjadi saat aplikasi mengambil data yang tidak tepercaya dan mengirimkannya ke browser web tanpa validasi yang tepat.
Penyerang dapat menggunakan XSS untuk mengeksekusi skrip berbahaya pada pengguna dalam hal ini browser korban. Karena browser tidak dapat mengetahui apakah skrip dapat dipercaya atau tidak, skrip akan dijalankan, dan penyerang dapat membajak cookie sesi, merusak situs web, atau mengarahkan pengguna ke situs web yang tidak diinginkan dan berbahaya.
XSS adalah serangan yang memungkinkan penyerang mengeksekusi skrip di browser korban.
Implikasi:
- Dengan memanfaatkan kerentanan keamanan ini, penyerang dapat menyuntikkan skrip ke dalam aplikasi, dapat mencuri cookie sesi, merusak situs web, dan dapat menjalankan malware di mesin korban.
Objek Rentan
- Bidang Masukan
- URL
Contoh
1. http://www.vulnerablesite.com/home?" < script > alert (" xss") script >
Skrip di atas saat dijalankan di browser, kotak pesan akan ditampilkan jika situs rentan terhadap XSS.
Serangan yang lebih serius dapat dilakukan jika penyerang ingin menampilkan atau menyimpan cookie sesi.
2. http://demo.testfire.net/search.aspx?txtSearch width = 500 height 500>
Skrip di atas saat dijalankan, browser akan memuat frame tak terlihat yang mengarah ke http://google.com .
Serangan tersebut dapat menjadi serius dengan menjalankan skrip berbahaya di browser.
Rekomendasi
- Bidang masukan Daftar Putih
- Pengkodean keluaran masukan
Otentikasi Rusak dan Manajemen Sesi
Deskripsi
Situs web biasanya membuat cookie sesi dan ID sesi untuk setiap sesi yang valid, dan cookie ini berisi data sensitif seperti nama pengguna, kata sandi, dll. Ketika sesi diakhiri baik dengan logout atau browser ditutup secara tiba-tiba, cookie ini harus dibatalkan, yaitu untuk setiap sesi harus ada cookie baru.
Jika cookie tidak dibatalkan, data sensitif akan ada di sistem. Misalnya, pengguna yang menggunakan komputer publik (Warnet), cookie dari situs yang rentan berada di sistem dan diekspos ke penyerang. Seorang penyerang menggunakan komputer publik yang sama setelah beberapa waktu, data sensitif dikompromikan.
Dengan cara yang sama, pengguna yang menggunakan komputer publik, alih-alih keluar, dia menutup browser secara tiba-tiba. Seorang penyerang menggunakan sistem yang sama, ketika menelusuri situs rentan yang sama, sesi korban sebelumnya akan dibuka. Penyerang dapat melakukan apapun yang dia ingin lakukan dari mencuri informasi profil, informasi kartu kredit, dll.
Pemeriksaan harus dilakukan untuk menemukan kekuatan otentikasi dan manajemen sesi. Kunci, token sesi, cookie harus diterapkan dengan benar tanpa mengorbankan sandi.
Objek Rentan
- ID sesi yang terekspos di URL dapat menyebabkan serangan fiksasi sesi.
- ID sesi sama sebelum dan sesudah logout dan login.
- Timeout Sesi tidak diterapkan dengan benar.
- Aplikasi menetapkan ID sesi yang sama untuk setiap sesi baru.
- Bagian yang diautentikasi dari aplikasi dilindungi menggunakan SSL dan kata sandi disimpan dalam format berciri atau terenkripsi.
- Sesi ini dapat digunakan kembali oleh pengguna dengan hak rendah.
Implikasi
- Memanfaatkan kerentanan ini, penyerang dapat membajak sesi, mendapatkan akses tidak sah ke sistem yang memungkinkan pengungkapan dan modifikasi informasi yang tidak sah.
- Sesi dapat didongkrak tinggi menggunakan cookie curian atau sesi menggunakan XSS.
Contoh
- Aplikasi reservasi maskapai penerbangan mendukung penulisan ulang URL, dengan memasukkan ID sesi di URL:
http://Examples.com/sale/saleitems;jsessionid=2P0OC2oJM0DPXSNQPLME34SERTBG/dest=Maldives (Penjualan tiket ke Maladewa)
Pengguna situs yang diautentikasi ingin memberi tahu teman-temannya tentang penjualan dan mengirim email ke seluruh. Teman-teman menerima ID sesi dan dapat digunakan untuk melakukan modifikasi yang tidak sah atau menyalahgunakan detail kartu kredit yang disimpan.
- Aplikasi rentan terhadap XSS, yang dengannya penyerang dapat mengakses ID sesi dan dapat digunakan untuk membajak sesi.
- Batas waktu aplikasi tidak disetel dengan benar. Pengguna menggunakan komputer publik dan menutup browser alih-alih keluar dan pergi. Penyerang menggunakan browser yang sama beberapa waktu kemudian, dan sesi tersebut diautentikasi.
Rekomendasi
- Semua persyaratan otentikasi dan manajemen sesi harus didefinisikan sesuai dengan Standar Verifikasi Keamanan Aplikasi OWASP.
- Jangan pernah mengekspos kredensial apa pun di URL atau Log.
- Upaya yang kuat juga harus dilakukan untuk menghindari cacat XSS yang dapat digunakan untuk mencuri ID sesi.
Referensi Objek Langsung Tidak Aman
Deskripsi
Ini terjadi ketika pengembang mengekspos referensi ke objek implementasi internal, seperti file, direktori, atau kunci database seperti di URL atau sebagai parameter FORM. Penyerang dapat menggunakan informasi ini untuk mengakses objek lain dan dapat membuat serangan di masa mendatang untuk mengakses data yang tidak sah.
Implikasi
- Dengan menggunakan kerentanan ini, penyerang dapat memperoleh akses ke objek internal yang tidak sah, dapat mengubah data, atau membahayakan aplikasi.
Objek Rentan
- Di URL.
Contoh:
Mengubah "userid" di URL berikut dapat membuat penyerang melihat informasi pengguna lain.
http://www.vulnerablesite.com/userid=123 Diubah menjadi http://www.vulnerablesite.com/userid=124
Seorang penyerang dapat melihat informasi orang lain dengan mengubah nilai id pengguna.
Rekomendasi:
- Menerapkan pemeriksaan kontrol akses.
- Hindari mengekspos referensi objek di URL.
- Verifikasi otorisasi untuk semua objek referensi.
Pemalsuan Permintaan Lintas Situs
Deskripsi
Permintaan Lintas Situs Pemalsuan adalah permintaan palsu yang berasal dari situs silang.
Serangan CSRF adalah serangan yang terjadi saat situs web, email, atau program jahat menyebabkan browser pengguna melakukan tindakan yang tidak diinginkan di situs tepercaya yang saat ini diautentikasi pengguna.
Serangan CSRF memaksa browser korban yang masuk untuk mengirim permintaan HTTP palsu, termasuk cookie sesi korban dan informasi otentikasi lain yang secara otomatis disertakan, ke aplikasi web yang rentan.
Sebuah link akan dikirimkan oleh penyerang ke korban ketika pengguna mengklik URL tersebut saat login ke situs asli, data akan dicuri dari situs tersebut.
Implikasi
- Menggunakan kerentanan ini sebagai penyerang dapat mengubah informasi profil pengguna, mengubah status, membuat pengguna baru atas nama admin, dll.
Objek Rentan
- Halaman Profil Pengguna
- Formulir akun pengguna
- Halaman transaksi bisnis
Contoh
Korban masuk ke situs web bank menggunakan kredensial yang valid. Dia menerima surat dari penyerang yang mengatakan "Silakan klik di sini untuk menyumbangkan $ 1 untuk amal."
Ketika korban mengkliknya, permintaan yang valid akan dibuat untuk mendonasikan $ 1 ke akun tertentu.
http://www.vulnerablebank.com/transfer.do?account=cause&amount=1
Penyerang menangkap permintaan ini dan membuat permintaan di bawah ini dan menyematkan di tombol yang bertuliskan "I Support Cause."
http://www.vulnerablebank.com/transfer.do?account=Attacker&amount=1000
Karena sesi diautentikasi dan permintaan datang melalui situs web bank, server akan mentransfer $ 1000 dolar ke penyerang.
Rekomendasi
- Mandat kehadiran pengguna saat melakukan tindakan sensitif.
- Menerapkan mekanisme seperti CAPTCHA, Autentikasi Ulang, dan Token Permintaan Unik.
Kesalahan Konfigurasi Keamanan
Deskripsi
Konfigurasi Keamanan harus ditentukan dan digunakan untuk aplikasi, kerangka kerja, server aplikasi, server web, server basis data, dan platform. Jika ini dikonfigurasi dengan benar, penyerang dapat memiliki akses tidak sah ke data atau fungsi sensitif.
Terkadang kekurangan seperti itu mengakibatkan kompromi sistem yang lengkap. Menjaga perangkat lunak tetap mutakhir juga merupakan keamanan yang baik.
Implikasi
- Memanfaatkan kerentanan ini, penyerang dapat menghitung teknologi yang mendasari dan informasi versi server aplikasi, informasi database dan mendapatkan informasi tentang aplikasi untuk memasang beberapa serangan lagi.
Objek yang rentan
- URL
- Bidang Formulir
- Bidang masukan
Contoh
- Konsol admin server aplikasi dipasang secara otomatis dan tidak dihapus. Akun default tidak berubah. Penyerang dapat masuk dengan kata sandi default dan dapat memperoleh akses tidak sah.
- Daftar Direktori tidak dinonaktifkan di server Anda. Penyerang menemukan dan dapat dengan mudah mencantumkan direktori untuk menemukan file apa pun.
Rekomendasi
- Arsitektur aplikasi yang kuat yang memberikan pemisahan dan keamanan yang baik antar komponen.
- Ubah nama pengguna dan kata sandi default.
- Nonaktifkan daftar direktori dan terapkan pemeriksaan kontrol akses.
Penyimpanan Kriptografi Tidak Aman
Deskripsi
Penyimpanan Kriptografi yang tidak aman adalah kerentanan umum yang muncul saat data sensitif tidak disimpan dengan aman.
Kredensial pengguna, informasi profil, detail kesehatan, informasi kartu kredit, dll. Berada di bawah informasi data sensitif di situs web.
Data ini akan disimpan di database aplikasi. Ketika data ini disimpan secara tidak benar dengan tidak menggunakan enkripsi atau hashing *, itu akan rentan terhadap penyerang.
(* Hashing adalah transformasi karakter string menjadi string pendek dengan panjang tetap atau kunci. Untuk mendekripsi string, algoritme yang digunakan untuk membentuk kunci harus tersedia)
Implikasi
- Dengan menggunakan kerentanan ini, penyerang dapat mencuri, mengubah data yang dilindungi dengan lemah tersebut untuk melakukan pencurian identitas, penipuan kartu kredit, atau kejahatan lainnya.
Objek yang rentan
- Database aplikasi.
Contoh
Di salah satu aplikasi perbankan, database password menggunakan hash * unsalted untuk menyimpan password setiap orang. Cacat injeksi SQL memungkinkan penyerang untuk mengambil file kata sandi. Semua hash yang tidak di-salt dapat dipaksakan dalam waktu singkat, sedangkan password yang di-salt akan memakan waktu ribuan tahun.
(* Hash Tanpa Garam - Garam adalah data acak yang ditambahkan ke data asli. Garam ditambahkan ke kata sandi sebelum dicirikan)
Rekomendasi
- Pastikan algoritme standar kuat yang sesuai. Jangan membuat algoritme kriptografi sendiri. Gunakan hanya algoritme publik yang disetujui seperti AES, kriptografi kunci publik RSA, dan SHA-256, dll.
- Pastikan cadangan luar situs dienkripsi, tetapi kuncinya dikelola dan dicadangkan secara terpisah.
Kegagalan untuk membatasi Akses URL
Deskripsi
Aplikasi web memeriksa hak akses URL sebelum memberikan tautan dan tombol yang dilindungi. Aplikasi perlu melakukan pemeriksaan kontrol akses yang serupa setiap kali halaman ini diakses.
Di sebagian besar aplikasi, halaman dengan hak istimewa, lokasi, dan sumber daya tidak disajikan kepada pengguna yang memiliki hak istimewa.
Dengan tebakan cerdas, penyerang dapat mengakses halaman hak istimewa. Penyerang dapat mengakses halaman sensitif, menjalankan fungsi, dan melihat informasi rahasia.
Implikasi
- Memanfaatkan penyerang kerentanan ini dapat memperoleh akses ke URL yang tidak sah, tanpa masuk ke aplikasi dan mengeksploitasi kerentanan. Penyerang dapat mengakses halaman sensitif, menjalankan fungsi, dan melihat informasi rahasia.
Objek yang rentan:
- URL
Contoh
- Penyerang memperhatikan bahwa URL menunjukkan peran sebagai "/ user / getaccounts." Dia memodifikasi sebagai "/ admin / getaccounts".
- Penyerang dapat menambahkan peran ke URL.
http://www.vulnerablsite.com dapat dimodifikasi menjadi http://www.vulnerablesite.com/admin
Rekomendasi
- Terapkan pemeriksaan kontrol akses yang kuat.
- Kebijakan otentikasi dan otorisasi harus berbasis peran.
- Batasi akses ke URL yang tidak diinginkan.
Perlindungan Lapisan Transportasi Tidak Memadai
Deskripsi
Berurusan dengan pertukaran informasi antara pengguna (klien) dan server (aplikasi). Aplikasi sering mengirimkan informasi sensitif seperti detail otentikasi, informasi kartu kredit, dan token sesi melalui jaringan.
Dengan menggunakan algoritme yang lemah atau menggunakan sertifikat yang kedaluwarsa atau tidak valid atau tidak menggunakan SSL dapat memungkinkan komunikasi untuk diekspos ke pengguna yang tidak tepercaya, yang dapat membahayakan aplikasi web dan atau mencuri informasi sensitif.
Implikasi
- Memanfaatkan kerentanan keamanan web ini, penyerang dapat mengendus kredensial pengguna yang sah dan mendapatkan akses ke aplikasi.
- Dapat mencuri informasi kartu kredit.
Objek yang rentan
- Data dikirim melalui jaringan.
Rekomendasi
- Aktifkan HTTP aman dan terapkan transfer kredensial hanya melalui HTTPS.
- Pastikan sertifikat Anda valid dan tidak kedaluwarsa.
Contoh:
1. Aplikasi yang tidak menggunakan SSL, penyerang hanya akan memantau lalu lintas jaringan dan mengamati cookie sesi korban yang diautentikasi. Penyerang dapat mencuri cookie itu dan melakukan serangan Man-in-the-Middle.
Pengalihan dan Penerusan Tidak Tervalidasi
Deskripsi
Aplikasi web menggunakan beberapa metode untuk mengarahkan dan meneruskan pengguna ke halaman lain untuk tujuan yang dimaksudkan.
Jika tidak ada validasi yang tepat saat mengarahkan ke halaman lain, penyerang dapat menggunakan ini dan dapat mengarahkan korban ke situs phishing atau malware, atau menggunakan penerusan untuk mengakses halaman yang tidak sah.
Implikasi
- Penyerang dapat mengirim URL ke pengguna yang berisi URL asli yang ditambahkan dengan URL berbahaya yang dikodekan. Seorang pengguna dengan hanya melihat bagian asli dari URL yang dikirim penyerang dapat menjelajahinya dan mungkin menjadi korban.
Contoh
1. http://www.vulnerablesite.com/login.aspx?redirectURL=ownsite.com
Diubah menjadi
http://www.vulnerablesite.com/login.aspx?redirectURL=evilsite.com
Rekomendasi
- Cukup hindari menggunakan pengalihan dan penerusan dalam aplikasi. Jika digunakan, jangan melibatkan penggunaan parameter pengguna dalam menghitung tujuan.
- Jika parameter tujuan tidak dapat dihindari, pastikan nilai yang diberikan valid, dan diotorisasi untuk pengguna.
Artikel ini dikontribusikan oleh Prasanthi Eati