• Tidak ada hasil yang ditemukan

Berisi kesimpulan dan saran dari penulis yang sudah diperoleh dari hasil penulisan tugas akhir.

BAB II

TINJ AUAN PUSTAKA

2.1 Penelitian Terdahulu

Sebagai bahan acuan dalam tugas akhir ini akan dipaparkan hasil penelitian terdahulu yang pernah dibaca oleh penulis, diantaranya :

Penelitian yang dilakukan oleh Chung-Huang Yang and Chung-Hsiang Shen dari

Institute of Information and Computer Education, National Kaohsiung Normal University Kaohsiung, Taiwan, dengan judul “Implement Web Attack Detection Engine with Snort using Modsecurity Core Rules”, dengan tujuan untuk mendeteksi dan menangkal serangan terhadap website menggunakan rule

Modsecurity yang di integrasikan dengan Snort engine (http inspect preprocessor)

yang bertujuan untuk memberikan efektifitas yang lebih baik dengan mengganti metode signature based detection dengan rule based detection.

Pada penelitian tersebut dibangun sebuah system deteksi serangan Web

dengan Snort menggunakan arsitektur Modsecurity core rules untuk membangun

system deteksi serangan web berbasis rule base yang lebih fleksibel dan efektif yang bertujuan untuk memberikan efektifitas pencegahan terhadap serangan web seperti Sql injection, XSS (Cross Site Scripting),dan Web Shell.

Hasil dari uji analisis tersebut menunjukan peningkatan efektifitas deteksi terhadap serangan Web server. Dari total 315 kali uji coba serangan system yang dibangun dapat mengenali 312 uji coba serangan sebagai serangan dengan benar, dengan kata lain 99% dari uji coba serangan tersebut dapat dikenali oleh sistem yang dibangun.

34

Selain itu penelitian yang dilakukan oleh Pavol Lupták, CISSP, CEH dengan judul “Bypassing Web Application Firewalls (WAFs)” yang membahas tentang bagaimana mengatasi lubang kerentanan pada Web Application Firewall

itu sendiri dengan metode generating character pada parameter rule web application firewall. Dalam penelitian ini didapatkan hasil berupa perbandingan uji coba pada titik kerentanan Web Application Firewall setelah di terapkan metode generating character pada Web Application Firewall. Hasil yang didapatkan adalah metode yang diterapkan dapat meningkatkan false positive atau kesalahan deteksi pada request yang aman.hal ini dapat menjadi bahan pertimbangan penulis untuk membantu penegerjaan penelitian ini.

2.2 Website

Website atau sering disingkat dengan istilah situs adalah sejumlah halaman

web yang memiliki topik saling terkait, terkadang disertai pula dengan berkas-berkas gambar, video, atau jenis-jenis berkas lainnya. Sebuah situs web biasanya ditempatkan setidaknya pada sebuah server web yang dapat diakses melalui jaringan seperti internet, ataupun jaringan wilayah lokal (LAN) melalui alamat

internet yang dikenali sebagai URL. Gabungan atas semua situs yang dapat diakses publik di internet disebut pula sebagai World Wide Web atau lebih dikenal dengan singkatan WWW. Meskipun setidaknya halaman beranda situs internet

umumnya dapat diakses publik secara bebas, pada prakteknya tidak semua situs memberikan kebebasan bagi publik untuk mengaksesnya, beberapa situs web

mewajibkan pengunjung untuk melakukan pendaftaran sebagai anggota, atau bahkan meminta pembayaran untuk dapat menjadi anggota untuk dapat

35

mengakses isi yang terdapat dalam situs web tersebut, misalnya situs-situs yang menampilkan pornografi, situs-situs berita, layanan surel (e-mail), dan lain-lain. Pembatasan-pembatasan ini umumnya dilakukan karena alasan keamanan, menghormati privasi, atau karena tujuan komersil tertentu. (Boone Thomson, 2006).

2.2.1 Sejarah Website

