• Tidak ada hasil yang ditemukan

ANALISIS KEAMANAN TERHADAP SQL INJECTION PADA WEB SERVICE BERBASIS REPRESENTATIONAL STATE TRANSFER (REST)

N/A
N/A
Protected

Academic year: 2022

Membagikan "ANALISIS KEAMANAN TERHADAP SQL INJECTION PADA WEB SERVICE BERBASIS REPRESENTATIONAL STATE TRANSFER (REST)"

Copied!
10
0
0

Teks penuh

(1)

BERBASIS REPRESENTATIONAL STATE TRANSFER (REST)

Kunto Aji Kristianto¹, Bayu Erfianto², Iman Lukmanul Hakim³

¹Teknik Informatika, Fakultas Teknik Informatika, Universitas Telkom

Abstrak

Mashups merupakan fenomena saat ini yang dihasilkan karena inovasi web service REST dan AJAX (Asynchronous JavaScript API and XML). Web Service itu sendiri merupakan sistem perangkat lunak yang didesain untuk mendukung interoperabilitas interaksi antar mesin dalam suatu jaringan (network). Berdasarkan W3C, REST merupakan arsitektur web service. REST memiliki tujuan utama memanipulasi representasi resource dari web yang berupa XML. Protokol yang digunakan REST sama dengan protokol HTTP. Oleh sebab itulah REST cukup menggunakan protokol HTTP dan tidak memerlukan layer tambahan, sehingga sangat berbeda dengan

arsitektur web service yang lain seperti SOAP dan XML-RPC. REST memiliki kekurangan, yaitu tidak adanya standard support untuk keamanannya. REST yang menggunakan HTTP GET memiliki parameter querysting sehingga memungkinkan terjadinya SQL Injection.

Pada tugas akhir ini akan dibangun sebuah framework REST web service yang memiliki metode untuk miminimalisir serangan SQL Injection seperti regular expression, escape character, dan prepare statement. Pengujian dilakukan dalam dua tahap, yaitu uji banyaknya query SQL Injection yang tembus dan uji enumerasi untuk mendapat informasi sensitif database . Hasil pengujian akan menghasilkan beberapa data seperti server time execution dan memory usage.

Berdasarkan hasil penelitian, didapat bahwa metode dengan escape character merupakan metode terbaik dilihat dari segi rata-rata server time execution dan penggunaan memori.

Kata Kunci : SQL Injection, Web Service, REST, Framework

Abstract

