-->

a-ads

Tutorial Sql Injection Dengan contohnya

Data adalah salah satu komponen terpenting dari sistem informasi. Aplikasi web bertenaga database digunakan oleh organisasi untuk mendapatkan data dari pelanggan. SQL adalah akronim untuk Structured Query Language. Ini digunakan untuk mengambil dan memanipulasi data dalam database.

Apa itu SQL Injection?

SQL Injection adalah serangan yang meracuni pernyataan SQL dinamis untuk memberi komentar pada bagian-bagian tertentu dari pernyataan atau menambahkan suatu kondisi yang akan selalu benar. Ini mengambil keuntungan dari kekurangan desain dalam aplikasi web yang dirancang dengan buruk untuk mengeksploitasi pernyataan SQL guna mengeksekusi kode SQL berbahaya


Dalam tutorial ini, Anda akan belajar teknik SQL Injection dan bagaimana Anda bisa melindungi aplikasi web dari serangan tersebut.

  •      Bagaimana SQL Injection Works
  •      Aktivitas Hacking: SQL Menyuntikkan Aplikasi Web
  •      Jenis serangan SQL Injection lainnya
  •      Alat Otomasi untuk Injeksi SQL
  •      Cara Mencegah Serangan SQL Injection
  •      Aktivitas Hacking: Gunakan Havji untuk SQL Injection
Bagaimana SQL Injection Works

Jenis serangan yang bisa dilakukan dengan menggunakan injeksi SQL bervariasi tergantung dari jenis mesin database. Serangan bekerja pada pernyataan SQL dinamis. Pernyataan dinamis adalah pernyataan yang dihasilkan pada waktu berjalan menggunakan parameter kata sandi dari formulir web atau string kueri URI.

Mari pertimbangkan aplikasi web sederhana dengan form login. Kode untuk bentuk HTML ditunjukkan di bawah ini.


<form action=‘index.php’ method="post">

<input type="email" name="email" required="required"/>

<input type="password" name="password"/>

<input type="checkbox" name="remember_me" value="Remember me"/>

<input type="submit" value="Submit"/>

</form>
 
SINI,
  • Bentuk di atas menerima alamat email, dan password kemudian mengirimkannya ke file PHP yang bernama index.php. 
  • Ini memiliki opsi untuk menyimpan sesi login di cookie. Kami telah menyimpulkan ini dari kotak centang remember_me. Ini menggunakan metode posting untuk mengirimkan data. Ini berarti nilai tidak ditampilkan di URL.

Anggaplah pernyataan di backend untuk memeriksa user ID adalah sebagai berikut

SELECT * FROM users WHERE email = $ _POST ['email'] DAN password = md5 ($ _ POST ['password']);

SINI,
  • Pernyataan di atas menggunakan nilai array $ _POST [] secara langsung tanpa menyucikannya.
  • Kata sandi dienkripsi menggunakan algoritma MD5.

Kami akan menggambarkan serangan injeksi SQL menggunakan sqlfiddle. Buka URL http://sqlfiddle.com/ di browser web Anda. Anda akan mendapatkan jendela berikut.

Catatan: Anda harus menulis pernyataan SQL 
Langkah 1) Masukkan kode ini di sebelah kiri
 
