Jumat, 12 November 2010

Simple SQL Injection In VB 6.0

Buat programmer-programmer yang lagi seneng-senengnya bikin program VB 6.0 kemungkinan besar udah ga asing dengan skrip SQL di bawah ini:

select * from user where id_user = ' " & txtIdUser & " ' and pass = ' " & txtPass & " '

Yupz, skrip SQL di atas biasa digunakan untuk mengecek password yang dimiliki setiap User supaya bisa Log In ke dalam program yang sedang dibuat,

Skrip barusan memang udah jadi logika sederhana yang paling ampuh buat disisipin di Command Log In,
Tapi baru-baru ini FuCha baru aja nemuin kalo ternyata skrip ini bisa jadi 'senjata makan tuan' buat programmer kalo ngga 'di amankan'.

nah biar lebih jelasnya coba kita perhatiin skrip berikut :
1' or '1' = '1

simple banget kan?
tapi skrip sederhana tadi kalo diinputin ke textbox username sama password di form Log In bisa langsung nembus program yang udah dibuat.

Kok bisa?
supaya lebih jelas kita liat cara kerja skrip tadi

sebelum disisipkan
select * from user where id_user = ' " & txtIdUser & " ' and pass = ' " & txtPass & " '

setelah disisipkan
select * from user where id_user = ' 1' or '1' = '1 ' and pass = ' 1' or '1' = '1 '

id_user = ' 1' ---> bernilai False
or
'1' = '1 ' ---> bernilai True

False or True akan mengahsilkan nilai True,
gitu juga dengan
pass = ' 1' or '1' = '1 '
akan menghasilkan nilai True

maka pernyataan tadi akan menjadi True and True dan menghasilkan pernyataan yang bernilai True,

Lumayan sederhana kan?
tapi jangan khawatir, buat 'mengamankan' skrip SQL tadi kita dapat mem-filter textbox pada saat User menginputkan Username dan Password.

cara pertama yang Fucha tau dengan inputin skrip berikut di txtUsername_change dan txtPassword_change

txtUsername = Replace (txtUsername," ' "," ; ")

Skrip di atas akan mengganti tanda petik satu yang diinputkan pada textbox menjadi titik koma sehingga injection yang diinputkan tidak berpengaruh pada skrip,

cara yang kedua, mungkin sedikit ekstrim,

if Right(txtusername,1) = " ' " then
txtusername = " "
exit sub
end if

Skrip ini akan langsung menghapus isi dari textbox apabila tertulis tanda petik satu.


Yah, untuk sekarang sekian dulu Informasi yang FuCha tau,
kalo temen-temen ada informasi lebih ditunggu komentarnya ya...