9 Jenis Serangan Injeksi Aplikasi Web Populer

Masalah dengan aplikasi web adalah bahwa mereka secara terbuka terekspos kepada miliaran pengguna internet, banyak di antaranya akan ingin melanggar langkah-langkah keamanannya – untuk alasan apa pun.


Pada hari-hari awal Internet, salah satu metode serangan yang paling umum adalah kekuatan kasar yang sederhana. Bot biasanya melakukan serangan-serangan ini – atau orang-orang dengan banyak waktu istirahat – yang mencoba zillions 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 para penjahat dunia maya senang menemukan eksploitasi baru dan menggunakannya untuk melakukan jenis serangan baru. Dahulu, 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 untuk melakukan sesuatu yang seharusnya tidak 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 sebabnya 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 bidang input teks untuk memaksa server web untuk melakukan apa yang mereka inginkan..

Jenis serangan injeksi ini dimungkinkan pada aplikasi yang tidak memiliki validasi data input. Jika bidang input teks memungkinkan pengguna memasukkan apa pun yang mereka inginkan, maka aplikasi berpotensi dieksploitasi. Untuk mencegah serangan ini, aplikasi harus membatasi sebanyak mungkin input yang diizinkan untuk dimasukkan oleh pengguna.

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

Kerentanan injeksi kode dapat mudah ditemukan, hanya dengan menguji input teks dari aplikasi web dengan berbagai jenis konten. Ketika ditemukan, kerentanannya cukup sulit untuk dieksploitasi. Tetapi ketika seorang penyerang berhasil mengeksploitasi salah satu dari kerentanan ini, dampaknya bisa termasuk hilangnya kerahasiaan, integritas, ketersediaan, atau fungsionalitas aplikasi.

Injeksi SQL

Dalam cara yang mirip dengan injeksi kode, serangan ini menyisipkan skrip SQL – bahasa yang digunakan oleh sebagian besar basis data untuk melakukan operasi kueri – dalam bidang input teks. Script dikirim ke aplikasi, yang mengeksekusi langsung pada databasenya. Akibatnya, penyerang dapat melewati layar masuk atau melakukan hal-hal yang lebih berbahaya, seperti membaca data sensitif langsung dari basis data, memodifikasi atau menghancurkan data basis data, atau menjalankan operasi admin pada basis data.

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

Perintah injeksi

Serangan-serangan ini juga mungkin, terutama karena validasi input yang tidak memadai. Mereka berbeda dari serangan injeksi kode karena penyerang memasukkan perintah sistem alih-alih potongan kode pemrograman atau skrip. Oleh karena itu, peretas tidak perlu mengetahui bahasa pemrograman tempat aplikasi tersebut digunakan atau bahasa yang digunakan oleh basis data. Tetapi mereka perlu mengetahui sistem operasi yang digunakan oleh server hosting.

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

Serangan-serangan ini dapat dicegah dengan sysadmin, dengan membatasi tingkat akses sistem aplikasi web yang berjalan di server.

Skrip lintas situs

Setiap kali suatu aplikasi memasukkan 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 mengeksekusi skrip berbahaya tanpa menyadarinya tidak boleh dipercaya. Karenanya, browser akan membiarkannya 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 direfleksikan.

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

Injeksi XPath

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

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

Tidak seperti apa yang terjadi 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 bahwa serangan itu dapat dilakukan secara otomatis; oleh karena itu, tidak seperti injeksi SQL, ini memiliki potensi untuk ditembakkan ke sejumlah tujuan yang sewenang-wenang.

Injeksi perintah surat

Metode serangan ini dapat digunakan untuk mengeksploitasi server email dan aplikasi yang membangun 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, karena akan terjadi pada sebagian besar server web, dan karenanya dapat lebih dieksploitasi. Masuk melalui server mail, penyerang dapat menghindari pembatasan seperti captcha, sejumlah permintaan terbatas, dll.

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

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

Injeksi CRLF

Penyisipan carriage return dan karakter umpan garis –kombinasi yang dikenal sebagai CRLF– dalam bidang input formulir web mewakili metode serangan yang disebut injeksi CRLF. Karakter yang tidak terlihat ini menunjukkan akhir dari suatu baris atau akhir dari suatu perintah dalam banyak protokol internet tradisional, seperti HTTP, MIME, atau NNTP.

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

Serangan ini dapat dilakukan pada aplikasi web yang rentan yang tidak menerapkan pemfilteran yang tepat ke input pengguna. Kerentanan ini membuka pintu bagi jenis serangan injeksi lain, seperti XSS dan injeksi kode, dan juga bisa berasal dari situs web yang dibajak.

Injeksi Host Header

Di server yang meng-host banyak situs web atau aplikasi web, header host menjadi perlu untuk menentukan situs web atau aplikasi web yang ada di rumah – masing-masing dikenal sebagai host virtual – yang harus memproses permintaan masuk. Nilai header memberitahu server yang mana dari host virtual untuk mengirim permintaan. Ketika server menerima header host yang tidak valid, biasanya ia meneruskannya ke host virtual pertama dalam daftar. Ini merupakan kerentanan yang dapat digunakan penyerang untuk mengirim header host sewenang-wenang ke host virtual pertama di server.

Manipulasi header host umumnya terkait dengan aplikasi PHP, meskipun juga dapat dilakukan dengan teknologi pengembangan web lainnya. Serangan tajuk host berfungsi sebagai pemungkin untuk jenis serangan lainnya, seperti keracunan cache web. Konsekuensinya dapat mencakup pelaksanaan 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, ini dapat digunakan untuk menyimpan nama pengguna dan kata sandi. Kueri LDAP melibatkan penggunaan karakter kontrol khusus yang memengaruhi kontrolnya. Penyerang berpotensi mengubah perilaku yang dimaksud dari permintaan LDAP jika mereka dapat memasukkan karakter kontrol di dalamnya.

Sekali lagi, masalah root yang memungkinkan serangan injeksi LDAP adalah input pengguna yang tidak divalidasi dengan benar. Jika teks yang dikirimkan pengguna ke aplikasi digunakan sebagai bagian dari kueri LDAP tanpa membersihkannya, kueri itu bisa berakhir dengan mengambil daftar semua pengguna dan menunjukkannya ke penyerang, hanya dengan menggunakan tanda bintang (*) di kanan letakkan 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 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 berdasarkan permintaan atau secara otomatis.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map