Bagaimana SQL Injections Menembus Server

Contoh kasus sederhana. Dulu jaman pertama kalinya bugs VP-ASP (Software Management untuk pembayaran online), Anda mungkin mengetahui tentang penggunaan karakter single quote (‘) dengan penambahan OR (logical operator) dan tanda sama dengan (=) di antara single quote tersebut.

Login: ‘ OR ‘’=’

Password: ‘ OR ‘’=’

Sedikit menganalisa, misal ketika input box untuk login dan password di isi seperti dalam contoh di atas apa yang akan terjadi jika script yang memproses input tersebut seperti di bawah ini.

var sql = “select * from users where username = ‘” + username + “‘ and password = ‘” + password + “‘”;

Untuk beberapa site yang tidak menerapkan sistem validasi input yang secure akan mengakibatkan seorang user bisa masuk baik sebagai admin atau user biasa tanpa membutuhkan login dan password yang sebenarnya. Mengapa? Karena ketika input itu di proses di sistem yang terjadi operasi tersebut di anggap valid.

var sql = “select * from users where username = ‘’ OR ‘’=’’ and password = ‘’ OR ‘’=’’;

Nah tamatlah sudah riwayatmu kini hehe…hehe..Oke mungkin contoh di atas masih di anggap sangat sederhana, sekarang kalau misalnya saya melakukan action yang lebih ekstrim dari itu?

Username: ‘; drop table users–

Password:

Apa yang akan terjadi? Saya yakin Anda juga tahu bahwa command tersebut akan menghapus seluruh data di tabel users, coba kita analisa lagi.

var sql = “select * from users where username = ‘’; drop table users.

Nah apa yang akan Anda perbuat jika yang terjadi adalah seperti command di atas ini? Di sini karakter titik koma (;) menutup command pertama dan kemudian command drop menjadi command berikutnya yang akan di eksekusi oleh sistem dan selanjutnya karakter double minus (–) menutup command-command berikutnya untuk tidak di eksekusi. Yahh klo sudah begini tamatlah sudah data Anda. Paling banter Anda akan di pecat dari perusahaan dan di maki-maki bos Anda karena tidak becus bekerja.

SQL Injections tidak hanya bereaksi di dalam input box saja, dalam sebuah URL pun bisa di aplikasikan. Ini tergantung kemahiran Anda dalam melihat celah dari ketidak-secure-an site tersebut. Tentu di perlukan juga pengetahuan tentang command SQL dan beberapa eksperimen kecil untuk meriching kode di antara variabel-variabel yang ada di site tersebut.

Jadi di mana letak kesalahannya?

Dalam hal ini Microsoft sangat merespon tragedi SQL Injection, bahkan mereka sudah membuat patch-nya. Tapi sekali lagi ini tidak hanya masalah patching saja tapi juga di tuntut kehati-hatian Anda dalam merancang isi web itu sendiri. Solusinya yaa buatlah beberapa fungsi validasi input yang mampu mematikan command-command abnormal yang bisa mempengaruhi atau membuat server bereaksi.

Hanya seperti itu saja? He..hehe… pertanyaan yang sangat menohok tapi nggak papa lah.

Jika Anda mendapatkan bugs ini pada NT server maka beruntunglah Anda karena akses di luar database pun sanggup di lakukan. Seperti apa? Seperti command shell, registry, dan messaging product. Yaa sedikit tentang pengetahuan tentang sistem menjadi mutlak untuk perlu di ketahui agar Anda bisa mendapatkan akses granted administator tentu dengan dukungan kreatifitas dan mungkin jika perlu dukungan kemampuan programming yang Anda kuasai. Coba lihat beberapa command sistem yang bisa Anda manfaatkan untuk mendapatkan akses lebih banyak di server target (NT).

xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask

xp_regaddmultistring, xp_regdeletekey, xp_regdeletevalue, xp_regenumkeys, xp_regenumvalues, xp_regread

xp_regremovemultistring, xp_regwrite

xp_availablemedia, xp_dirtree, xp_enumdsn, xp_loginconfig

xp_makecab, xp_ntsec_enumdomains

xp_terminate_process

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s