Website muncul karena didasari dari adanya perkembangan teknologi informasi dan komunikasi. Melalui perkembangan teknologi informasi, tercipta suatu jaringan antar komputer yang saling berkaitan. Jaringan yang dikenal dengan istilah internet secara terus-menerus menjadi pesan–pesan elektronik, termasuk e-mail, transmisi file, dan komunikasi dua arah antar individu atau komputer. World Wide Web atau WWW atau juga dikenal dengan Web. Web merupakan salah satu layanan yang didapat oleh pemakai computer yang terhubung ke internet.

Penemu situs web adalah Sir Timothy John ¨Tim¨ Berners-Lee, sedangkan situs web yang tersambung dengan jaringan pertamakali muncul pada tahun 1991. Maksud dari Tim ketika merancang situs web adalah untuk memudahkan tukar menukar dan memperbarui informasi pada sesama peneliti di tempat ia bekerja. Pada tanggal 30 April 1993, CERN (tempat dimana Tim bekerja) mengumumkan bahwa WWW dapat digunakan secara gratis oleh publik. Sebuah situs web bisa berupa hasil kerja dari perorangan atau individu, atau menunjukkan kepemilikan dari suatu organisasi, perusahaan. biasanya pembahasan dalam sebuah situs web merujuk pada sebuah ataupun beberapa topik

36

khusus, atau kepentingan tertentu. Sebuah situs web bisa berisi pranala yang menghubungkan ke situs web lain, demikian pula dengan situs web lainnya. Hal ini terkadang membuat perbedaan antara situs web yang dibuat oleh individu ataupun perseorangan dengan situs web yang dibuat oleh organisasi bisnis menjadi tidak begitu jelas. Situs web biasanya ditempatkan pada server web. Sebuah server web umumnya telah dilengkapi dengan perangkat-perangkat lunak khusus untuk menangani pengaturan nama ranah, serta menangani layanan atas protokol HTTP yang disebut sebagai Server HTTP (bahasa Inggris: HTTP Server) seperti Apache HTTP Server, atau Internet Information Services (IIS).

2.3 Web Server

Fungsi utama sebuah server web adalah untuk mentransfer berkas atas permintaan pengguna melalui protokol komunikasi yang telah ditentukan. Disebabkan sebuah halaman web dapat terdiri atas berkas teks, gambar, video, dan lainnya pemanfaatan server web berfungsi pula untuk mentransfer seluruh aspek pemberkasan dalam sebuah halaman web yang terkait termasuk di dalamnya teks, gambar, video, atau lainnya.

Pengguna biasanya menggunakan aplikasi seperti peramban web (web browser) untuk meminta layanan berupa berkas ataupun halaman web yang terdapat pada sebuah server web, kemudian server sebagai manajer layanan tersebut akan merespon balik dengan mengirimkan halaman dan berkas-berkas pendukung yang dibutuhkan, atau menolak permintaan tersebut jika halaman yang diminta tidak tersedia.

37

Pada gambar 2.1 dapat dilihat bahwa client mengirim request HTTP ke

web server untuk selanjutnya diproses oleh web server dengan mengakses database dan selanjutnya dikirimkan response ke klien berupa data yang diminta klien. saat ini umumnya server web telah dilengkapi pula dengan mesin penerjemah bahasa skrip yang memungkinkan server web menyediakan layanan situs web dinamis dengan memanfaatkan pustaka tambahan seperti PHP, ASP. 2.3.1 Serangan Website

Tidak ada yang bisa menjamin perilaku dari setiap orang yang terkoneksi ke Internet, terdapat banyak perilaku di internet dari yang berhati baik sampai yang berhati buruk, dari yang mencari informasi umum sampai mencari informasi kartu kredit orang lain. Karena sifatnya yang publik atau umum maka muncul masalah baru yaitu masalah keamanan data dan informasi di Internet

terutama informasi-informasi yang bersifat krusial dan konfiden.

Pada saat sebuah perusahaan telah atau akan mengintegrasikan jaringannya secara terpusat dengan menggunakan komunikasi data via jaringan

private atau sewa seperti Leased Channel, VSAT , VPN atau bahkan

