☣ Penjelasan SQL Injection Part 2

Apa dampak serangan injeksi SQL yang berhasil?

Serangan injeksi SQL yang berhasil dapat mengakibatkan akses tidak sah ke data sensitif, seperti:



1.Kata sandi.

2.Rincian kartu kredit.

3.Informasi pengguna pribadi.



Serangan injeksi SQL telah digunakan dalam banyak pelanggaran data besar selama bertahun-tahun. Serangan ini telah menyebabkan kerusakan reputasi dan denda regulasi. Dalam beberapa kasus, penyerang dapat memperoleh pintu belakang yang persisten ke dalam sistem organisasi, yang menyebabkan kompromi jangka panjang yang dapat luput dari perhatian dalam jangka waktu yang lama.

Cara mendeteksi kerentanan injeksi SQL

Anda dapat mendeteksi injeksi SQL secara manual

menggunakan serangkaian pengujian sistematis terhadap setiap titik masuk dalam aplikasi. Untuk melakukannya, Anda biasanya perlu mengirimkan:



Karakter tanda kutip tunggal 'dan mencari kesalahan atau anomali lainnya.



Beberapa sintaksis khusus SQL yang mengevaluasi ke nilai dasar (asli) dari titik masuk, dan ke nilai yang berbeda, dan mencari perbedaan sistematis dalam respons aplikasi.



Kondisi Boolean seperti OR 1=1dan OR 1=2, dan mencari perbedaan dalam respons aplikasi.



Muatan dirancang untuk memicu penundaan waktu saat dieksekusi dalam kueri SQL, dan mencari perbedaan waktu yang diperlukan untuk merespons.

Muatan OAST dirancang untuk memicu interaksi jaringan di luar pita saat dijalankan dalam kueri SQL, dan memantau setiap interaksi yang dihasilkan.



Alternatifnya, Anda dapat menemukan sebagian besar kerentanan injeksi SQL dengan cepat dan andal menggunakan Burp Scanner.





Injeksi SQL di berbagai bagian kueri

Sebagian besar kerentanan injeksi SQL terjadi dalam WHEREklausa kueri SELECT. Sebagian besar penguji berpengalaman sudah familier dengan jenis injeksi SQL ini.



Namun, kerentanan injeksi SQL dapat terjadi di lokasi mana pun dalam kueri, dan dalam berbagai jenis kueri. Beberapa lokasi umum lainnya di mana injeksi SQL terjadi adalah:

Mengambil data tersembunyi

Bayangkan sebuah aplikasi belanja yang menampilkan produk dalam berbagai kategori. Ketika pengguna mengklik kategori Hadiah , peramban mereka akan meminta URL:



Dalam UPDATEpernyataan, dalam nilai yang diperbarui atau WHEREklausa.

Dalam INSERTpernyataan, dalam nilai yang dimasukkan.

Dalam SELECTpernyataan, dalam nama tabel atau kolom.

Dalam SELECTpernyataan, dalam ORDER BYklausa.

Contoh injeksi SQL

Ada banyak kerentanan, serangan, dan teknik injeksi SQL yang terjadi dalam berbagai situasi. Beberapa contoh injeksi SQL yang umum meliputi:



Injeksi SQL buta , di mana hasil kueri yang Anda kendalikan tidak dikembalikan dalam respons aplikasi.



Mengambil data tersembunyi

Bayangkan sebuah aplikasi belanja yang menampilkan produk dalam berbagai kategori. Ketika pengguna mengklik kategori Hadiah , peramban mereka akan meminta URL:



https://insecure-website.com/products?category=Gifts



Hal ini menyebabkan aplikasi membuat kueri SQL untuk mengambil detail produk terkait dari basis data:.

SELECT * FROM products WHERE category = 'Gifts' AND released = 1

Kueri SQL ini meminta database untuk mengembalikan:

.semua detail ( *)

dari productsmeja

dimana categoryituGifts

dan releasedadalah 1.

Pembatasan released = 1ini digunakan untuk menyembunyikan produk yang belum dirilis. Kita bisa berasumsi untuk produk yang belum dirilis, released = 0.



Aplikasi ini tidak menerapkan pertahanan apa pun terhadap serangan injeksi SQL. Ini berarti penyerang dapat merancang serangan berikut, misalnya:



https://insecure-website.com/products?category=Gifts



Ini menghasilkan kueri SQL



SELECT * FROM products WHERE category = 'Gifts' OR 1=1--' AND released = 1

Kueri yang dimodifikasi mengembalikan semua item yang nilainya category, Giftsatau 1sama dengan 1. Seperti 1=1biasa, kueri mengembalikan semua item





Peringatan