At this time, mashups are a phenomenon because of the innovations of RESTful Web services and AJAX (Asynchronous JavaScript API and XML. A Web service is a software system designed to support interoperable machine-tomachine interaction over a network. Based on W3C, REST is one of web service architecture. The main purpose of REST is manipulating reseource representation from Web to XML. REST use HTTP as protocol, so REST does not need additional layer to

implement web service like SOAP or XML-RPC based web service. REST has one disadvantage.

REST is lack of standard support for the security. It is possible for REST send querystring parameter via HTTP GET. Because of it, REST has SQL Injection vulnerability.

In this paper will develop a REST web service framework which have methods like regular expression, escape character, and prepare statement to minimize SQL Injection attack. Testing will have two stage. In first stage, client will send SQL Injection queries to get how many query will be pass to the database. In second stage, client will enumerate to get sensitive information from database server. Testing result will create data which contains server time execution and memory usage.

Based on research, the result is escape character method is the best method to defend against SQL Injection attack based on server time execution and memory usage.

Keywords : SQL Injection, Web Service, REST, Framework

(2)

1

1 Pendahuluan

1.1 Latar belakang

Mashups adalah pembuatan layanan (service) baru yang berasal dari dua atau lebih layanan yang telah ada. Mashups merupakan fenomena saat ini yang dihasilkan karena inovasi web service REST dan AJAX (Asynchronous JavaScript API and XML)[34].

Web Service itu sendiri merupakan sistem perangkat lunak yang didesain untuk mendukung interoperabilitas interaksi antar mesin dalam suatu jaringan (network)[16]. Berdasarkan W3C[16], REST[29] merupakan arsitektur web service. REST memiliki tujuan utama memanipulasi representasi resource dari web yang berupa XML[16]. Protokol yang digunakan REST sama dengan protokol HTTP, yaitu Client/Server, Stateless, Cacheable, dan Layered System[29]. Oleh sebab itulah REST cukup menggunakan protokol HTTP dan tidak memerlukan layer tambahan[20]. Web Service REST sangat berbeda dengan web service yang lain seperti web service yang menggunakan SOAP[5] dan XML- RPC[6]. SOAP dan XML-RPC perlu menggunakan layer tambahan. Namun dibalik kelebihan REST, terdapat kekurangan, yaitu tidak adanya standard support untuk keamanannya (security)[10].

Secara practice, pengertian dari REST adalah HTTP GET yang memiliki parameter querysting sehingga memungkinkan terjadinya SQL Injection[11]. Oleh sebab itulah pada tugas akhir ini akan dilakukan analisis resiko keamanan web service REST terhadap SQL Injection serta metode untuk meminimalisir SQL Injection dengan studi kasus web service untuk Book Publisher.

1.2 Perumusan masalah

Rumusan masalah dalam mengerjakan tugas akhir ini adalah:

Bagaimana membangun framework aplikasi REST web service yang aman dari serangan SQL Injection?

Batasan Masalah dalam tugas akhir:

a) Studi kasus web service REST yang dibangun adalah Book Publisher.

b) Menggunakan OWASP fuzz vectors list sebagai acuan dalam melakukan SQL injection.

c) Metode untuk meminimalisir serangan SQL Injection sebatas pada level aplikasi.

d) Database yang digunakan adalah MySQL versi 5 dan bahasa pemrograman PHP 5.

e) Pesan error pada aplikasi tidak disembunyikan.

f) Eksperimen dilakukan pada localhost.

g) Serangan SQL Injection dilakukan pada sebuah tabel yang digunakan sebagai web service pada database MySQL dengan jumlah kolom sebanyak empat.

Fakultas Teknik Informatika Program Studi S1 Teknik Informatika

(3)

h) Menggunakan web server apache dengan modul mod_rewrite enable i) Terdapat nama database lain dalam server MySQL yang digunakan.

j) Hanya menggunakan HTTP GET method dalam membangun REST web service dan pengujiannya.

1.3 Hipotesis Awal

Hipotesis awal pada tugas akhir ini adalah pada web service berbasis REST yang menggunakan HTTP GET method, memungkinkan terjadinya serangan SQL Injection [37].

1.4 Tujuan

Tujuan yang ingin dicapai dari tugas akhir ini yaitu:

Menganalisis vulnerability SQL Injection pada framework REST web service yang dibangun dan menggunakan suatu metode untuk meminimalkan serangan SQL Injection.

1.5 Metodologi penyelesaian masalah

Berikut ini adalah metodologi yang dilakukan untuk menyelesaikan tugas akhir.

a) Studi Literatur

Melakukan studi literatur tentang arsitektur REST, web service serta teknologinya, dan SQL Injection.

b) Eksperimen

Metodologi eksperimen dilakukan dengan mendesain dan membangun server REST di localhost sebagai variabel terikat. Kemudian dilakukan pengujian terhadap SQL Injection dengan mengirimkan query SQL sebagai varabel bebas melalui HTTP GET method . Metode eksperimen ini melalui tahapan-tahapan berikut ini.

i) Identifikasi Masalah

Hampir semua aplikasi yang berbasis XML dipanggil dengan mengirim parameter menggunakan HTTP GET method. Hal ini sering disebut sebagai “REST-style” Web Service. Oleh karena itu, dengan memanfaatkan parameter yang digunakan HTTP GET method, vulnerability pada web service berbasis REST ini adalah mengirim malicious content sebagai parameter, misal mengirim parameter sepanjang 2048 karakter, serta SQL injection yaitu mengirim perintah-perintah SQL sebagai parameter[12].

