Where you are.?

Sleek, Modern & Responsive

MENGENAL SQL INJECTION DAN CARA MENCEGAHNYA [Part 1]


Hallo.! Selamat Sore.. 😎

Apa Kabar Para Pemburu Ilmu.. Semoga sehat selalu

Kesempatan kali ini saya akan membahas tantang "MENGENAL SQL INJECTION DAN CARA MENCEGAHNYA" yang pastinya akan ada beberapa part.

Tanpa banyak intro yups kita bahas :V


APA ITU SQL INJECTION.?


SQL Injection merupakan salah satu risiko aplikasi/situs web yang paling sering ditemukan.

Berdasarkan laporan keamanan aplikasi yang dikeluarkan oleh Veracode, 32% dari aplikasi web paling tidak memiliki satu kerentanan SQL Injection.

Berdasarkan Open Web Application Security Project (OWASP), injection juga merupakan ancaman nomor satu terhadap keamanan aplikasi web.

Sebagai tambahan, berdasarkan laporan kerentanan dari komunitas yang diperoleh Badan Siber dan Sandi Negara (BSSN) melalui Voluntary Vulnerability Disclosure Program (VVDP), dari bulan Januari s.d. April 2019, 73% dari laporan kerentanan yang diterima merupakan kerentanan SQL Injection.

Berdasarkan statistik di atas, meskipun termasuk ke dalam kerentanan yang mudah untuk dicegah,

Saat ini SQL Injection tetap menjadi risiko pada aplikasi web yang paling sering ditemukan

Dan banyak organisasi memiliki kerentanan terhadap potensi kebocoran data akibat serangan SQL Injection.



Gambar 1 - Data Rekapitilasi VVDP BSSN Januari s.d Mei 2019 [1]



Serangan SQL injection atau Injeksi SQL merupakan teknik serangan injeksi kode yang memanfaatkan celah keamanan yang terjadi pada layer basis data dari sebuah aplikasi.

Hal ini terjadi sebagai akibat dari data yang diinputkan oleh pengguna tidak dilakukan validasi dan dimuat di dalam baris perintah query SQL.

Dengan demikian menjadikan sebagian data yang diinputkan pengguna tersebut diperlakukan sebagai bagian dari kode SQL.



Gambar 2 - Penjelasan Singkat SQL INJECTION [2]




>> DAMPAK SERANGAN SQL INJECTION


Dampak dari teknik serangan SQL Injection cukup beragam, beberapa diantaranya yaitu sebagai berikut :

  • Melakukan Bypass terhadap Mekanisme Otentikasi

Teknik serangan ini memungkinkan penyerang untuk masuk ke dalam aplikasi dengan hak akses administratif, tanpa menggunakan username dan password yang valid.

  • Melakukan Modifikasi Data (Compromised Integritas Data)

Melalui teknik serangan ini penyerang juga dapat melakukan perubahan terhadap konten data yang tersimpan di dalam basis data,

atau memanfaatkan celah keamanan ini untuk memasukan konten yang berbahaya ke dalam halaman web.

Dalam kasus database yang diubah merupakan database perbankan, penyerang mungkin saja dapat melakukan pengubahan terhadap transaksi nasabah,

Atau memindahkan isi rekening nasabah ke rekening yang dikendalikan olehnya sehingga menimbulkan dampak finansial bagi korban

  • Melakukan Compromised terhadap Ketersediaan Data

Dengan melakukan penghapusan terhadap seluruh data yang tersimpan di dalam basis data,

Teknik serangan ini juga berpotensi terhadap aspek ketersediaan (availability) dari sistem tersebut.

  • Melakukan Pencurian Informasi

Serangan ini juga dapat dimanfaatkan oleh penyerangan untuk melakukan pencurian informasi sensitive yang tersimpan di dalam basis data.

  • Eksekusi Perintah Jarak Jauh (Remote Command Execution)

Melalui teknik serangan ini penyerang juga dapat melakukan perintah eksekusi melalui database yang memungkinkan penyerang untuk mengambil alih host atau target.

  • Melakukan Impersonasi Pengguna

Penyerang juga dapat memanfaatkan serangan ini untuk melakukan impersonasi dengan menanfaatkan akun pengguna yang aktif di dalam basis data.


>> JENIS SERANGAN SQL INJECTION


Secara umum, terdapat beberapa jenis serangan SQL Injection, yaitu:

