9 Jenis Serangan Injeksi Aplikasi Web Populer

Masalah dengan aplikasi web adalah bahwa mereka terpapar secara terbuka ke miliaran pengguna internet, banyak di antaranya ingin merusak langkah-langkah keamanannya – untuk alasan apa pun.

Pada hari-hari awal Internet, salah satu metode serangan yang paling umum adalah kekerasan dasar dan sederhana. Bot biasanya melakukan serangan ini – atau orang dengan banyak waktu istirahat – yang mencoba miliaran kombinasi nama pengguna dan kata sandi sampai mereka menemukan satu yang akan memberikan akses ke aplikasi target.

Serangan brute force tidak lagi menjadi ancaman, berkat kebijakan kata sandi, upaya login terbatas, dan captcha. Tetapi penjahat dunia maya senang menemukan eksploitasi baru dan menggunakannya untuk melakukan jenis serangan baru. Dahulu kala, mereka menemukan bahwa bidang teks pada aplikasi atau halaman web dapat dieksploitasi dengan memasukkan –atau menyuntikkan– teks tak terduga ke dalamnya yang akan memaksa aplikasi melakukan sesuatu yang tidak seharusnya dilakukan. Dengan cara itu, apa yang disebut serangan injeksi memasuki lokasi.

Serangan injeksi dapat digunakan tidak hanya untuk masuk ke aplikasi tanpa mengetahui nama pengguna dan kata sandi, tetapi juga untuk mengekspos informasi pribadi, rahasia, atau sensitif, atau bahkan untuk membajak seluruh server. Itulah mengapa serangan ini tidak hanya menjadi ancaman bagi aplikasi web, tetapi juga bagi pengguna yang datanya berada di aplikasi tersebut, dan dalam kasus terburuk, ke aplikasi dan layanan lain yang terhubung.

Injeksi kode

Injeksi kode adalah salah satu jenis serangan injeksi yang paling umum. Jika penyerang mengetahui bahasa pemrograman, kerangka kerja, database, atau sistem operasi yang digunakan oleh aplikasi web, mereka dapat menyuntikkan kode melalui kolom input teks untuk memaksa server web melakukan apa yang mereka inginkan.

Jenis serangan injeksi ini mungkin terjadi pada aplikasi yang tidak memiliki validasi data masukan. Jika bidang input teks memungkinkan pengguna memasukkan apa pun yang mereka inginkan, maka aplikasi tersebut berpotensi dapat dieksploitasi. Untuk mencegah serangan ini, aplikasi perlu membatasi sebanyak mungkin masukan yang boleh dimasukkan pengguna.

Misalnya, perlu membatasi jumlah data yang diharapkan, memeriksa format data sebelum menerimanya, dan membatasi kumpulan karakter yang diizinkan.

Kerentanan injeksi kode dapat dengan mudah ditemukan, hanya dengan menguji input teks aplikasi web dengan berbagai jenis konten. Saat ditemukan, kerentanan cukup sulit untuk dieksploitasi. Namun ketika penyerang berhasil mengeksploitasi salah satu kerentanan ini, dampaknya dapat mencakup hilangnya kerahasiaan, integritas, ketersediaan, atau fungsionalitas aplikasi.

  Tambahkan Tombol Mengambang ke Layar Anda Untuk Men-Tweet Dari Aplikasi Apa Pun

Injeksi SQL

Dengan cara yang mirip dengan injeksi kode, serangan ini menyisipkan skrip SQL – bahasa yang digunakan oleh sebagian besar database untuk melakukan operasi kueri – di kolom input teks. Skrip dikirim ke aplikasi, yang mengeksekusinya langsung di basis datanya. Akibatnya, penyerang dapat melewati layar login atau melakukan hal yang lebih berbahaya, seperti membaca data sensitif langsung dari database, memodifikasi atau menghancurkan data database, atau menjalankan operasi admin di database.

Aplikasi PHP dan ASP rentan terhadap serangan injeksi SQL karena antarmuka fungsionalnya yang lebih tua. Aplikasi J2EE dan ASP.Net biasanya lebih terlindungi dari serangan ini. Ketika kerentanan injeksi SQL ditemukan – dan mereka dapat dengan mudah ditemukan – besarnya potensi serangan hanya akan dibatasi oleh keterampilan dan imajinasi penyerang. Dengan demikian, dampak serangan injeksi SQL tidak diragukan lagi tinggi.