ii) Desain

Beberapa desain dalam tugas akhir ini meliputi:

(4)

3 1. Desain Framework Web Service REST serta Book Publisher web

service sebagai studi kasusnya. Dalam membangun framework, digunakan teknik Hot Spots di mana aplikasi yang dibuat user di- embed ke dalam framework dengan pendekatan inheritance.

2. Service design: Sedangkan deskripsi dari web service Book Publisher digunakan WSDL 2.0[17] karena WSDL 2.0 direkomendasikan oleh W3C untuk mendeskripsikan REST service. Web service Book Publisher memiliki tiga buah service, yaitu BookList service, di mana service tersebut menampilkan buku-buku yang telah terbit, BookDetail service, di mana service tersebut menampilkan detail buku berdasarkan ID yang diberikan serta BookSearch service, di mana service tersebut menampilkan buku-buku yang dicari berdasarkan parameter judul dan/atau pengarang.

3. Analisis Vulnerability: Analisis dilakukan dengan skenario sebagai berikut. Setelah server web service REST di-deploy, selanjutnya dilakukan pengujian web service apakah telah berjalan sesuai ekspektasi. Kemudian, dilakukan pengujian dengan melakukan injeksi kode-kode sql dengan menggunakan tool pada URL yang digunakan pada web service. Selain itu, dilakukan uji confidentiality dimana akan dilakukan pengujian untuk mengakses informasi sensitive pada server database dengan menggunakan SQL Injection.

4. Mitigasi: Melakukan metode-metode untuk meminimalkan serangan SQL Injection. Metode yang dibangun ada tiga, yaitu sanitize the input dengan regular expression, escape the input, dan prepare statement. Alasan memilih ketiga metode tersebut adalah karena pada level aplikasi, hanya ketiga metode tersebut yang dapat digunakan.

iii) Implementasi

Implementasi dari tugas akhir ini adalah sebagai berikut:

− Transformasi dari desain yang telah dimodelkan ke komponen diagram dan class diagram menjadi kode dari bahasa pemrograman.

− Membangun tool untuk melakukan analisis vulnerability dari web service REST.

iv) Pengujian dan Analisis

− Uji Serangan: Serangan terhadap vulnerability SQL Injection pada database MySQL dilakukan dengan mengirim query SQL Injection pada lampiran A dimana sebagian besar query-query tersebut mengacu kepada OWASP fuzz vectors list[6]. Serangan pertama dengan kondisi tanpa pengamanan terhadap SQL Injection pada sisi server REST. Serangan kedua dengan kondisi server REST hanya menerapkan metode regular expression untuk pengamanannya.

Serangan ketiga dengan kondisi server REST hanya menerapkan metode escape the input. Serangan keempat dengan kondisi server

Fakultas Teknik Informatika Program Studi S1 Teknik Informatika

(5)

REST hanya menerapkan bound parameters (the PREPARE statement). Keempat serangan dilakukan terhadap REST web service Book Publisher dengan yang menggunakan framework yang akan dibuat dalam tugas akhir ini serta tanpa framework.

Tujuan utama serangan adalah untuk mengetahui kefektifan framework yang dibuat dalam membangun REST web service dan menangkal serangan SQL Injection dan mengetahui efek yang ditimbulkan oleh SQL Injection itu sendiri, serta mendapatkan metode terbaik untuk diterapkan sebagai pengamanan terhadap SQL Injection .

− Efek: Query SQL yang berhasil diinjeksikan akan menampilkan informasi sensitif dari database seperti username dan password.

− Analisis: Berapa jumlah Query SQL Injection berhasil lolos pada kondisi tanpa pengaman, serta dengan pengaman dimana pengaman itu sendiri terdiri dari tiga buah metode, yaitu: regular expression, escape parameter, dan prepare statement. Metode manakah yang memiliki performansi terbaik dilihat dari waktu eksekusi dan ukuran memori yang digunakan.