Tautology Based Attack

  • Tujuan utama dari serangan jenis Tautology-based attack adalah untuk menginjeksi kode pada satu atau lebih baris perintah SQL dengan kondisi bersyarat sehingga baris perintah tersebut akan selalu dieksekusi dengan nilai "True".

  • Penyerang mengeksploitasi parameter yang dapat diinjeksi yang digunakan di dalam baris perintah query dengan sintaks kondisional bersyarat WHERE.

  • Tujuan Serangan:

Melakukan bypass terhadap mekanisme otentikasi, mengidentifikasi parameter yang dapat diinjeksi, melakukan ekstrasi data.


SELECT accounts FROM users 
                WHERE login='' or 1=1 --
                AND pass='' AND pin=


Query Ilegal / Query yang Secara Logik Salah (Illegal/Logically Incorrect Queries)

  • Serangan ini memungkinkan penyerang untuk memperoleh informasi mengenai tipe dan struktur dari back-end basis data dari sebuah aplikasi berbasis web.

  • Tujuan Serangan:

Mengidentifikasi parameter yang dapat diinjeksi, melakukan database finger-printing, dan melakukan ekstraksi data.


SELECT akun FROM nasabah
            WHERE login='' AND pass='' 
            AND pin= convert (int,(select top 1 name from sysobjects where xtype='u'))


Union Query

  • Serangan jenis ini, penyerang melakukan eksploitasi terhadap parameter yang rentan untuk mengubah data set yang dikembalikan dari perintah query yang dijalankan.

  • Tujuan Serangan:

Melakukan bypass otentikasi, melakukan ekstraksi data.


SELECT akun FROM nasabah WHERE login='' UNION
SELECT noKartu from KartuKredit where
noAkun=1077 -- AND pass='' AND pin=


Piggy-Backed Query

  • Pada serangan jenis ini, penyerangan berupaya untuk menginjeksi tambahan perintah query ke dalam perintah query yang asli.

Kerentanan terhadap serangan jenis ini umumnya bergantung pada konfigurasi basis data yang mengizinkan beberapa perintah query SQL di dalam satu string tunggal.

  • Tujuan Serangan:

Melakukan ekstraksi data, menambahkan atau memodifikasi data, melakukan serangan DoS (Denial of Services), mengeksekusi perintah jarak jauh (remote commands execution).


SELECT akun FROM nasabah WHERE login='doe' AND
pass=''; drop table nasabah -- ' AND pin=123


Stored-Procedures

  • Serangan jenis ini penyerang berusaha untuk mengeksekusi "stored procedures".

  • Tujuan Serangan:

Melakukan privilege escalation, melakukan serangan Denial of Service (DoS), melakukan eksekusi perintah jarak jauh (remote command execution).

Inference

  • Pada teknik serangan ini, penyerang melakukan modifikasi terhadap query untuk menyusun kembali ke dalam bentuk aksi yang dieksekusi berdasarkan jawaban atas pertanyaan benar/salah mengenai nilai data yang tersimpan di dalam database

  • Penyerang umumnya menggunakan teknik ini untuk menyerang situs yang memiliki tingkat keamanan yang sudah cukup baik sehingga pada saat injeksi berhasil dilakukan, tidak ada informasi berguna yang diperoleh penyerang dari pesan error melalui basis data.

  • Tujuan Serangan:

Mengidentifikasi parameter yang dapat diinjeksi, melakukan ekstraksi data serta menentukan skema basis data dari sistem target.


SELECT accounts FROM users 
                WHERE login='legalUser' and
                ASCII(SUBSTRING((select top 1 name from sysobjects),1,1))> X WAITFOR 5 -- ' AND pass='' AND pin=0

Alternate Encodings

  • Teknik serangan ini dilakukan dengan memodifikasi teks yang diinjeksi dengan tujuan untuk menghindari deteksi oleh mekanisme defensif dari teknik pemrograman dan juga beberapa mekanisme penegahan otomatis terhadap serangan SQL Injection.

  • Tujuan Serangan:

Menghindari/mengelabui deteksi perimeter keamanan.


SELECT accounts FROM users WHERE login='legalUser'; exec(char(0x73687574646f776e)) -- AND pass='' AND pin=''

Secara umum serangan SQL Injection dapat diklasifikasikan ke dalam 3 (tiga) kategori utama , yakni:

  • 1. In-band SQL Injection