CREATE TABLE `users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `email` VARCHAR(45) NULL,
  `password` VARCHAR(45) NULL,
  PRIMARY KEY (`id`));
  
  
insert into users (email,password) values ('m@m.com',md5('abc'));

 
Langkah 2) Masukkan kode ini di panel kanan
select * from users;

Langkah 3) Klik Build Schema

Langkah 4) Klik Run SQL. Anda akan melihat hasil berikut

Misalkan user menyediakan admin@admin.sys dan 1234 sebagai password. Pernyataan yang akan dijalankan terhadap database akan terjadi

SELECT * FROM users WHERE email = 'admin@admin.sys' AND password = md5 ('1234');

Kode diatas bisa dimanfaatkan dengan mengomentari bagian password dan menambahkan suatu kondisi yang akan selalu benar. Misalkan penyerang memberikan masukan berikut di kolom alamat email.

Xxx@xxx.xxx 'ATAU 1 = 1 LIMIT 1 -']

Xxx untuk kata sandinya

Pernyataan dinamis yang dihasilkan adalah sebagai berikut.

SELECT * FROM users WHERE email = 'xxx@xxx.xxx' ATAU 1 = 1 LIMIT 1 - '] DAN password = md5 (' 1234 ');


SINI,

  • Xxx@xxx.xxx diakhiri dengan satu kutipan yang melengkapi kutipan string 
  • ATAU 1 = 1 LIMIT 1 adalah kondisi yang akan selalu benar dan membatasi hasil yang dikembalikan hanya pada satu record.
  • - 'DAN ... adalah komentar SQL yang menghilangkan bagian kata sandi.
Salin pernyataan SQL di atas dan paste di kotak SQL Fiddle Run SQL Text seperti gambar di bawah ini

Aktivitas Hacking: SQL Menyuntikkan Aplikasi Web

Kami memiliki aplikasi web sederhana di http://www.techpanda.org/ yang rentan terhadap serangan SQL Injection untuk tujuan demonstrasi saja. Kode bentuk HTML di atas diambil dari halaman login. Aplikasi ini menyediakan keamanan dasar seperti sanitasi kolom email. Ini berarti kode diatas kita tidak bisa digunakan untuk bypass login.

Untuk mengatasinya, kita malah bisa memanfaatkan field password. Diagram di bawah ini menunjukkan langkah-langkah yang harus Anda ikuti


Misalkan penyerang memberikan masukan berikut

  • Langkah 1: Masukkan xxx@xxx.xxx sebagai alamat email
  • Langkah 2: Masukkan xxx ') ATAU 1 = 1 -]
 

 
  • Klik tombol Submit
  • Anda akan diarahkan ke dasbor

Pernyataan SQL yang dihasilkan akan menjadi sebagai berikut

PILIH * DARI pengguna WHERE email = 'xxx@xxx.xxx' DAN kata sandi = md5 ('xxx') ATAU 1 = 1 -] ');

Diagram di bawah menggambarkan pernyataan yang telah dihasilkan.


SINI,
  • Pernyataan cerdas mengasumsikan enkripsi md5 digunakan
  • Menyelesaikan tanda kutip tunggal dan tanda kurung penutup
  • Menambahkan kondisi pada pernyataan yang akan selalu benar
Secara umum, serangan SQL Injection yang berhasil mencoba sejumlah teknik yang berbeda seperti yang ditunjukkan di atas untuk melakukan serangan yang berhasil.
 

Jenis serangan SQL Injection lainnya

Suntikan SQL bisa lebih berbahaya daripada hanya dengan melewatkan algoritma login. Beberapa serangan termasuk
  • Menghapus data
  • Memperbarui data
  • Memasukkan data
  • Melaksanakan perintah di server yang bisa mendownload dan menginstal program berbahaya seperti Trojans
  • Mengekspor data berharga seperti detail kartu kredit, email, dan kata sandi ke server jarak jauh penyerang
  • Mendapatkan info masuk pengguna dll

Daftar di atas tidak lengkap; Itu hanya memberi Anda gambaran tentang apa itu SQL Injection


Alat Otomasi untuk Injeksi SQL

Dalam contoh di atas, kami menggunakan teknik serangan manual berdasarkan pengetahuan luas kami tentang SQL. Ada alat otomatis yang dapat membantu Anda melakukan serangan lebih efisien dan dalam waktu sesingkat mungkin. Alat ini termasuk
 
  • SQLSmack - http://www.securiteam.com/tools/5GP081P75C.html
  • SQLPing 2 - http://www.sqlsecurity.com/downloads/sqlping2.zip?attredirects=0&d=1 
  • SQLMap - http://sqlmap.org/
Cara Mencegah Serangan SQL Injection
Organisasi dapat mengadopsi kebijakan berikut untuk melindungi diri dari serangan SQL Injection.

  • Masukan pengguna tidak boleh dipercaya - Harus selalu disterilkan sebelum digunakan dalam statemen SQL dinamis.
  • Prosedur tersimpan - ini dapat merangkum pernyataan SQL dan memperlakukan semua masukan sebagai parameter.
  • Pernyataan siap pakai - membuat laporan untuk bekerja dengan membuat pernyataan SQL terlebih dahulu kemudian memperlakukan semua data pengguna yang diajukan sebagai parameter. Ini tidak berpengaruh pada sintaks pernyataan SQL.
  • Ekspresi reguler - ini dapat digunakan untuk mendeteksi kode berbahaya yang potensial dan menghapusnya sebelum menjalankan pernyataan SQL.
  • Koneksi database hak akses pengguna - hanya hak akses yang diperlukan harus diberikan ke akun yang digunakan untuk terhubung ke database. Hal ini dapat membantu mengurangi apa yang dapat dilakukan oleh pernyataan SQL di server.
  • Pesan kesalahan - ini seharusnya tidak mengungkapkan informasi sensitif dan di mana tepatnya terjadi kesalahan. Pesan kesalahan kustom sederhana seperti "Maaf, kami mengalami kesalahan teknis. Tim teknis telah dihubungi. Silakan coba lagi nanti "bisa digunakan bukan menampilkan pernyataan SQL yang menyebabkan error.
Aktivitas Hacking: Gunakan Havij untuk SQL Injection

Dalam skenario praktis ini, kita akan menggunakan program HavJ Advanced SQL Injection untuk memindai situs web karena kerentanan.

Catatan: program anti-virus Anda mungkin menandainya karena sifatnya. Anda harus menambahkannya ke daftar pengecualian atau jeda perangkat lunak anti-virus Anda.

Gambar di bawah ini menunjukkan jendela utama untuk Havij


Alat di atas bisa digunakan untuk menilai kerentanan suatu situs / aplikasi web.
 

Ringkasan

  • SQL Injection adalah jenis serangan yang mengeksploitasi pernyataan SQL yang buruk
  • Injeksi SQL dapat digunakan untuk memotong algoritma login, retrieve, insert, dan update dan delete data.
  • Alat injeksi SQL meliputi SQLMap, SQLPing, dan SQLSmack, dll.
  • Sebuah kebijakan keamanan yang baik saat menulis pernyataan SQL dapat membantu mengurangi serangan injeksi SQL.

0 Response to "Tutorial Sql Injection Dengan contohnya"

Post a Comment