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
E-mail : abaiMU.7@gmail.com[1]
,
husni.lubis82@gmail.com[2],
dian_10.22@gmail.com[3]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 keamananinternet.
3.
Melakukan pengujian terhadap aplikasi websiteuntuk mengetahui dan menganalisa tingkat keamanan dari website yang diancang dan website lain yang ada pada media internet.
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. Metode Penelitian
2.1 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 hambatan-hambatan 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.
2.2 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. 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
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:
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:
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:
Tabel 1. Desain Tabel User
No Field
Name Type Width Keterangan
1 Login Varchar 20 Username
2 Password Varchar 20 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:
Tabel 2. Desain Tabel Articles
No Field
Name Type Width Keterangan
1 Id Int 11 Id Artikel
2 Articles Varchar 200 Isi Artikel
Data Artikel
xxxx
xxxx
xxxx
Isi Artikel
xxxx
xxxx
xxxx
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/”.
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:
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
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 :
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.
3. Hasil & Pembahasan
Tampilan Halaman Website Uji Coba
Gambar 6. Tampilan Halaman Website Uji Coba
Buka Website
Pelaku Website Database
Lanjutkan
Insert Sql Injection Eksekusi Sql Respon Request
Hasil Respon Lanjutkan Sql Injection Tidak Menampilkan Halaman
Tampilan Halaman Isi Artikel
Gambar 7. Tampilan Halaman Isi Artikel Tampilan Respon SQL Injection Tahap Pertama
Gambar 8. Tampilan Respon SQL Injection Tahap Pertama
Tampilan Respon SQL Injection Informasi Server
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
Gambar 12. Respon SQL Injection Informasi Isi Akses Login
Respon SQL Injection Informasi Isi Seluruh Data
Gambar 13. Respon SQL Injection Informasi Isi Seluruh Data
4. 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:
ISI TABE
1. 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.
2. 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).
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
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