38

menggunakan jaringan publik (Internet), Maka ada suatu permasalahan lain yang sangat krusial yaitu ”Keamanan atau Security”.

Karena tidak ada yang sistem yang aman didunia ini selagi masih dibuat oleh tangan manusia, karena kita hanya membuat meningkatkan dari yang tidak aman menjadi aman dan biasanya keamanan akan didapat setelah lubang / vurnability system diketahui oleh penyusup.

Saat ini jenis Web yang berkembang semakin beragam dan dinamis, trend ini menuju ke Content Web 2.0 yang bersifat jejaring dan full interaksi antara pengunjung dan web tersebut. Sudah menjadi trend dan menjadi hal yang biasa saat ini perusahaan/ institusi dan lain-lain mempunyai website dari sekedar cuman menampilkan company profile sampai dengan system

informasi yang berbasis online, hal ini disebabkan karena Web yang bersifat

cross platform yang dapat diakses dari mana saja dengan perangkat apa aja asal menggunakan browser. dengan kemajuan ini justru mendorong perkambangan beberapa jenis serangan yang sebelumnya sudah ada menjadi lebih dinamis dan lebih berdampak buruk terhadap keamanan dan integritas data yang ada pada Website. Beberapa serangan website yang berkembang saat ini adalah Sql Injection, Cros Site Scripting,Ccross Site Tracing,HTTP Request Smuggling, Custom Special Character Injection, Web Parameter Tampering, Cross-Site Request Forgery. Berhubung di penelitian ini akan dibahas tentang pengujian serangan Sql Injection dan Cross Site Scripting

maka yang akan di bahas dan di jelaskan adalah serangan Sql Injection dan

39 1. SQL Injection

SQL Injection adalah jenis aksi hacking pada keamanan komputer di mana seorang penyerang bisa mendapatkan akses ke basis data di dalam sistem. SQL Injection yaitu serangan yang mirip dengan serangan XSS dalam bahwa penyerang memanfaatkan aplikasi vektor dan juga dengan

Common dalam serangan XSS. SQL Injection exploits dan sejenisnya adalah hasil Interfacing sebuah bahasa lewat informasi melalui bahasa lain

Pada gambar 2.2 dapat dilihat bahwa attacker melakukan inpur karakter special untuk menyembunyikan perintah sql yang dinjectkan ke dalam URL website agar dapat mengetahui dan mengembil alih database sesuai perintah yang dimasukan. Dalam hal SQL Injection, sebuah bahasa pemrograman seperti PHP atau Perl mengakses database melalui SQL query. Jika data yang diterima dari pengguna akhir yang dikirim langsung ke database dan tidak disaring dengan benar, maka yang penyerang dapat menyisipkan perintah SQL nya sebagai bagian dari input. Setelah

40

dijalankan pada database, perintah ini dapat mengubah, menghapus, atau membeberkan data sensitif. Lebih parah lagi jika sampai ke sistem eksekusi kode akses yaitu mematikan database itu sendiri, sehingga tidak bisa memberi layanan kepada web server. user yang akan masuk ke halaman halaman yang terproteksi harus memasukan username dan

password mereka , daftar password dan user tersebut tersimpan dalam Sql server dengan nama table admin dengan field field diantaranya username

dan password.

Pada gambar 2.3 dapat dilihat web server menampilkan pesan error database yang menunjukan adanya vuln atau kerentanan pada website terhadap serangan web. Statement Sql bukanlah bahasa pemrograman seperti pascal,Delphi atau visual basic , statemen sql biasanya digunakan bersama sama dengan bahasa pemrograman lain pada saat mengakses

database , pada ilustrasi diatas , untuk mencocokan user yang login , maka digunakan statemen Sql yang kurang lebih sebagai berikut:

Select * from admin where username = input_username And password = input_password

Gambar 2.3 Contoh Web yang mempunyai kerentanan terhadap serangan Sql Injection

41

Contoh lain dari serangan ini adalah sebagai berikut:

mysql_query (“SELECT * FROM users WHERE username=’” . $_GET[“username”] . “’”);

