Maros-Salah Satu Teman saya
(SANCA) pernah menjelaskan teknik para hacker menyerang web dengan cara
SQLi Tekhnik yang digunakan seorang Hacker dalam melakukan SQL Injection
ini salah satunya adalah:
1. mencari target
Kita bisa menggunakan dork pada search engine, kali ini penulis mencoba menggunakan http://google.com sebagai search enginenya.
Ketik : inurl:news.php?id= <<<<<<<< salah satu
contoh dork. Misal kita mendapatkan salah satu website yang beralamat
http://sitecontoh.com/news.php?id=19 2. Mencoba melakukan testing Di
website http://sitecontoh.com/news.php?id=19 kita coba menambahkan
karakter “ ‘ “ (tanda kutip) dibelakang angka “19” tersebut menjadi:
http://sitecontoh.com/news.php?id=19’ . Dikarenakan ada keluar error
yang biasanya seperti ini : “ Warning: mysql_fetch_object(): supplied
argument is not a valid MySQL result resource in ……..”
kita bisa asumsikan kalau website tersebut vulnerable.
Dikarenakan saya akan lebih focus bagaimana mencegah SQL Injection,
mungkin untuk penjelasan lebih lanjut tentang Tekhnik SQL Injection bisa
dicari di google yang sudah banyak website yang menjelaskan tentang
tekhnik ini lebih gamblang dan mungkin lebih lengkap dan jelas.
Ok, sebenarnya tekhnik diatas hanya salah satu dari berbagai tekhnik
yang digunakan seorang hacker untuk mencoba “membobol” website. Tekhnik
SQL Injection ini bisa dilakukan pada alamat website (URL) ataupun juga
bisa dilakukan pada form-form login. Dengan memasukan query-query sql
injection di dalamnya. Query tersebut banyak jenisnya, contoh:
' or 1=1 or ''='
' or 1=1--
' or 1=1#
' or 1=1/*
') or '1'='1--
') or ('1'='1--
" or 1=1--
or 1=1--
Dan masih banyak lagi yang lainnya yang bisa anda cari di google.
Nah setelah kita mengetahui tekhnik-tekhnik yang digunakan seorang
hacker dalam melakukan SQL Injection (walaupun singkat), minimal kita
bisa sedikit ada gambaran kenapa hal itu bisa terjadi. Mungkin menurut
pemahaman saya yang Newbie ini, saya bisa mengambil kesimpulan kalau hal
itu terjadi dikarenakan Peng-codean atau bisa dikatakan ada kesalahan
dalam penulisan pemrograman. Lalu yang akan menjadi pertanyaan, salah
dimananya ya?
Baik sekarang kita bahas, karena diatas ada pertanyaan dimana letak
kesalahan tersebut..?? kita perhatikan pengkodean dibawah ini :
$match = false;
if (isset($_POST['submit'])) {
$nama = $_POST['nama'];
$pass = $_POST['pass'];
$sql = "SELECT nama, password FROM user WHERE
nama='$nama' AND password='$pass'";
$res = mysqli_query($db, $sql);
// jika res berhasil,dan row yang
// dikembalikan=1, set $match=true
if ($res && mysqli_query_rows($res) == 1) {
$match = true ;
mysqli_free_result($res);
}
if ($match === true) {
echo 'account match';
} else {
echo 'invalid account';
}
}
kode program diatas memang kelihatan melakukan verifikasi data, tetapi
sebenarnya sangat rapuh,penyerang bisa menggnakan query-query seperti
dibawah ini,untuk melakukan akses secara tidak sah
// mengisi field nama saja,# adalah komentar,
// yang akan mengabaikan baris setelahnya
admin'#
// mengisi nama field saja
// mengekstrak data kelokasi tertentu
'OR' 1=1 INTO DUMPFILE '/path/ke_lokasi/file.txt '#
'OR' 1=1 INTO OUTFILE '/path/ke_lokasi/file.txt '#
atau seperti ini:
(tekhnik serangan multiple SQL Injection)
// $id dari method GET/POST
$sql = "SELECT * FROM buku WHERE kode='{$id}’ “;
//mengahapus isi table
0; DELETE FROM user
// membuat account baru
0; GRANT ALL ON *.* TO 'xxx@%'
Dalam kasus ini,macig quote akan mengabaikan tanda titik koma,ini sangat membahayakan
jika menggunakan SQLite atau postgreSQL. Adapun solusi nya adalah menggunakan operator
casting untuk memastikan bahwa id harus integer.
//Simulasi nilai $_POST['id']
0; DELETE FROM user
$id = (int) myMacig($_POST['id']);
apabila anda ingin memeriksa apakah input mengandung karakter tertentu,gunakan fungsi strpos().
$nama = myMacig ($_POST ['id']);
// periksa apakah karakter ; terdapat
// di variabel $nama.
if (strpos($nama, ';' die (gunakan karakter yang tidak merugikan kantong anda… hehehe');
oia, ketika form login juga biasa masih banyak loh yang bisa di
exploitasi. Seperti yang kita ketahui dan mungkin suatu hal yang jadi
standarisasi bahwasanya username dan password harus berupa angka dan
huruf. Kenapa..?? Karena karakter khusus. SQL Injection biasanya
memberikan variasi tanda mulai dari “=” (Sama dengan), “%” (Persen), “;”
(Titik Koma), “\’” (Petik satu), “”" (Petik Dua) dan lain sebagainya.
Berarti perlu adanya validasi anti karakter khusus. Salah satunya dengan
melakukan pengkodean seprti dibawah ini :
//Mengambil nilai - nilai dari form
$username = trim($_POST[”username”]);
$password = trim($_POST[”password”]);
//apakah bernilai huruf dan angka.
if (!ctype_alnum($username) OR !ctype_alnum($password))
{
echo “Jagalah Hati,,,,,”;
}
else
{
echo “Alhamdulillah”;
berikut dibawah ini beberapa contoh fungsi yang bisa mencegah SQL Injection:
1.mysql_escape_string
Contoh :
Fungsi mysql_escape_string merubah "The Injec'tion" menjadi "The Injec\'tion"
2. mysql_real_escape_string
Contoh :
Fungsi mysql_real_escape_string merubah "The Injec'tion's" menjadi "The Injec\'tion\'s"
Mungkin cukup sekian dulu tutorial sederhana dari saya.
Mohon maaf apabila terdapat kekeliruan di dalamnya, dan kurang sistematis nya tulisan saya diatas.
Saya cuma pengen mencoba untuk share tulisan aja.
Kritik dan saran sangat penulis harapkan. Terimakasih.....
kalo ada pertanyaan, tanyain aja ma yang pinter disini. hehehe bcanda
dink.... kalo da yang ditanyain silahkan posting aja..kali aja da yang
jawab. -0-
referensi:
http://www.sekuritionline.net/plugins/p2_news/printarticle.php?p2_articleid=113
http://ekaqren.blogsome.com/2008/02/08/anti-sql-injection-di-php/
http://ezine.echo.or.id/ezine7/ez-r07-Inue_99-anti_sql_injection.txt
http://www.stmik-im.ac.id/userfiles/TEHNIK%20SQL%20INJECTION.pdf
5 comments
Mantep deh,, praktektin dulu gan..
Replyhttp://yadi000.blogspot.com/
Such a nice blog ever.
Replywindows 7 ultimate 64 bit key generator
ReplyDo update me for these type of interesting blogs.
software free download full version | free download kmplayer
cara jebol anti sql gmn gan?
Replysusah bgt gan.. gue ga konek2
Replysalam kenal gan
Nonton Online Film Bioskop 21 Gratis Download - B201.INFO
Post a Comment