Menu Tutup

Tutorial SQL Injection untuk pemula

Injeksi SQL adalah kerentanan keamanan web yang memungkinkan penyerang mengubah kueri SQL yang dibuat ke basis data. Ini dapat digunakan untuk mengambil beberapa informasi sensitif, seperti struktur basis data, tabel, kolom, dan data yang mendasarinya.

Misalnya, anggap aplikasi menggunakan kueri berikut untuk mengambil detail login seseorang:

SELECT USERNAME,PASSWORD from USERS where USERNAME='<username>’ AND PASSWORD='<password>’;

Di sini, username dan password adalah input yang disediakan oleh pengguna. Misalkan penyerang memberikan input sebagai ‘OR’ 1 ‘=’ 1 di kedua bidang. Oleh karena itu, kueri SQL akan terlihat seperti:

SELECT USERNAME,PASSWORD from USERS where USERNAME=” OR ‘1’=’1′ AND PASSWORD=” OR ‘1’=’1′;

Kueri ini menghasilkan pernyataan yang benar, dan dengan demikian, pengguna akan masuk. Contoh ini menggambarkan jenis injeksi SQL yang paling dasar.

Injeksi SQL dapat digunakan di mana saja untuk mengambil informasi sensitif apa pun dari database.

Catatan: Ini adalah contoh paling dasar dan hanya dimaksudkan untuk tujuan pemahaman. Anda sebagian besar tidak akan menemukan kasus seperti itu di dunia nyata.

Anda bisa menggunakan lembar contekan ini untuk melihat cara membuat kueri atas penyedia database SQL yang berbeda.

Bagaimana cara mendeteksi SQL Injection?

Dalam kebanyakan kasus, injeksi SQL dapat dideteksi dengan mudah dengan memberikan parameter yang tidak valid, sepertiIn most cases, SQL injection can be detected easily by providing invalid parameters, like , dan lain-lain. Anda kemudian dapat mengamati perubahan dalam perilaku aplikasi.

BACA JUGA  Hacktronian - Tools hacking lengkap untuk Linux dan Android

Anda dapat mencoba menganalisis panjang respons dari server dan juga waktu yang diperlukan untuk mengirim respons. Muatan seperti , dan lain-lain dapat menunjukkan perubahan dalam respons oleh server database. Tetapi jika tidak ada perubahan, maka kami mencoba memicu penundaan waktu menggunakan payload seperti . Ini mungkin membuat server menunda untuk waktu tertentu sebelum mengirim respons.

Setelah menentukan apakah situs web rentan terhadap SQL Injection, kami dapat mencoba mengekstrak beberapa informasi sensitif dari database.

Sebelum itu, kita perlu mengidentifikasi jumlah kolom yang dikembalikan oleh SQL Query. Ini penting karena jika kami mencoba mengekstraksi jumlah kolom yang tidak sama dengan yang dikembalikan oleh kueri, maka ia akan menghasilkan kesalahan.

Kita dapat menentukan jumlah kolom dengan menggunakan perintah demi perintah. Sebagai contoh:

www.onlineshopping.com/products.php?pid=8 order by 1 — //
www.onlineshopping.com/products.php?pid=8 order by 2 — //// If the parameter is a string then you need to add ‘ after it.www.onlineshopping.com/products.php?usr=b’ order by 3 — //
www.onlineshopping.com/products.php?usr=a’ order by 4 — //

Arti penting dari adalah bahwa ini adalah indikator komentar dalam SQL, yang membuat sisa permintaan menjadi komentar. Sekarang untuk menjaga space setelah kami menambahkan karakter apa pun setelah itu sehingga ruang tidak diabaikan dalam . Kami mungkin juga menggunakan # atau / * * / untuk komentar tergantung pada penyedia database SQL.

BACA JUGA  Pengertian Bug Cross Site Scripting (XSS) Vulnerability

Lanjutkan proses ini sampai Anda menemukan kesalahan. Jika Anda menemukan kesalahan saat menggunakan pesanan payload tetapi tidak saat menggunakan , ini berarti bahwa kueri mengembalikan 4 kolom.

Cara Mengeksploitasi Menggunakan SQL Injection

Setelah Anda tahu bahwa aplikasi ini rentan terhadap injeksi SQL dan Anda telah mengidentifikasi jumlah kolom, kami mencoba mencari informasi yang diperlukan tentang database, seperti , nama kolom dari tabel yang diperlukan , dan lain-lain. Periksa lembar contekan injeksi SQL untuk menemukan kueri masing-masing.

Jenis injeksi SQL

  1. Error-based: ini bergantung pada pesan kesalahan yang dilemparkan oleh server database, yang mungkin memberi kami beberapa informasi yang berguna mengenai struktur database.
  2. Union-based: Teknik ini menggunakan operator SQL UNION untuk menggabungkan hasil dari dua kueri SELECT dan mengembalikan satu tabel. Ini memungkinkan penyerang untuk mengekstrak informasi dari tabel lain dengan menambahkan hasilnya ke permintaan asli yang dibuat ke database.
  3. Blind Injection: Ini terjadi ketika aplikasi rentan terhadap SQL Injection tetapi hasil dari query SQL tidak dikembalikan dalam respons HTTP. Dalam hal ini, kami meminta database untuk pernyataan benar / salah dan melihat perubahan untuk kondisi benar dan salah. Ada dua jenis:
  4. Content-based: Dalam teknik ini, server database ditanyai dengan pernyataan kondisional apa pun dan respons dari server dianalisis untuk setiap perbedaan saat mengirim kondisi yang true dan kondisi yang false.
  5. Time-based: Teknik ini bergantung pada suntikan kueri SQL yang membuat database menunggu waktu tertentu berdasarkan kondisi yang ditentukan. Waktu yang diambil oleh server untuk mengirim kembali respons menentukan apakah kueri itu benar / salah.
  6. Out-of-band injection (tidak umum): Ini bukan tipe yang sangat umum dari SQL Injection karena tergantung pada fitur yang diaktifkan pada server database. Itu bergantung pada kemampuan server database untuk membuat permintaan web seperti HTTP, DNS, danftp untuk mengirim data ke penyerang.
BACA JUGA  Cara hack instagram termux no root instagram cracker 2020

Bagaimana cara melindungi kode Anda dari SQL Injection?

  1. Jangan pernah membuat kueri secara langsung dengan input pengguna. Sebagai gantinya, gunakan Pernyataan Parameter. Mereka memastikan bahwa input yang diteruskan ke query SQL diperlakukan dengan aman.
  2. Itu selalu baik membersihkan input pengguna. Selain itu, validasi input yang benar harus dilakukan misalnya, nama tidak boleh digit atau nomor telepon tidak bisa huruf. Namun, ini bisa dilewati sesekali.
  3. Gunakan driver yang aman untuk berinteraksi dengan Database SQL Anda. Mereka secara otomatis mencegah terhadap semua serangan SQL Injection. Misalnya, SQLAlchemy untuk python.

Resources

  1. SQL Map adalah alat open-source yang memungkinkan proses mendeteksi dan mengeksploitasi kerentanan injeksi SQL.
  2. Repositori ini memiliki beberapa sumber daya keren tentang SQL Injection. Ini termasuk beberapa lembar contekan dan banyak muatan berguna yang dapat digunakan tergantung pada use case.

Tinggalkan Balasan