v) Pembuatan Laporan

Pada tahap ini dilakukan pembuatan laporan tugas akhir yang berisi lima bab dengan penjelasan sebagai berikut:

− Bab 1. Bab ini berisi latar belakang, perumusan masalah, hipotesis awal, tujuan serta metodologi penyelesaian masalah.

− Bab 2. Bab ini berisi landasan teori yang dibutuhkan dalam menyusun tugas akhir.

− Bab 3. Bab ini berisi seluruh desain perangkat lunak yang akan dibuat.

− Bab 4. Bab ini berisi penjelasan bagaimana cara pengujian tugas akhir ini serta hasil pengujian yang diperoleh.

− Bab 5. Bab ini berisi kesimpulan dan saran yang diperoleh dalam tugas akhir ini.

(6)

48

5 Kesimpulan dan Saran

5.1 Kesimpulan

Secara keseluruhan, REST web service terbukti memiliki vulnerability berupa SQL Injection pada HTTP GET method yang digunakan sebagai web service sehingga hipotesis awal telah terbukti. Hal ini dapat dilihat pada saat dilakukan pengujian tanpa pengaman terpasang, terdapat sejumlah query yang berhasil tembus. Query yang berhasil tembus tersebut kemungkinan besar dapat mengakses informasi sensitif dalam server database.

Metode pengamanan pada level aplikasi yaitu regular expression, escape character, dan prepare statement secara sempurna menangkal SQL Injection hingga 100%. Metode escape character merupakan metode terbaik dalam menangkal SQL Injection dilihat dari rata-rata server execution time dan penggunaan memori. 

metode-metode untuk menangkal SQL Injection sama-sama efektif diterapkan baik dengan framework atau tanpa framework. Namun Dilihat dari sisi re-use code dalam membangun REST web service, sangat efektif jika menggunakan framework dilihat dari jumlah kode yang diperlukan dibanding tanpa framework.  

5.2 Saran

Berikut ini adalah saran-saran untuk penelitian REST web service dan pengembangan framework yang telah dibuat:

1. Melakukan pengujian SQL Injection terhadap HTTP method yang lain seperti POST, PUT, dan DELETE.

2. Melakukan pengujian SQL Injection dengan lebih banyak menggunakan karakter yang telah di-encode menjadi karakter heksadesimal pada metode-metode pengaman pada level aplikasi.

3. Melakukan implementasi HTTP method POST, PUT, dan DELETE dalam membangun REST web service baik dengan framework atau tanpa framework.

4. Mencoba studi kasus lain.

Powered by TCPDF (www.tcpdf.org)

Fakultas Teknik Informatika Program Studi S1 Teknik Informatika

(7)

Referensi

[1] ___. Architecture of the World Wide Web, First Edition. Diperoleh dari:

http://www.w3.org/TR/2003/WD-webarch-20031209/ (03 September 2009).

[2] ___. ASCII Table. Diperoleh dari: http://asciitable.com (31 Agustus 2009).

[3] ___. BenjaminsRESTTutorial. Diperoleh dari: http://rest.blueoxen.net/cgi- bin/wiki.pl?BenjaminsRESTTutorial (03 September 2009).

[4] ___. Getting Started with Rails. Diperoleh dari:

http://guides.rubyonrails.org/getting_started.html (31 Agustus 2008).

[5] ___. MIT EVAT Report - Glossary. Diperoleh dari: http://www- evat.mit.edu/report/glossary.html (03 September 2009).

[6] ___. OWASP Testing Guide Appendix C: Fuzz Vectors. Diperoleh dari:

http://www.owasp.org/index.php/OWASP_Testing_Guide_Appendix_C:_

Fuzz_Vectors (03 September 2009).

[7] ___. RESTfulDesign. Diperoleh dari: http://rest.blueoxen.net/cgi- bin/wiki.pl?RESTfulDesign (03 September 2009).