Contoh perintah di atas artinya mengeksekusi query untuk melakukan pencarian di kolom “username” dari tabel “user”. Berikut ini contoh cara memanggil dari address bar :

http://localhost/test_sqli.php?username=foo

perhatikan penggunaan kutipan tunggal (‘) pada Sql yang digunakan untuk string. Jika data tersebut tidak dibersihkan dari penggunaan kutipan tunggal, maka secara tidak langsung dapat digunakan untuk menambahkan perintah query.

http://localhost/test_sqli.php?username=foo’ or ‘’=’

request di atas akan mengakibatkan query menjadi seperti berikut:

SELECT * FROM users WHERE username=’foo’ or ‘’=’’

artinya, ketika mencari kata “foo” dan apabila tidak ditemukan, eksekusi ‘’=’’ yang selalu bernilai TRUE akan menyebabkan pengambilan semua

record dalam tabel “user”.

Selain menggunakan serangan secara manual, hacker/ crakcer biasa menggunakan tools sql injection yang sudah tersedia dan dapat digunakan dengan mudah tetapi berdampak buruk terhadap integritas data yang ada di

website. Beberapa tool yang biasa di pakai attacker adalah Bsql, Havij, dan the Mole, beberapa tool Sql Injection dapat melakukan scan direktori dan

42

mencuri data-data penting yang terdapat di database. Hal ini merupakan ancaman berbahaya bagi keamanan data website itu sendiri.

Serangan SQL Injection dapat dibagi menjadi tiga kelas berikut : a. Inband

Data diekstrak menggunakan saluran yang sama yang digunakan untuk menyuntikkan kode SQL . Ini adalah jenis serangan Sql Inkection yang paling sederhana , di mana data yang diambil disajikan langsung di halaman web aplikasi .

b. Out-of -band

data yang diambil dengan menggunakan saluran yang berbeda ( misalnya , email dengan hasil query yang dihasilkan dan dikirim ke atacker ) .

c. Inferential atau Blind Sql Injection

tidak ada transfer data aktual , tapi attacker mampu merekonstruksi informasi dengan mengirimkan permintaan tertentu dan mengamati perilaku yang dihasilkan dari DB Server .

Untuk berhasil atau tidaknya serangan SQL Injection pada website atau aplikasi berbasis web terletak dalam benar atau tidaknya sintak SQL Query. Jika aplikasi mengembalikan pesan kesalahan yang dihasilkan oleh query yang salah , maka mungkin lebih mudah bagi penyerang untuk

43

merekonstruksi logika query asli dan memahami bagaimana melakukan injeksi dengan benar.

Tentang teknik untuk mengeksploitasi kelemahan website dan aplikasi webbase dengan SQL injection memiliki beberapa teknik, dan juga teknik tersebut kadang-kadang dapat digunakan dengan cara digabungkan ( misalnya Union Operator dan out-of-band ) :

a. Union Operator

dapat digunakan ketika cacat SQL injection terjadi dalam sebuah pernyataan SELECT , sehingga memungkinkan untuk menggabungkan dua query ke dalam hasil tunggal atau hasil ditetapkan .

b. Time Delay

menggunakan perintah database untuk menunda jawaban dalam pertanyaan kondisional . Ini berguna ketika penyerang tidak memiliki beberapa jenis jawaban ( hasil , output, atau kesalahan ) dari aplikasi web .

c. Boolean

Menggunakan kondisi Boolean ( s ) yang bertujuan untuk memverifikasi apakah kondisi tertentu adalah benar atau salah.

44 d. Error Based

teknik ini memaksa database untuk menghasilkan kesalahan , memberikan attacker informasi dari tester untuk memperbaiki syntax injeksi mereka .

e. Out-of –band

teknik yang digunakan untuk mengambil data dengan menggunakan saluran yang berbeda ( misalnya , membuat sambungan HTTP untuk mengirimkan hasilnya ke server web ) . 2. Cross Site Scripting (XSS)

