Diperbarui tanggal 29/06/2016

SQL Injection Melalui Form Login

kategori Keamanan Aplikasi Berbasis Web / tanggal diterbitkan 27 Juni 2016 / dikunjungi: 38.87rb kali

SQL Injection adalah jenis serangan yang mengizikan query SQL dimanipulasi oleh klien kemudian diteruskan ke server untuk dieksekusi. SQL injection pernah menjadi sangat populer untuk beberapa tahun terkahir. Bahkan beberapa situs besar tidak luput dari serangan jenis ini.

Terdapat beberapa metode yang dapat digunakan untuk melakukan serangan melalui SQL Injection, salah satunya melalui form login. Pada kasus ini seorang attacker memanfaatkan celah di form login untuk memasuki sistem dan akan menaikan level dari seorang admin menjadi seorang owner nantinya. Seraca umum seseorang berhasil login jika memasukkan username dan password sesuai dengan yang ada pada database. Namun pada kasus ini attacker yang hendak masuk sebagai admin tidak mengetahui apa-apa mengenai username dan password, sehingga harus mencari cara lain untuk bisa masuk melalui form login ini.

Perhatikan query SQL untuk form login berikut:

$user=mysql_query("select * from tbl_user where password='$pass' and username='$user'");

Query diatas merupakan sebuah query yang akan mencocokan inputan dari user dengan data password dan username, apakah password dan username ada atau tidak pada database. Lalu bagaimana seorang attacker akan membypass query tersebut melaui form login? Tentunya dengan memanipulasi inputan from login. Pada kasus ini attacker akan menginputkan username dengan nilai 'or '1'='1 dan password = 1 atau sembarang.

Dengan memasukkan user name dengan 'or '1'='1 dan password = 1 akan menghasilkan query sebagai berikut:

$user=mysql_query("select * from tbl_user where password='1' and username='' or '1'='1'");

dengan kondisi tersebut menjadikan query yang dijalankan akan selalu bernilai benar dan kemudian menampilkan halaman admin. Dalam hal ini attacker akan masuk tanpa username dan password yang benar.

Setelah attacker membypass form login yang dibuat programmer, resiko yang dihadapi oleh programer saat itu adalah tergantung dengan motif attacker. Seorang attacker bisa saja mengubah berita ataupun mencuri data-data suatu perusahaan yang penting. Resiko yang paling tinggi adalah jika attacker mengupload shell untuk dijadikan backdoor nantinya, dan ini adalah langkah awal untuk men-takeover sistem yang telah didapatkan.

Selain dengan memasukan nilai diatas untuk membypass form login berikut adalah nilai lainnya yang sering digunakan attacker untuk membypass form login:

or 1=1-- " or "1"="1 ") or ("a"="a
" or 1=1-- ' or 1=1-- tes " or "a"="a
or 0=0# ' or = 0=0# tes' or 'a'='a
" or 0=0# or 1=1-- tes") or ("a"="a
' or '0'='0 ') or ('a'='a tes') or ('a'='a