PENETRATION TESTING KEAMANAN WEB MENGGUNAKAN SQL INJECTION Barkah Akbar Harahap[1], Husni Lubis [2], T. M. Diansyah [3] Program Studi Teknik Informatika, Sekolah Tinggi Teknik Harapan Jl. HM Joni No 70 C Medan [1] [2] [3] E-mail : [email protected] , [email protected] , [email protected] Abstrak Pada masa sekarang ini banyak terciptanya berbagai teknologi baru yang mendukung kinerja manusia. Teknologi semakin berkembang pesat dengan berbagai fitur aplikasi website yang memudahkan pengguna untuk melakukan banyak pekerjaan, seperti halnya berbagi informasi, media penyimpanan, dan melakukan transaksi jual-beli yang dapat diakses atau dilakukan kapan saja dimana saja. Semakin berkembangnya teknologi menghasilkan kemudahan bagi banyak pengguna akan tetapi semakin banyaknya tercipta teknologi baru semakin tinggi pula tingkat kejahatan komputer yang terjadi. Keamanan dalam sebuah website menjadi penting, karena data terpusat dapat diambil dan disalahgunakan oleh pihak yang tidak bertanggung jawab. Salah satu cara untuk menguji keamanan website adalah dengan menggunakan teknik SQL Injection. SQL Injection adalah salah satu teknik hacking dimana penyerang memasukkan karakter-karakter khusus pada url sebuah website untuk mengeksploitasi celah keamanan yang muncul disekitar lapisan basis data pada aplikasinya. Celah keamanan tersebut ditunjukkan pada saat user memasukkan nilai string dan karakter-karakter kontrol lainnya yang ada dalam intruksi SQL yang tidak di-filter secara benar atau user memasukkan string dengan tipe data tidak sama yang seharusnya tidak diproses. Kata Kunci : Injeksi SQL, Keamanan Web, Pengujian Penetrasi Abstract At the present time the creation of many new technologies that support human performance. Technology is growing rapidly with the various features of a website application that allows users to do a lot of work, as well as information sharing, storage, and perform transactions that can be accessed or made anytime anywhere. The continued development of technology generates a lot of convenience to the user but the increasing number of new technologies to create the higher the level of computer crime that happened. Security in a website is important, because centralized data can be retrieved and abused by irresponsible parties. One way to test the security of a website is to use SQL Injection techniques. SQL injection is a hacking technique in which an attacker can enter SQL commands via the url of a website to be executed by the database. The security hole is shown when the user enter a value string and other control characters that exist in the SQL commands that are not filtered properly or the user enter a string value with data type is not the same as that should not be processed. Keyword : SQL Injection, Web Security, Penetration Testing 1. Latar Belakang Pada masa sekarang ini banyak terciptanya berbagai teknologi baru yang mendukung kinerja manusia. Teknologi semakin berkembang pesat dengan berbagai fitur aplikasi website yang memudahkan pengguna untuk melakukan banyak pekerjaan, seperti halnya berbagi informasi, media penyimpanan, dan melakukan transaksi jual-beli yang dapat diakses atau dilakukan kapan saja dimana saja. Semakin berkembangnya teknologi menghasilkan kemudahan bagi banyak pengguna akan tetapi semakin banyaknya tercipta teknologi baru semakin tinggi pula tingkat kejahatan komputer yang terjadi. Keamanan dalam sebuah website menjadi penting, karena data terpusat dapat diambil dan disalahgunakan oleh pihak yang tidak bertanggung jawab. Salah satu cara untuk menguji keamanan website adalah dengan menggunakan teknik SQL Injection. SQL Injection adalah salah satu teknik serangan yang dapat digunakan oleh penyerang untuk mengeksploitasi aplikasi web, sebagai akibatnya penyerang bisa mendapatkan akses tidak sah ke database atau untuk mengambil informasi langsung dari database. Adapun tujuan yang ingin dicapai dari penelitian ini adalah: 1. Mengetahui tentang teknik SQL Injection. 2. Mengetahui tingkat dan jenis-jenis keamanan internet. 3. Melakukan pengujian terhadap aplikasi website untuk mengetahui dan menganalisa tingkat keamanan dari website yang diancang dan website lain yang ada pada media internet. Biltek Vol. 5, No. 021 Tahun 2015 – Sekolah Tinggi Teknik Harapan 1 4. Melakukan penelitian mengenai SQL Injection untuk penerapan dan pencegahannya. Menarik kesimpulan atas ujicoba dan penetration testing keamanan web yang telah dilakukan dengan menggunakan teknik SQL Injection. 2. Sebelum melakukan SQL Injection dibutuhkan sebuah website sebagai uji coba untuk penulis. Maka penulis membuat sebuah website sederhana sebagai bahan percobaan, interfaceyang ditampilkan adalah sebuah link dari data artikel yang menampilkan isi artikel. Yaitu sebagai berikut: Metode Penelitian Analisis Rancangan Sistem Analisa terhadap suatu sistem sangat diperlukan untuk mengetahui kegiatan-kegiatan yang sedang berjalan dalam suatu sistem. Tujuan mengetahui kegiatan-kegiatan tersebut adalah untuk memahami dan mengerti jalannya sistem serta hambatanhambatan yang terdapat dalam sistem tersebut. Fungsi dari analisis sistem adalah untuk mengidentifikasi kebutuhan sistem, kebutuhan perangkat keras (hardware), maupun kebutuhan perangkat lunak (software) sebagai dasar kebutuhan untuk perancangan sistem. Analisis ini akan mengidentifikasi permasalahan dan kekurangan yang ada pada sistem yang akan dibangun. Data Artikel xxxx xxxx xxxx 2.1 Analisis Kebutuhan Aplikasi Dalam melakukan pengujian penetration testing keamanan web menggunakan SQL Injection, perlu mempertimbangkan dan menganalisa kebutuhan perangkat keras (Hardware) dan perangkat lunak (Software) yang akan digunakan agar pengujian tersebut berjalan seperti yang diharapkan. Proses pengujian penetration testing keamanan web menggunakan SQL Injection ini membutuhkan perangkat keras dan perangkat lunak sebagai media dan alat yang digunakan untuk melakukan pengujian. Gambar 1. Tampilan Halaman Website Uji Coba Pada halaman diatas merupakan tampilan link data artikel dari website sederhana yang diujikan, berikut ini adalah tampilan data artikel jika link tersebut diklik. Dapat dilihat pada Gambar 2. berikut: Isi Artikel xxxx xxxx xxxx 2.2 2.3 Perancangan Sistem Pada proses pengujian SQL Injection yang dilakukan adalah pengujian dilakukan pada aplikasi website sederhana yang sengaja penulis rancang sendiri sebagai kesimpulan sistem kerja website dan tingkat keamanannya dapat diketahui. Aplikasi web tidak terlepas dari penggunaan database sebagai sumber data untuk membuat tampilan web yang dinamis. Penggunaan aplikasi web seringkali tidak dibarengi dengan penggunaan unsur perlindungan terhadap akses kepada database. Lewat penggunaan teks sederhana, seseorang bisa masuk dan login kedalam sistem bahkan tanpa harus memasukan username dan password, tetapi hanya dengan memasukan query SQL kepada aplikasi. Pemaksaan query SQL secara ilegal ini disebut dengan istilah SQL Injection atau SQL Insertion. Karena sebenarnya user tidak memiliki hak untuk melakukan query terhadap database secara langsung, maka dilakukanlah proses pemaksaan agar aplikasi melakukan suatu query untuk tujuan tertentu, biasanya untuk menembus bagian administrasi suatu aplikasi web. 2.4 Perancangan Interface Uji Coba Gambar 2. Tampilan Halaman Artikel 2.5 Perancangan Database Pada uji coba SQL Injection yang akan dilakukan, penulis membuat sebuah database untuk dapat dilakukan pengujian. Adapun design database yang dibuat adalah sebagai berikut: a. Tabel User, pada tabel ini memiliki deskripsi dengan nama tabel “user” dan primary key “login”. Yang dapat di lihat pada Tabel 1. berikut ini: No Tabel 1. Desain Tabel User Field Type Width Keterangan Name 1 Login Varchar 20 2 Password Varchar 20 Username Password User b. Tabel Articles, pada tabel ini memiliki deskripsi dengan nama tabel “articles” dan primary key “id_artikel”. Dapat di lihat pada Tabel 2. berikut ini: No Tabel 2. Desain Tabel Articles Field Type Width Keterangan Name 1 Id Int 11 Id Artikel 2 Articles Varchar 200 Isi Artikel Biltek Vol. 5, No. 021 Tahun 2015 – Sekolah Tinggi Teknik Harapan 2 Kemudian dilakukan pengujian atau penetration testing keamanan kepada website lain yang dipilih secara acak melalui media internet. Dengan mengakses “http://www.google.com” pencarian target menggunakan kata kunci “penjualan kebaya” dengan tujuan mencari website online dengan penjualan kebaya. Maka didapatlah target pengujian dengan alamat url seperti berikut: “http://www.grosirkebaya.net/”. cukup baik. 2. Teknik SQL Injection tidak dapat dijadikan acuan untuk mendapatkan hasil yang diinginkan, tetapi perlu juga memahami pemrograman lain seperti Javacript, HTML dan lainnya. Hal ini dikarenakan teknik SQL Injection hanya dapat diproses pada sintak SQL pada halaman yang memiliki proses query SQL. 3. Dengan pengembangan bahasa pemrograman PHP begitu juga pemrograman yang lain, teknik SQL Injection telah diantisipasi dengan didukung library baru mengikuti versi bahasa pemrograman yang digunakan. Seperti otomatisasi pendeteksi karakter “/” atau karakter “=” dan lainnya. Sehingga teknik SQL Injection tidak dapat berjalan. Pada activity diagram dibawah ini menggambarkan proses yang berjalan pada web. Proses yang berlangsung terjadi setelah menguji keamanan web tersebut, yang dapat dilihat pada Gambar 5. berikut : Pelaku Gambar 3. Tampilan Website Online Yang Menjadi Target Pengujian Pengujian dilakukan sama halnya pada website sebelumnya dengan memasukan perintah SQL Injection pada url website sehingga menjadi seperti berikut ini: “http://www.grosirkebaya.net/?id=1 Diperoleh hasil respon dari website lain yang menjadi target uji coba tampak seperti Gambar 4. dibawah ini: Website Buka Website Menampilkan Halaman Insert Sql Injection Eksekusi Sql Database Respon Request Tidak Hasil Respon Lanjutkan Lanjutkan Sql Injection Gambar 5. Activity Diagram Berdasarkan gambar activity diagram di atas, dapat dijelaskan bagi pengguna menjalankan aplikasi dan juga respon sistem yang menghasilkan perintah kemudian diinputkan dengan url. Gambar 4. Tampilan Halaman Website Setelah Dilakukan SQL Injection Dalam pengujian yang ditargetkan pada sebuah aplikasi website lain memberikan hasil yang berbeda, SQL Injection yang diterapkan pada website rancangan penulis sama sekali tidak mendapatkan respon. dengan beberapa kesimpulan keamanan yang dapat dijelaskan sebagai berikut: 1. Aplikasi website tidak seluruhnya dapat dengan mudah untuk dilakukan SQL Injection, hal ini dikarenakan kemanan aplikasi website tersebut 3. Hasil & Pembahasan Tampilan Halaman Website Uji Coba Gambar 6. Tampilan Halaman Website Uji Coba Biltek Vol. 5, No. 021 Tahun 2015 – Sekolah Tinggi Teknik Harapan 3 Tampilan Halaman Isi Artikel Gambar 12. Respon SQL Injection Informasi Isi Akses Login Gambar 7. Tampilan Halaman Isi Artikel Tampilan Respon SQL Injection Tahap Pertama Respon SQL Injection Informasi Isi Seluruh Data ISI TABE L Gambar 8. Tampilan Respon SQL Injection Tahap Pertama Gambar 13. Respon SQL Injection Informasi Isi Seluruh Data Tampilan Respon SQL Injection Informasi Server 4. Gambar 9. Respon SQL Injection Informasi Server Tampilan Respon SQL Injection Informasi Isi Tabel Gambar 10. Respon SQL Injection Informasi Isi Tabel Respon SQL Injection Informasi Field Gambar 11. Respon SQL Injection Informasi Field Respon SQL Injection Informasi Isi Akses Login Kesimpulan dan Saran Kesimpulan Dari pembahasan yang telah penulis uraikan pada BAB sebelumnya, penulis mengambilkan kesimpulan antara lain sebagai berikut : 1. Meskipun tergolong teknik lama, tetapi penggunaan SQL Injection untuk mendapatkan hak akses administrator terhadap suatu aplikasi website masih populer. Hal ini dikarenakan tidak sedikit aplikasi website yang membiarkan karakter-karakter asing diinputkan kedalam query sehingga menghasilkan lubang atau celah keamanan. Salah satu cara pengamanan aplikasi website yang bisa dilakukan adalah dengan menambahkan kode, dengan begitu bisa dilakukan proteksi keamanan terhadap aplikasi website yang dirancang sehingga memperkecil resiko kerusakan pada aplikasi karena ulah penyusup yang menggunakan teknik SQL Injection. 2. Injeksi SQL dapat dengan mudah diatasi dalam kebanyakan bahasa pemrograman yang menargetkan aplikasi web atau menawarkan fungsi. Misalnya dalam DBI di Perl, metode DBI::quote meloloskan karakter khusus. Dan pada masa sekarang ini tidak sedikit juga aplikasi website yang sudah menerapkan tingkat keamanan website yang cukup tinggi sehingga teknik SQL Injection yang dilakukan tidak mendapatkan respon. Saran Penetration testing keamanan web menggunakan SQL Injection yang telah penulis lakukan masih jauh dari kesempurnaan. Hal ini disebabkan karena keterbatasan waktu dan pengetahuan penulis dalam melakukannya. Adapun saran dari penulis untuk penelitian dan pengembangan selanjutnya adalah: Biltek Vol. 5, No. 021 Tahun 2015 – Sekolah Tinggi Teknik Harapan 4 1. 2. Bagi pengguna website yang ingin mendaftarkan hosting, terlebih dahulu memeriksa ataupun menganalisa hosting yang akan disewa, sebab dari penyewaan hosting tersebut juga dapat terjadi pembobolan ataupun perusakan terhadap website. Dalam membangun sebuah website terlebih dahulu memastikan tidak terladapat lubang pada script yang menjadi celah untuk dirusak ataupun dibobol website tersebut.Perlu ditambahkan fitur offline mode (modus offline), sehingga dalam keadaan koneksi internet buruk ataupun putus, user masih dapat memberikan persetujuan. Persetujuan tersebut nantinya akan diproses ke ERP Server pada saat smartphone dalam keadaan online (terjangkau internet). Menggunakan Algoritma Rijndael. Jurnal EECCIS Vol. 7, No. 1 [3] Widhiarso, Yoni. 2013. Rancang Bangun Media Promosi dan Pemesanan Online Bagas Motor Berbasis Web. Jurnal Seminar Riset Unggulan Nasional Informatika dan Komputer FTI UNSA 2013 [4] Winasis, T. A. 2001. Trik Membangun Situs Web Gratis. Jakarta. PT Elex Media Komputindo [5] Anggreana, J. K. 2013. Simulasi Keamanan Pada Aplikasi Web Dengan Web Application Firewall. Jurnal Ilmiah Komputer dan Informatika (KOMPUTA) Daftar Pustaka [1] Ariyus, D. 2008. PENGANTAR ILMU KRIPTOGRAFI Teori Analisa dan Implementasi. Yogyakarta. ANDI [2] Dharmawan, E. A. dan Sarosa, M. 2013. Perlindungan Web Pada Login Sistem Biltek Vol. 5, No. 021 Tahun 2015 – Sekolah Tinggi Teknik Harapan 5