XSS adalah kependekan dari istilah cross site scripting yang merupakan salah satu type lubang keamanan sistem yang biasa ditemukan di web based applications dengan melakukan code injections dengan

malicious web pengguna kepada halaman web yang dilihat oleh user

lainnya dimana memungkinkan penyerang untuk mencuri cookies, menipu

user dengan memberikan credentials mereka, memodifikasi penampilan

page, mengeksekusi seluruh sort dari malicious java-script code.

Serangan XSS memiliki dua tipe, yaitu Reflected atau nonpersistent dan Stored atau persistent. Berikut penjelasan kedua tipe tersebut.

a. Reflected atau nonpersistent

Reflected XSS merupakan tipe XSS yang paling umum dan yang paling mudah dilakukan oleh penyerang. Penyerang

45

menggunakan social engineering agar tautan dengan kode berbahaya ini diklik oleh pengguna. Dengan cara ini penyerang bisa mendapatkan cookie pengguna yang bisa digunakan selanjutnya untuk membajak session pengguna.

Mekanisme pertahanan menghadapi serangan ini adalah dengan melakukan validasi input sebelum menampilkan data apapun yang di-generate oleh pengguna.

b. Stored atau persistent

stored XSS lebih jarang ditemui dan dampak serangannya lebih besar. Sebuah serangan stored XSS dapat berakibat pada seluruh pengguna. Stored XSS terjadi saat pengguna diizinkan untuk memasukkan data yang akan ditampilkan kembali. Contohnya adalah pada message board, buku tamu, dll. Penyerang memasukkan kode HTML atau client script code lainnya pada posting mereka.

46

Pada gambar 2.4 dapat dilihat bahwa attacker melakukan inject script XSS ke dalam web server yang mempunyai kerentanan terhadap serangan untuk selanjutnya server memproses script dan menampilkanya ke dalam website. Hal ini memungkunkan user lain dapat terjebak dan menjalankan script serangan dan attacker dapat mencuri informasi dari user tersebut. berikut ini contoh php code sederhana untuk menampilkan pesan ‘selamat datang’ ke pengguna dengan nama di ambil dari variabel $_GET

<?php echo ‘<h4>Hello ‘ . $_GET [‘name’]‘</h4>’;?>

Input dari pengguna akan di ambil dari query string suatu url yang di akses (secara langsung atau dengan mengklik sebuah link), contoh :

http://vulnsite/welcome.php?name=Aditya

Ketika perintah dari url di atas di teruskan ke server, variabel $_GET dengan parameter “name” akan berisi nilai “Aditya”, kemudian akan dikembalikan lagi dari server ke web browser, seperti berikut:

<h4>Hello Aditya</h4>

Apabila payload tersebut dikirimkan ke halaman yang sama dengan parameter “name” yang sama maka akan terjadi hal berikut :

http://vulnsite/welcome.php?name=</h4><script>alert(‘This is an XSS’);</script>

url di atas seharusnya akan di url encoded menjadi seperti ini:

%3c%2fh4%3e%3cscript%3ealert(%e2%80%98This+is+an+XSS%e2%80%9 9) %3b%3c%2fscript%3e)

47

<h4>Hello </h4> <script>alert(‘This is an XSS’);</script>

Script di atas adalah contoh menyisipkan suatu code javascript ke dalam code di halaman web, dan javascript tersebut akan di eksekusi di browser

pengguna.

Hal ini terjadi karena input dari pengguna yang akan ditampilkan di browser tidak di filter terlebih dahulu, filter harus pada input dan

output. 2.4 Database

database adalah suatu kumpulan data yang saling berhubungan secara logis dan penjelasan tentang data yang terhubung tersebut dirancang sedemikian rupa sehingga dapat memberikan informasi yang diperlukan oleh organisasi (Connolly , 2010). Pendefinisian basis data meliputi spesifikasi berupa tipe data, struktur, dan juga batasan-batasan data yang akan disimpan. Basis data merupakan aspek yang sangat penting dalam sistem informasi dimana basis data merupakan gudang penyimpanan data yang akan diolah lebih lanjut. Basis data menjadi penting karena dapat menghidari duplikasi data, hubungan antar data yang tidak jelas, organisasi data, dan juga update yang rumit.