Injeksi perintah

Serangan ini juga mungkin terjadi, terutama karena validasi input yang tidak memadai. Mereka berbeda dari serangan injeksi kode karena penyerang menyisipkan perintah sistem alih-alih potongan kode atau skrip pemrograman. Oleh karena itu, hacker tidak perlu mengetahui bahasa pemrograman yang mendasari aplikasi atau bahasa yang digunakan oleh database. Namun mereka perlu mengetahui sistem operasi yang digunakan oleh server hosting tersebut.

Perintah sistem yang dimasukkan dijalankan oleh sistem operasi host dengan hak istimewa aplikasi, yang memungkinkan untuk mengekspos konten file sewenang-wenang yang berada di server, untuk menunjukkan struktur direktori server, untuk mengubah kata sandi pengguna, antara lain. .

Serangan ini dapat dicegah oleh sysadmin, dengan membatasi level akses sistem dari aplikasi web yang berjalan di server.

Pembuatan skrip lintas situs

Setiap kali aplikasi menyisipkan input dari pengguna ke dalam output yang dihasilkannya, tanpa memvalidasi atau menyandikannya, itu memberikan kesempatan kepada penyerang untuk mengirim kode berbahaya ke pengguna akhir yang berbeda. Serangan Cross-Site Scripting (XSS) mengambil kesempatan ini untuk menyuntikkan skrip berbahaya ke situs web tepercaya, yang pada akhirnya dikirim ke pengguna aplikasi lain, yang menjadi korban penyerang.

Peramban korban akan menjalankan skrip jahat tanpa mengetahui bahwa itu tidak boleh dipercaya. Oleh karena itu, browser akan mengizinkannya mengakses token sesi, cookie, atau informasi sensitif yang disimpan oleh browser. Jika diprogram dengan benar, skrip bahkan dapat menulis ulang konten file HTML.

Serangan XSS secara umum dapat dibagi menjadi dua kategori berbeda: disimpan dan dipantulkan.

Dalam serangan XSS yang disimpan, skrip berbahaya berada secara permanen di server target, di forum pesan, di database, di log pengunjung, dll. Korban mendapatkannya saat browsernya meminta informasi yang disimpan. Dalam serangan XSS yang direfleksikan, skrip berbahaya direfleksikan dalam respons yang mencakup input yang dikirim ke server. Ini bisa berupa pesan kesalahan atau hasil pencarian, misalnya.

  Cluster Dinamis WebSphere 8.5.x

Injeksi XPath

Jenis serangan ini dimungkinkan ketika aplikasi web menggunakan informasi yang disediakan oleh pengguna untuk membuat kueri XPath untuk data XML. Cara kerja serangan ini mirip dengan injeksi SQL: penyerang mengirim informasi yang salah ke aplikasi untuk mengetahui bagaimana struktur data XML, dan kemudian mereka menyerang lagi untuk mengakses data tersebut.

XPath adalah bahasa standar yang, seperti SQL, Anda dapat menentukan atribut yang ingin Anda temukan. Untuk melakukan kueri pada data XML, aplikasi web menggunakan masukan pengguna untuk menetapkan pola yang harus cocok dengan data. Dengan mengirimkan input yang salah, pola dapat berubah menjadi operasi yang ingin diterapkan penyerang ke data.

Berbeda dengan SQL, di XPath, tidak ada versi yang berbeda. Ini berarti injeksi XPath dapat dilakukan pada aplikasi web apa pun yang menggunakan data XML, apa pun implementasinya. Itu juga berarti serangan itu bisa otomatis; oleh karena itu, tidak seperti injeksi SQL, ia memiliki potensi untuk ditembakkan terhadap sejumlah tujuan yang berubah-ubah.

Injeksi perintah surat

Metode serangan ini dapat digunakan untuk mengeksploitasi server email dan aplikasi yang membuat pernyataan IMAP atau SMTP dengan input pengguna yang divalidasi secara tidak benar. Kadang-kadang, server IMAP dan SMTP tidak memiliki perlindungan yang kuat terhadap serangan, seperti yang terjadi pada sebagian besar server web, dan karena itu bisa lebih mudah dieksploitasi. Masuk melalui server email, penyerang dapat menghindari batasan seperti captcha, permintaan dalam jumlah terbatas, dll.

