SQL Injection

Sebelum kita membahas apa itu SQL injection, sebaiknya kita kenalan dulu dengan SQL.

Mari kita bicara lebih dulu tentang injeksi SQL biasa, kuno, tanpa embel-embel. Ini adalah metode peretasan yang memungkinkan penyerang tidak sah untuk mengakses server basis data. Ini difasilitasi oleh kesalahan pengkodean umum: program menerima data dari klien dan mengeksekusi kueri SQL tanpa terlebih dahulu memvalidasi masukan klien. Penyerang kemudian bebas untuk mengekstrak, memodifikasi, menambah, atau menghapus konten dari database. Dalam beberapa keadaan, ia bahkan dapat menembus server database dan masuk ke sistem operasi yang mendasarinya.1
Peretas biasanya menguji kerentanan injeksi SQL dengan mengirim masukan aplikasi yang akan menyebabkan server menghasilkan kueri SQL yang tidak valid. Jika server kemudian mengembalikan pesan kesalahan ke klien, penyerang akan mencoba untuk merekayasa balik bagian dari permintaan SQL asli menggunakan informasi yang diperoleh dari pesan kesalahan ini. Pengamanan administratif yang khas hanyalah untuk melarang tampilan pesan kesalahan server database. Sayangnya, itu tidak cukup.

Jika aplikasi Anda tidak mengembalikan pesan kesalahan, itu mungkin masih rentan terhadap serangan “blind” . SQL injection7.

Aplikasi web biasanya menggunakan query SQL dengan input yang disediakan oleh klien dalam klausa WHERE untuk mengambil data dari database. Dengan menambahkan kondisi tambahan ke pernyataan SQL dan mengevaluasi output aplikasi web, Anda dapat menentukan apakah aplikasi rentan terhadap injeksi SQL. Misalnya, banyak perusahaan mengizinkan akses Internet ke arsip siaran pers mereka. URL untuk mengakses siaran pers kelima perusahaan mungkin terlihat seperti ini:

http://www.thecompany.com/pressRelease.jsp?pressReleaseID=5

Pernyataan SQL yang akan digunakan aplikasi web untuk mengambil siaran pers mungkin terlihat seperti ini (masukan yang diberikan oleh klien digaris bawahi):

SELECT title, description, releaseDate, body FROM pressReleases WHERE pressReleaseID = 5

Server database merespons dengan mengembalikan data untuk rilis pers kelima. Aplikasi web kemudian akan memformat data press release ke dalam halaman HTML dan mengirim respon ke klien. Untuk menentukan apakah aplikasi rentan terhadap injeksi SQL, cobalah menyuntikkan kondisi ekstra yang benar ke klausa WHERE. Misalnya, jika Anda meminta URL ini. . .

http://www.thecompany.com/pressRelease.jsp?pressReleaseID=5 AND 1=1

dan jika server database menjalankan kueri berikut. . ..

SELECT title, description, releaseDate, body FROM pressReleases WHERE pressReleaseID = 5 AND 1=1

dan jika permintaan ini juga mengembalikan rilis pers yang sama, maka aplikasi tersebut rentan terhadap injeksi SQL. Bagian dari masukan pengguna ditafsirkan sebagai kode SQ. Aplikasi yang aman akan menolak permintaan ini karena akan memperlakukan input pengguna sebagai nilai, dan nilai “5 AND 1 = 1” akan menyebabkan kesalahan ketidakcocokan jenis. Server tidak akan menampilkan siaran pers.

Write your comment Here

Get Connected With Us
© 2018 Copyright: Patriot Id