[8] ___. Server Error Codes and Messages. Diperoleh dari:

http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html (03 September 2009).

[9] ___. SOAP Version 1.2 Part 1: Messaging Framework (Second Edition).

Diperoleh dari: http://www.w3.org/TR/soap12-part1/ (03 September 2009).

[10] ___. SQL Injection Prevention Cheat Sheet. Diperoleh dari:

http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet (03 September 2009).

[11] ___. SQL Injection. Diperoleh dari:

http://www.owasp.org/index.php/SQL_injection (03 September 2009).

[12] ___. Testing for WS HTTP GET parameters/REST attacks (OWASP-WS- 005). Diperoleh dari: http://www.owasp.org/index.php/Testing

_for_WS_HTTP_GET_parameters/REST_attacks_(OWASP-WS-005) (03 September 2009).

[13] ___. UML 2 Class Diagrams. Diperoleh dari:

http://www.agilemodeling.com/artifacts/classDiagram.htm (03 September 2009).

[14] ___. UML 2 Component Diagrams. Diperoleh dari:

http://www.agilemodeling.com/artifacts/componentDiagram.htm (03 September 2009).

[15] ___. unlox.co.uk - Glossary of Terms. Diperoleh dari:

https://www.unlox.co.uk/GlossaryList.asp?intCatalogID=s (03 September 2009).

[16] ___. Web Services Architecture. Diperoleh dari:

http://www.w3.org/TR/ws-arch/ (03 September 2009).

(8)

50 [17] ___. Web Services Description Language (WSDL) Version 2.0 Part 0:

Primer. Diperoleh dari: http://www.w3.org/TR/2007/REC-wsdl20- primer-20070626/ (03 September 2009).

[18] ___. Web Services Description Language (WSDL) Version 2.0 Part 1:

Core Language. Diperoleh dari: http://www.w3.org/TR/2007/REC- wsdl20-20070626 (03 September 2009).

[19] ___. Web Services Description Language (WSDL) Version 2.0 Part 2:

Adjuncts. Diperoleh dari: http://www.w3.org/TR/2007/REC-wsdl20- adjuncts-20070626/ (03 September 2009).

[20] ___. WhatIsREST. Diperoleh dari: http://rest.blueoxen.net/cgi- bin/wiki.pl?WhatIsREST (03 September 2009).

[21] ___. XML-RPC Home Page. Diperoleh dari: http://www.xmlrpc.com/ (03 September 2009).

[22] ___. XSLT Tutorial. Diperoleh dari: http://www.w3schools.com/xsl/ (03 September 2009).

[23] Abeysinghe, Samisa. Restful PHP Web Services. Diperoleh dari:

http://packtbookexamples.com/work/shroff/03_November_2008 /5524_Restfu%20PHP%20Webservices/9781847195524txt.pdf (03 September 2009).

[24] Berners-Lee, Tim ,et al. Uniform Resource Identifier (URI): Generic Syntax. Diperoleh dari: http://www.ietf.org/rfc/rfc39866.txt (04 September 2009).

[25] Chen, Xin. Developing Application Frameworks in .NET. 2004. New York: Apress.

[26] Cowan, John. RESTful Web Services. 2005.

[27] Dwi Arifiyanto, Riza.Analisis Perbandingan Performansi Ajax dan Flex.

2009. Bandung: Institut Teknologi Telkom.

[28] Fielding, et al. Hypertext Transfer Protocol -- HTTP/1.1. Diperoleh dari:

http://www.ietf.org/rfc/rfc2616.txt (04 September 2009).

[29] Fielding, Roy Thomas. Architectural Syles and the Design of Network- based Software Architectures. 2000. California: University of California.

[30] Freed & Borenstein. Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies. Diperoleh dari:

http://www.ietf.org/rfc/rfc2045.txt (24 Juni 2009).

Fakultas Teknik Informatika Program Studi S1 Teknik Informatika

(9)

