Jurnal Aksara Komputer Terapan Politeknik Caltex Riau Vol. 2, No. 2, Tahun 2013
203
Jurnal Aksara Komputer Terapan Politeknik Caltex Riau Website : https://jurnal.pcr.ac.id/index.php/jakt/about Email :
[email protected]
Modul Pembelajaran Uji Keamanan Web Berbasis PHP Dan Python Django Dengan Menggunakan Metode Sql Injection Tika Hermawati 1, Rahmat Suhatman2, Ibnu Surya 3 1
Program Studi Teknik Informatika, Politeknik Caltex Riau, email:
[email protected] 2
Program Studi Teknik Informatika, Politeknik Caltex Riau, email:
[email protected]
3
Program Studi Teknik Informatika, Politeknik Caltex Riau, email:
[email protected]
Abstrak Pada era yang sudah maju sekarang banyak sekali segala jenis modul-modul pembelajaran yang dapat dimanfaatkan. Modul pembelajaran itu sendiri adalah suatu paket belajar mandiri atau alat atau sarana pembelajaran yang berisi materi, metode, batasan-batasan, dan cara mengevaluasi yang dirancang secara sistematis dan menarik untuk mencapai kompetensi yang diharapkan dan dapat digunakan secara mandiri. Modul pembelajaran ini dapat dimanfaatkan oleh semua orang yang ingin belajar tentang pengujian suatu websiteyang dibangun dengan menggunakan bahasa pemrograman PHP5untuk security on dan off serta Python Django.Untuk pengujian keamanannya dilakukan attacker yang memanfaatkan metode SQL Injection dengan Error Based SQL Injection, Union Based SQL Injection dan Blind SQL Injection. Kata kunci: Blind SQL Injection. Error Based, PHP ,SQL Injection,Union Based SQL Injection
Abstract In this era of advanced knowledge lots of all kinds of learning modules that can be utilized. Learning module itself is a self-study package or tool or means of learning containing materials, methods, limitations, and how to evaluate systematically designed and appealing to attain the expected competencies and can be used independently. This learning module can be used by everyone who wants to learn about testing a website is built using PHP5 programming language for security on and off as well as the Python Django. For safety testing done by attackers who exploit SQL Injection method with Error Based SQL Injection, Union Based SQL Injection and Blind SQL Injection. Keywords: Blind SQL Injection. Error Based, PHP ,SQL Injection,Union Based SQL Injection
Modul Pembelajaran Uji Keamanan Web Berbasis Php Dan Python Django Dengan Menggunakan Metode Sql Injection Tika Hermawati, Rahmat Suhatman, Ibnu Surya
Jurnal Aksara Komputer Terapan Politeknik Caltex Riau Vol. 2, No. 2, Tahun 2013 204 permasalahan proyek akhir ini yaitu 1. Pendahuluan bagaimana membuat modul pembelajaran dan bagaimana menguji keamanan web Website adalah kumpulan halaman yang dibuat menggunakan dua bahasa yang menampilkan informasi data teks, data pemrograman yaitu PHP versi 5 dan Phyton gambar diam atau gerak, dan masih banyak Django dari attacker yang menggunakan lainya baik yang bersifat statis maupun metode serangan Sql Injection yang dinamis yang membentuk satu rangkaian menggunakan jenis-jenis yang ada yaitu bangunan yang saling terkait. Sebuah jenis Error Based SQL Injection, Union website dapat dibuat dengan banyak jenis Based SQL Injection dan Blind Based SQL bahasa pemrograman, akan tetapi pada era Injection dengan memanfaatkan metodesekarang banyak yang membuat website metode didalamnya. dengan bahasa pemrograman PHP versi 5 dan Phyton Django. 1.2 Tujuan dan Manfaat Semua website yang dibuat belum tentu aman dari serangan para attacker, Tujuan dari proyek akhir ini adalah : terutama pada era sekarang para attacker 1. Membuat modul pembelajaran banyak menggunakan SQL Injection untuk yang dapat dimanfaatkan oleh mengeksploitasi website itu sendiri. semua orang. Pengertian dari SQL injection itu sendiri 1. Menguji tingkat keamanan dari adalah teknik mengeksploitasi sebuah website PHP 5 security On dan Off website memakai data yang disisipkan serta Phyton Django. dalam query SQL dengan cara memasukkan 2. Mengetahui bahasa pemrograman query SQL atau perintah (command) yang aman untuk digunakan. sebagai input yang dimungkinkan melalui Proyek akhir ini diharapkan dapat halaman website tersebut. Disini para bermanfaat untuk : attacker menggunakan SQL Injection 1. Memberikan pengetahuan terhadap karena aksi SQL Injection ini tidak semua orang melalui modul mengisyaratkan banyak hal, tidak perlu pembelajaran yang berisi informasi ping, menggunakan port tertentu dan tidak bagaimana cara mengamankan terpengaruh oleh firewall. website yang dibuat dari serangan attacker yang memanfaatkan SQL Atas permasalahan tersebut maka Injection. dibuat sebuah modul pembelajaran 2. Mengetahui bahasa pemrograman mengenai uji keamanan web berbasis PHP untuk membuat website agar aman versi 5 dan Phyton Django dengan metode dari serangan SQL Injection. Sql Injection. Modul pembelajaran disini 3. Mengetahui kekurangan dan sangat berguna bagi semua orang yang kelebihan atau celah yang banyak ingin mempelajari tentang keamanan dimanfaatkan oleh attacker dari webite. Modul pembelajaran disini bahasa pemrograman yang dibuat. menggunakan bahasa pemrograman PHP versi 5 dan Phyton Django. Didalam modul pembelajaran ini berisi informasi dan cara 2. Landasan Teori mengamankan website yang dibuat dari para attacker terutama attacker yang 2.1 Perbandingan Penelitian menggunakan beberapa jenis dari Sql Injection, yaitu Error Based SQL Injection, Pada sebelumnya telah dilakukan Union Based SQL Injection dan Blind SQL penelitian oleh Meita Setiasih, Deborah Injection. Estefanus, dan Michael Andinata pada tahun 2012 mengenai “Perancangan Keamanan Halaman Web Berbasis 1.1 Perumusan Masalah Platform PHP Terhadap Serangan Sql Injection”, Binus university, jakarta, DKI Berdasarkan latar belakang yang jakarta, indonesia membahas tentang diuraikan diatas dapat dirumuskan Modul Pembelajaran Uji Keamanan Web Berbasis Php Dan Python Django Dengan Menggunakan Metode Sql Injection Tika Hermawati, Rahmat Suhatman, Ibnu Surya
Jurnal Aksara Komputer Terapan Politeknik Caltex Riau Vol. 2, No. 2, Tahun 2013 205 metode SQL Injection,dapat di modul pembelajran itu sendiri adalah suatu implementasi dengan baik dan memberikan alat atau sarana pembelajaran yang berisi keamanan bagi webberbasis PHP versi 5, materi, metode, batasan-batasan, dan cara sehingga memperkecil kemungkinan untuk mengevaluasi yang dirancang secara ditembus oleh pihak luar yang tidak sistematis dan menarik untuk mencapai memiliki wewenang dalam mengambil alih kompetensi yang diharapkan dan dapat hak akses web dengan metode SQL digunakan secara mandiri.Modul disusun Injection. sesuai dengan kebutuhan belajar pada mata Pada proyek akhir ini, dibuat suatu kuliah tertentu untuk keperluan proses modul pembelajaran mengenai kemanan pembelajaran tertentu, sebuah kompetensi website berbasis PHP 5 dan Python Django atau sub kompetensi dikemas dalam satu dengan metode pengujiannya menggunakan modul secara utuh. metode SQL Injection dengan memanfaatkan Error Based SQL Injection Union Based SQL Injection dan Blind 2.3 Protocol Hypertext (PHP) Based SQL Injection yang ada pada SQL Injection itu sendiri. Dengan metode SQL PHP adalah bahasa pemrogaman Injection memberikan pengetahuan kepada web atau scripting language yang menyatu semua orang tentang bagaimana dengan HTML dan dijalankan pada server memberikan keamanan terhadap sebuah side. Artinya semua sintaks yang diberikan website dari serangan attacker. akan sepenuhnya dijalankan pada server sedangkan yang dikirim ke browser hanya Tabel 1 perbandingan penelitian terdahulu dan hasilnya saja. penelitian sekarang PHP 5 merupakan kelanjutan evolusi yang berjalan. Walaupun pada PHP 4 sudah banyak library yang ditambahkan, PHP 5 menawarkan peningkatan dari Berdasarkan hasil analisis, fungsionalitas dan penambahan beberapa perancangan, pengujian, implementasi, dan fitur antara lain : evaluasi, maka dapat diambil beberapa 1. peningkatan dari kemampuan kesimpulan, yaitu: pemrograman berorientasi objek 1. Dapat melakukan pencegahan 2. Excetion handling, yang menstandarisasi terhadap serangan SQL Injection logika atas pemberitahuan kesalahan pada web berbasis PHP versi 5 pemrograman. dengan database menggunakan 3. Peningkatan terhadap penanganan MySql. string. 2. Penggunaan dan konfigurasi 4. Peningkatan dukungan terhadap XML htaccess yang tersedia dari web dan Web Service yang menggunakan hostingdalam mencegah terjadinya libxml2. serangan SQL Injection. 5. PHP versi 5 dapat membuat file swf dan 3. Menutupi celah kelemahan PHP applet java. dalam segi coding pemrograman. 4. Penggunaan dan konfigurasi 2.4 Register Global php.ini pada web serverlokal. 2.2 Modul Pembelajaran Modul merupakan salah satu bentuk bahan ajar yang dikemas secara utuh dan sistematis, didalamnya memuat seperangkat pengalaman belajar yang terencana dan didesain untuk membantu semua orang menguasai tujuan belajar yang spesifik. Adapun penjelasan mengenai
Register Globals adalah adalah merupakan salah satu pengaturan yang berada di dalam file php.ini yang bertugas untuk mengatur apakah variabel-variabel EGCPS akan didaftarkan sebagai variabel global atau tidak. Dalam pengaturan defaultnya register globals adalah on tetapi ada juga di beberapa webserver seperti xampp defaultnya off. Berikut ini script
Modul Pembelajaran Uji Keamanan Web Berbasis Php Dan Python Django Dengan Menggunakan Metode Sql Injection Tika Hermawati, Rahmat Suhatman, Ibnu Surya
Jurnal Aksara Komputer Terapan Politeknik Caltex Riau Vol. 2, No. 2, Tahun 2013 untuk mengetahui status register globals pada website yang telah dibuat: tabel 2 Script Register Global Jika register globals di set ON, maka akan muncul tulisan "register_globals ON", dan jika register global di set OFF, maka akan muncul tulisan “register_globals OFF”. Untuk mengaktifkan atau mematikannya, yaitu dengan menghilangkan tanda titik koma, berikut ini adalah contohnya : Ketika register globals ON, maka register globals akan memasukkan variabel ke script yang telah dibuat (seperti pada permintaan melalui form html). Hal ini sesuai dengan fakta bahawa PHP tidak membutuhkan inisialisasi dari variable, dan itu berarti akan sangat mudah untuk menulis koding yang tidak terjamin keamanannya. Perbedaan dari register globals on dan off yaitu menyebutkan nama variabelnya yang berasal dari get, post, cookie, session, dan server secara langsung. 2.5 Python Django
206
Phyton Django awalnya ditulis oleh Adrian Holovaty dan Simon Willison didunia online. Namun sejak dirilis open source Django, perusahaan dan organisasi diseluruh dunia telah mengambilnya untuk digunakan dalam proyek- proyek besar maupun kecil. Phyton Django itu sendiri adalah bahasa pemrograman interpreter, karena Phyton Django dieksekusi dengan sebuah interpreter. Bahasa pemrograman Phyton Django juga merupakan bahasa pemrograman yang mudah dibaca dan terstruktur, hal ini karena digunakannya sistem identasi. Yaitu memisahkan blokblok program susunan identasi. Didalam Phyton Django juga terdapat fasilitas pembuatan tipe data variabel secara dinamik dan struktur bahasa dari Phyton Django yang memudahkan programmer. 2.6 SQL Injection SQL Injection merupakan teknik untuk mengeksploitasi sebuah aplikasi website yang memakai data yang diberikan atau disisipkan dalam query SQL. Cara kerjanya dengan memasukkan query SQL atau perintah (Command) sebagai input yang dimungkinkan melalui halaman website. Dengan demikian, SQL Injection dapat pula dikatakan sebagai suatu kegiatan yang menipu query dari database dengan memberikan suntikan atau menyisipkan kode SQL Injection kedalam kode yang asli. Pada dasarnya ada tiga jenis SQL Injection, yaitu: 1. Error Based SQL Injection Dalam aksinya akan memberikan sebuah perintah ke database sehingga menampilkan pesan error. Dari pesan error tersebut dapat diperoleh informasi yang bisa dimanfaatkan. Pada aksi Error Based SQL Injection dapat dikelompokkan menjadi dua metode yaitu GET method yang digunakan untuk memasukkan perintah SQL Injection melalui URL sebuah wesbite pada address bar, sehingga metode ini dikenal juga dengan URL Based SQL Injection. Yang kedua yaitu POST method, metode ini berasal dari variable yang ada pada form, cara untuk
Modul Pembelajaran Uji Keamanan Web Berbasis Php Dan Python Django Dengan Menggunakan Metode Sql Injection Tika Hermawati, Rahmat Suhatman, Ibnu Surya
Jurnal Aksara Komputer Terapan Politeknik Caltex Riau Vol. 2, No. 2, Tahun 2013 207 mengidentifikasinya dengan berupa CD berisikan file pdf yang memberikan karakter ‘ atau karakter berisi penjelasan mengenai PHP5 dan ascii yang bisa menghasilkan error. Phyton Django, langkah pengujian 2. Union Based SQL Injection menggunakan SQL Injection, hasil Adalah suatu metode SQL Injection pengujian, langkah mempatching perintah UNION untuk menggabungkan SQL Injection, kesimpulan dan saran. hasil dari dua data atau lebih perintah Sehingga user dapat membaca, SELECT menjadi hasil tunggal. memahami serta mempraktekkannya. 3. Blind SQL Injection 3.3 Skenario Penyerangan dan Jenis ini tidak menampilkan pesan attacker error dan tidak menampilkan data atau informasi yang ada, terkadang sedikit sulit untuk melakukan eksploitasi untuk jenis Blind SQL Injection. Hal ini karena prosesnya dengan membrikan pertanyaan pada database berupa kondisi TRUE/FALSE dan apakahn ditampilkan benar atau tidak. 3. Metodologi Penelitian
Gambar 1
3.1
Dari gambar diatas menjelaskan penyerangan dari attacker. Dimana attacker disini sebagai penyerang dari website yang telah dibuat dengan menggunakan metode SQL Injection yaitu dengan memanfaatkan jenisjenisnya, dengan menggunakan jenis dari Error Based SQL Injection, Union Based SQL Injeection dan Blind SQL Injection yang apabila security dari server website dalam kondisi On dan Off. Dan kemudian dengan memanfaatkan SQL Injection tersebut menyerang server dari website ke Database, setelah itu attacker pun dapat menguasai server dan merusak isi dari website tersebut dan menampilkan hasil dari serangan attacker.
Diagram Blok Diagram
Gambar 1
3.2
Diagram Blok Sistem
Skenario Pengguna pembelajaran
Modul 3.4
Skenario Penyerangan Dari Attacker
Skenario
Gambar 1 Skenario penggunaan modul pembelajaran
Dari gambar diatas menjelaskan penggunaan dari modul pembelajaran
Gambar 1
Skenario Mem-patching
Modul Pembelajaran Uji Keamanan Web Berbasis Php Dan Python Django Dengan Menggunakan Metode Sql Injection Tika Hermawati, Rahmat Suhatman, Ibnu Surya
Jurnal Aksara Komputer Terapan Politeknik Caltex Riau Vol. 2, No. 2, Tahun 2013 5.2 4. Hasil dan Pembasan Tabel 3 Hasil analisa pengujian SQL Injection terhadap web.
Dari keterangan tabel 3 diatas bahwa PHP 5 untuk security Off terdapat celah atau bugs yang dapat di manfaatkan oleh attacker untuk di inject dengan menggunakan SQL Injection. Dan pada PHP 5 untuk security On serta Python Django tidak memiliki celah atau bugs sehingga tidak dapat dimanfaatkan oleh attacker.
208 Saran
Beberapa saran untuk penelitian dan pengembangan uji coba keamanan website pada php 5 security ON dan OFF serta Python Django dengan menggunakan metode SQL Injection untuk selanjutnya yaitu: 1. Sebaiknya tidak hanya untuk website dari bahasa pemrograman PHP dan Python Django, akan tetapi lebih bervariasi sehingga lebih banyak pemahaman untuk dipraktekkan. 2. Website yang akan diuji sebaiknya sudah dihosting. 3. Tidak hanya menggunakan SQL Injection akan tetapi ditambah dengan metode-metode penyerangan yang lain. Daftar Pustaka
5. Kesimpulan dan Saran 5.1
[1]
Kesimpulan
Berdasarkan hasil dari pengujian dan analisa yang telah dilakukan pada Uji keamanan web dengan menggunakan SQL Injection maka didapatkan beberapa kesimpulan diantaranya: 1. Modul pembelajaran yang dibuat ini berdasarkan pengujian dapat bermanfaat bagi semua orang. 2. Berdasarkan hasil pengujian sql injection terhadap website dari php 5 security on dan off serta python django dapatkan disimpulkan bahwa website php 5 security off lebih rentan diinject dibanding php 5 security on dan python django. 3. berdasarkan hasil pengujian keamanan website dengan menggunakan sql injection maka bahasa pemrograman yang lebih bagus untuk digunakan adalah bahasa pmerograman php 5 security on dan pyhton django.
[2]
[3]
[4]
[5]
[6] [7]
[8]
Abdul Kadir, 2003, “Dasar Pemrograman WEB Dinamis Menggunakan PHP” , YOgyakarta: ANDI. BM-100, "Hacking hiltonjakarta m (SQL Injection)",.co24 juli 2005, (http://www.jasakom.com). Budi Raharjo, "Keamanan Sistem Informasi Berbasis Internet", PT Insan Indonesia & PT INDOCISC. Lukmanul Hakim, 2009, “Jalan Pintas Menjadi Master PHP”, Yogyakarta: LOKOMEDIA. McClure, Stuart; Saumil Shah.2003. “Web Hacking, Serangan dan pertahanannya” . Yogyakarta: ANDI. Michele E. Davis and Jon A. Phillips, “Learning PHP & MySQL” Ridwan Sanjaya dan Onno W. Purbo, 2002, “Buku Pintar Internet Membuat Aplikasi W@P dengan PHP”, Jakarta: PT.Elex Media Komputindo. www.djangobook.com/en/2.0/”(also known as The Definitive Guide to Django: Web Development Done Right by Adrian Holovaty and Jacob Kaplan-Moss. Published by Apress)”.
Modul Pembelajaran Uji Keamanan Web Berbasis Php Dan Python Django Dengan Menggunakan Metode Sql Injection Tika Hermawati, Rahmat Suhatman, Ibnu Surya