Merupakan tipe serangan SQL Injection yang paling umum dan mudah untuk dieksploitasi. In-band SQL Injection terjadi ketika penyerang dapat menggunakan kanal komunikasi yang sama baik untuk melancarkan serangan maupun memperoleh hasil dari serangan. Terdapat dua tipe yang paling umum dari in-band SQL Injection, yaitu

a. Error-based SQL Injection. Teknik serangan ini sangat bergantung pada pesan kesalahan yang dihasilkan oleh server database untuk memperoleh informasi mengenai struktur dari database. Pada beberapa kasus, teknik ini sendiri cukup bagi penyerang untuk melakukan enumerasi terhadap keseluruhan database.

b. Union-Based SQL Injection. Teknik serangan ini memanfaatkan operator SQL UNION untuk mengkombinasikan hasil dari dua atau lebih perintah SELECT ke dalam satu hasil yang kemudian dikembalikan sebagai bagian dari HTTP response.

  • 2. Inferential SQL Injection (Blind SQL Injection)

Tidak seperti in-band SQL Injection, serangan tipe Inferential SQL Injection membutuhkan waktu yang lebih lama bagi penyerang untuk melakukan eksploitasi. Pada serangan tipe ini, tidak ada data yang ditransfer melalui aplikasi web dan penyerang tidak dapat mengetahui hasil dari serangan melalui kanal komunikasi yang digunakannya. Hal ini lah yang menyebabkan tipe SQL Injection ini juga dikenal sebagai "Blind SQL Injection". Dalam melancarkan serangan SQL Injection tipe ini, penyerang dapat merekonstruksi struktur database dengan cara mengirimkan payload, melakukan observasi terhadap respon dari aplikasi web, dan perilaku yang ditunjukkan oleh server database. Terdapat dua tipe inferential SQL Injection, yaitu

a. Blind-boolean-based SQL Injection. Teknik ini merupakan salah satu teknik yang bergantung pada pengiriman query SQL ke database yang memaksa aplikasi untuk mengirimkan nilai balikan yang berbeda bergantung pada apakah query balikan yang diberikan TRUE atau FALSE. Teknik serangan ini umumnya sangat lambat (khususnya pada database dengan skala yang besar) karena penyerang akan melakukan enumersi terhadap database, karakter per karakter.

b. Blind-time-based SQL Injection. Teknik in merupakan teknik inferensia yang bergantung pada pengiriman query SQL ke database yang memaksa database untuk menunggu dalam rentang waktu tertentu (dalam detik) sebelum melakukan response. Waktu response tersebut akan mengindikasikan kepada penyerang hasil query yang dilakukan TRUE atau FALSE. Bergantung pada nilai balikan yang dihasilkan, response HTTP akan dikembalikan dengan jeda atau dikembalikan dengan segera. Hal ini memungkinkan penyerang untuk menyimpulkan jika payload yang digunakan menghasilkan nilai balikan TRUE atau FALSE meskipun tidak ada data yang diperoleh dari nilai balikan dari database. Teknik serangan ini umumnya sangat lambat (khususnya pada database dengan skala yang besar) karena penyerang akan melakukan enumersi terhadap database, karakter per karakter.

  • 3. Out-of-band SQL Injection

Tipe SQL Injection ini termasuk jarang ditemukan karena bergantung pada fitur yang diaktifkan oleh server database yang digunakan oleh aplikasi web. Out-of-band SQL Injection terjadi saat seorang penyerang tidak dapat menggunakan kanal komunikasi yang sama untuk melancarkan serangan dan memperoleh hasil serangannya. Tipe serangan SQL Injection ini menjadi alternatif teknik inferential time-based bagi penyerang, terutama jika respon dari server tidak stabil. Tipe Out-of-band SQL Injection bergantung kepada kemampuan server database untuk membuat request DNS atau HTTP

Ok.. Cukup Sampai di sini dulu cuy.. :V kita lanjut ke [Part 2] BAGAIMANA CARA SERANGAN SQL INJECTION BEKERJA




Penulis


0xTrue



Facebook Share Facebook

Komentar


  • Yusuf

Di tunggu part selanjutnya Om👍👍👍👍


  • Ginazar

Bagus ini untuk tambah pengetahuan..🙏🙏




DomaiNesia

Visit: 2327 © 2020 All Rights Reserved. 0xTrue-Dev
Made with Indonesia.