[31] Friedl, Steve. SQL Injection Attacks by Example. Diperoleh dari:

http://unixwiz.net/techtips/sql-injection.html (03 September 2009).

[32] Gregorio, Joe. How to Create a REST Protocol. Diperoleh dari:

http://www.xml.com/pub/a/2004/12/01/restful-web.html (03 September 2009).

[33] Kahle, Randy & Hicks, Tom. A RESTful Core for Web-like Application Flexibility - Part 3 - Logical Level Programming. Diperoleh dari:

http://www.theserverside.com/tt/articles/article.tss?track=NL- 461&ad=656910USCA&l=ARESTfulCorePart3

&asrc=EM_NLN_4355675&uid=2625488 (03 September 2009).

[34] Lathem, Jonathan D. SA-REST: Adding Semantics to REST-based web services. 2007. Athens, Georgia.

[35] Lepchenske, Teresa and E. Moen, William. Z39.50 Glossary &

Acronyms. Diperoleh dari:

http://www.unt.edu/wmoen/Z3950/ZGlossaryMay98.htm#Client/Server:

(03 September 2009).

[36] Mandel, Lawrence. Describe REST Web Services with WSDL 2.0.

Diperoleh dari: http://www.ibm.com/developerworks /webservices/library/ws-restwsdl (16 Juli 2009).

[37] O'neill, Mark & Vordel. Security for REST Web Services. New York:

RSA.

[38] Putasso, Cesare. RESTful Service Design. 2009. Switzerland: University of Lugano.

[39] Ricardson, Leonard & Ruby, Sam. RESTful Web Services. 2007.

California, O’Reilly Media.

[40] Rusty Harold, Elliotte. XML Protocols: XML-RPC and SOAP. Diperoleh dari:

http://www.cafeconleche.org/books/xmljava/chapters/ch02.html#d0e2342 (03 September 2009).

[41] Scofield, Ben. Practical REST on Rails 2 Projects. 2008. New York:

Apress.

(10)

52 [42] Spies, Brennan. Web Services, Part 1: SOAP vs. REST. Diperoleh dari:

http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest (03 September 2009).

[43] van Rossum, Guido. httplib -- HTTP protocol client. 2008.

Powered by TCPDF (www.tcpdf.org)

Fakultas Teknik Informatika Program Studi S1 Teknik Informatika

Referensi

Dokumen terkait

Dari audit kualitas pembelajaran diketahui perusahaan telah memiliki dasar yang baik untuk menjadi perusahaan pembelajar namun karyawan menginginkan pencapaian yang lebih baik

2) Menu kuis : menu ini berisi latihan soal operasi bilangan yang terdiri dari 12 soal secara acak. 3) Menu permainan : menu ini memiliki 2 pilihan permainan, yaitu

Sudah saatnya HIMA MEKA sebagai salah satu organisasi kemahasiswaan yang bergerak dalam bidang keprofesian Teknik mekatronika harus memiliki sistem

Dari pelaksanaan praktikum Ilmu Ukur Wilayah yang telah dilaksanakan oleh kelompok III mulai dari objek Alat Ukur Sederhana hingga objek Spot Height dapat

Dalam penanganan penderita asma dengan kehamilan, dan tidak dalam serangan akut, diperlukan adanya kerja sama yang baik antara ahli kebidanan dan ahli paru.

Sugestopedia bertujuan untuk mempercepat proses pembelajaran bahasa, guru memegang peranan otoritas di dalam kelas agar strategi ini berhasil, maka para siswa

Dalam berbagai dataran dialog dari apa yang telah dijelaskan diatas, saya menganalisis bahwa bentuk aplikasi dari dialog antar umat beragama dalam Masjid Baitul

Menurut Peraturan Bersama, Menteri Pemberdayaan Perempuan, Menteri Tenaga Kerja dan Transmigrasi, dan Menteri Kesehatan no 48/Men.PP/XII/2008; no.PER.27/MEN/XII/2008;