Berhati-hatilah saat menyuntikkan kondisi OR 1=1ke dalam kueri SQL. Meskipun tampak tidak berbahaya dalam konteks tempat Anda menyuntikkan kondisi, aplikasi umumnya menggunakan data dari satu permintaan dalam beberapa kueri berbeda. Jika kondisi Anda mencapai pernyataan " UPDATEatau DELETE", misalnya, hal itu dapat mengakibatkan hilangnya data secara tidak sengaja

Buat lah teks tersebut menjadi rapih dan menggunakan kata kata yang santai




Halo! 👋 Mari kita ubah teks teknis ini menjadi lebih santai dan mudah dimengerti. Berikut adalah ringkasan yang lebih sederhana mengenai injeksi SQL, dampaknya, dan cara kerjanya.

Apa itu Injeksi SQL?
Bayangkan sebuah situs web yang punya kolom pencarian. Biasanya, apa pun yang kamu ketik di kolom itu akan diolah menjadi sebuah "pertanyaan" yang dikirim ke database situs tersebut. Nah, injeksi SQL adalah ketika seseorang memasukkan kode berbahaya di kolom pencarian itu, bukan cuma kata-kata biasa.

Tujuan mereka? Untuk membajak "pertanyaan" ke database itu agar tidak lagi sesuai dengan keinginan situs web, melainkan mengikuti keinginan si penyerang.

Dampak jika Serangan Berhasil 💥
Kalau serangan ini sukses, dampaknya bisa fatal, lho. Beberapa hal yang bisa terjadi:

Pencurian Data Sensitif: Ini yang paling sering terjadi. Penyerang bisa mengambil data-data rahasia seperti kata sandi, informasi kartu kredit, atau data pribadi pengguna lainnya. Ini seperti mereka masuk ke brankas rahasia perusahaan dan mengambil isinya.

Kerugian Reputasi & Denda: Akibatnya, perusahaan bisa kehilangan kepercayaan dari pengguna. Mereka juga bisa kena denda besar dari pemerintah karena gagal melindungi data.

Akses Jangka Panjang: Dalam kasus yang lebih parah, penyerang bisa menciptakan "pintu belakang" yang tersembunyi. Ini memungkinkan mereka untuk keluar-masuk sistem kapan saja, bahkan tanpa ketahuan dalam waktu yang lama.

Cara Mendeteksi Kerentanan 🕵️‍♂️
Untuk mengetahui apakah sebuah situs rentan terhadap injeksi SQL, ada beberapa trik yang bisa dilakukan, baik secara manual maupun otomatis:

Coba Karakter Aneh: Coba masukkan karakter seperti tanda kutip tunggal (') di kolom pencarian. Jika muncul pesan error atau ada keanehan, itu bisa jadi pertanda buruk.

Trik Logika Boolean: Kamu bisa coba masukkan kode seperti OR 1=1. Logikanya, 1 pasti sama dengan 1, jadi "pertanyaan" ke database akan selalu bernilai benar. Kalau situs web menampilkan semua data (bukan cuma yang relevan), itu berarti ada celah.

Coba dengan Penundaan Waktu: Ini trik yang lebih canggih. Penyerang bisa memasukkan kode yang akan membuat database "berpikir" sejenak sebelum merespons. Jika responsnya jadi lambat, itu bisa menunjukkan adanya celah.

Pakai Alat Khusus: Ada alat canggih seperti Burp Scanner yang bisa mendeteksi kerentanan ini dengan cepat dan otomatis.

Contoh Serangan: Mengambil Data Tersembunyi 🤫
Misalnya, ada toko online yang menjual produk. Saat kamu klik kategori "Hadiah", situs itu akan mengirim "pertanyaan" ke database seperti ini:

"Tampilkan semua produk dari kategori 'Hadiah' yang sudah dirilis."

Nah, penyerang bisa mengubah "pertanyaan" itu jadi begini:

"Tampilkan semua produk dari kategori 'Hadiah' ATAU yang logikanya benar (1=1)." 

Karena 1=1 selalu benar, "pertanyaan" yang sudah dimodifikasi ini akan mengabaikan batasan yang ada dan menampilkan semua produk, termasuk yang seharusnya belum dirilis. Ini adalah salah satu contoh sederhana bagaimana injeksi SQL bisa dipakai untuk mengambil data tersembunyi.

Penting untuk Hati-hati!
Serangan injeksi SQL ini tidak hanya terjadi di kolom pencarian. Kerentanan bisa ada di mana saja, bahkan di bagian "belakang layar" situs, seperti saat data diubah (UPDATE), ditambah (INSERT), atau dihapus (DELETE).

Jadi, bagi para pengembang web, sangat penting untuk selalu waspada dan memastikan setiap "pertanyaan" yang dikirim ke database itu aman. Karena sekali salah, dampaknya bisa sangat merugikan. 💀

Posting Komentar

Komentar yang sopan