Proses memasukkan dan mengambil data ke dan dari media penyimpanan data memerlukan perangkat lunak yang disebut dengan sistem manajemen basis data (database management system | DBMS). DBMS merupakan sistem perangkat lunak yang memungkinkan user untuk memelihara, mengontrol, dan mengakses data secara praktis dan efisien. Dengan kata lain semua akses ke basis data akan

48

ditangani oleh DBMS. Ada beberapa fungsi yang harus ditangani DBMS yaitu mengolah pendefinisian data, dapat menangani permintaan pemakai untuk mengakses data, memeriksa sekuriti dan integriti data yang didefinisikan oleh DBA (Database Administrator), menangani kegagalan dalam pengaksesan data yang disebabkan oleh kerusakan sistem maupun disk, dan menangani unjuk kerja semua fungsi secara efisien. Dilihat dari jenisnya, basis data di bagi menjadi dua yaitu, database flat file, dan database relational.

1. Database Flat File

Basis data flat-file ideal untuk data berukuran kecil dan dapat dirubah dengan mudah. Pada dasarnya, mereka tersusun dari sekumpulan string dalam satu atau lebih file yang dapat diurai untuk mendapatkan informasi yang disimpan. Basis data flat-file baik digunakan untuk menyimpan daftar atau data yang sederhana dan dalam jumlah kecil. Basis data flat-file akan menjadi sangat rumit apabila digunakan untuk menyimpan data dengan struktur kompleks walaupun dimungkinkan pula untuk menyimpan data semacam itu. Salah satu masalah menggunakan basis data jenis ini adalah rentan pada korupsi data karena tidak adanya penguncian yang melekat ketika data digunakan atau dimodifikasi.

2. Database Relational

Basis data ini mempunyai struktur yang lebih logis terkait cara penyimpanan. Kata "relasional" berasal dari kenyataan bahwa tabel-tabel yang berada di basis data dapat dihubungkan satu dengan lainnya. Basis data

49

relasional menggunakan sekumpulan tabel dua dimensi yang masing-masing tabel tersusun atas baris (tupel) dan kolom (atribut). Untuk membuat hubungan antara dua atau lebih tabel, digunakan key (atribut kunci) yaitu

primary key di salah satu tabel dan foreign key di tabel yang lain. Saat ini, basis data relasional menjadi pilihan karena keunggulannya. Beberapa kelemahan yang mungkin dirasakan untuk basis data jenis ini adalah implementasi yang lebih sulit untuk data dalam jumlah besar dengan tingkat kompleksitasnya yang tinggi dan proses pencarian informasi yang lebih lambat karena perlu menghubungkan tabel-tabel terlebih dahulu apabila datanya tersebar di beberapa tabel.

2.5 Firewall

Internet merupakan sebuah jaringan komputer yang sangat terbuka di dunia, konsekuensi yang harus di tanggung adalah tidak ada jaminan keamanan bagi jaringan yang terkait ke Internet. Artinya jika operator jaringan tidak hati-hati dalam menset-up sistemnya, maka kemungkinan besar jaringan yang terkait ke Internet akan dengan mudah dimasuki orang yang tidak di undang dari luar. Adalah tugas dari operator jaringan yang bersangkutan,untuk menekan resiko tersebut seminimal mungkin. Pemilihan strategi dan kecakapan administrator jaringan ini, akan sangat membedakan apakah suatu jaringan mudah ditembus atau tidak.

50

Pada gambar 2.5 dapat dilihat alur cara kerja firewall, firewall menyaring komunikasi atau traffic data yang keluar dan masuk ke jaringan privat. Firewall merupakan alat untuk mengimplementasikan kebijakan security (security policy). Sedangkan kebijakan security, dibuat berdasarkan pertimbangan antara fasilitas yang disediakan dengan implikasi security-nya. Semakin ketat kebijakan security,

Dokumen terkait