Untuk mengeksploitasi server SMTP, penyerang memerlukan akun email yang valid untuk mengirim pesan dengan perintah yang disuntikkan. Jika server rentan, itu akan menanggapi permintaan penyerang, memungkinkan mereka, misalnya, mengesampingkan batasan server dan menggunakan layanannya untuk mengirim spam.

Injeksi IMAP dapat dilakukan terutama pada aplikasi webmail, mengeksploitasi fungsi membaca pesan. Dalam kasus ini, serangan dapat dilakukan hanya dengan memasukkan, di bilah alamat browser web, URL dengan perintah yang disuntikkan.

injeksi CRLF

Penyisipan karakter carriage return dan line feed –kombinasi yang dikenal sebagai CRLF– di bidang input formulir web mewakili metode serangan yang disebut injeksi CRLF. Karakter tak terlihat ini menunjukkan akhir baris atau akhir perintah di banyak protokol internet tradisional, seperti HTTP, MIME, atau NNTP.

Misalnya, penyisipan CRLF ke dalam permintaan HTTP, diikuti oleh beberapa kode HTML tertentu, dapat mengirimkan halaman web khusus ke pengunjung situs web.

  Cara Mengubah Alamat pada Driver Doordash

Serangan ini dapat dilakukan pada aplikasi web yang rentan yang tidak menerapkan pemfilteran yang tepat pada masukan pengguna. Kerentanan ini membuka pintu untuk jenis serangan injeksi lainnya, seperti XSS dan injeksi kode, dan juga dapat berasal dari situs web yang dibajak.

Injeksi Host Header

Di server yang menghosting banyak situs web atau aplikasi web, header host diperlukan untuk menentukan situs web atau aplikasi web mana – masing-masing dikenal sebagai host virtual – yang harus memproses permintaan masuk. Nilai header memberi tahu server ke host virtual mana yang akan mengirim permintaan. Saat server menerima header host yang tidak valid, server biasanya meneruskannya ke host virtual pertama dalam daftar. Ini merupakan kerentanan yang dapat digunakan penyerang untuk mengirim header host arbitrer ke host virtual pertama di server.

Manipulasi header host umumnya terkait dengan aplikasi PHP, meski bisa juga dilakukan dengan teknologi pengembangan web lainnya. Serangan tajuk host berfungsi sebagai pemicu untuk jenis serangan lain, seperti peracunan cache web. Konsekuensinya dapat mencakup eksekusi operasi sensitif oleh penyerang, misalnya pengaturan ulang kata sandi.

Injeksi LDAP

LDAP adalah protokol yang dirancang untuk memfasilitasi pencarian sumber daya (perangkat, file, pengguna lain) dalam jaringan. Ini sangat berguna untuk intranet, dan ketika digunakan sebagai bagian dari sistem masuk tunggal, dapat digunakan untuk menyimpan nama pengguna dan kata sandi. Kueri LDAP melibatkan penggunaan karakter kontrol khusus yang memengaruhi kontrolnya. Penyerang berpotensi mengubah perilaku kueri LDAP yang diinginkan jika mereka dapat memasukkan karakter kontrol ke dalamnya.

Sekali lagi, akar masalah yang memungkinkan serangan injeksi LDAP adalah input pengguna yang divalidasi secara tidak benar. Jika teks yang dikirim pengguna ke aplikasi digunakan sebagai bagian dari kueri LDAP tanpa membersihkannya, kueri tersebut dapat mengambil daftar semua pengguna dan menampilkannya kepada penyerang, hanya dengan menggunakan tanda bintang

di tempat yang tepat di dalam string input.

Mencegah serangan injeksi

Seperti yang kita lihat di artikel ini, semua serangan injeksi diarahkan ke server dan aplikasi dengan akses terbuka ke semua pengguna internet. Tanggung jawab untuk mencegah serangan ini didistribusikan di antara pengembang aplikasi dan administrator server.

Pengembang aplikasi perlu mengetahui risiko yang terlibat dalam validasi input pengguna yang salah dan mempelajari praktik terbaik untuk membersihkan input pengguna dengan tujuan pencegahan risiko. Administrator server perlu mengaudit sistem mereka secara berkala untuk mendeteksi kerentanan dan memperbaikinya sesegera mungkin. Ada banyak opsi untuk melakukan audit ini, baik sesuai permintaan atau otomatis.