Anda di halaman 1dari 73

DETEKSI SQL INJECTION PADA WEB

MENGGUNAKAN METODE CODE REVIEW DAN


PENETRATION TESTING

TUGAS AKHIR

Oleh :
Yogi Kortisa 4311301040

Disusun untuk memenuhi syarat kelulusan Program Diploma DIV

PROGRAM STUDI TEKNIK MULTIMEDIA DAN JARINGAN


POLITEKNIK NEGERI BATAM
BATAM
2016
HALAMAN PENGESAHAN

DETEKSI SQL INJECTION PADA WEB MENGGUNAKAN METODE SQL


INJECTION DAN PENETRATION TESTING

Disusun oleh :
Yogi Kortisa
(4311301040)

Telah diuji dan dipertahankan di depan Tim Penguji


dalam Sidang Tugas Akhir
pada tanggal 21 Desember 2016
dan dinyatakan LULUS.

Batam, …………….. 2017


Diperiksa dan disetujui oleh;

Pembimbing,

Tri Ramadani Arjo, S.ST., M.T.


NIK. 109006

Penguji I, Penguji II,

Mir’atul Khusna Mufida, S.ST.,M.Sc. Dwi Ely Kurniawan, S.Pd., M.Kom.


NIK. 109057 NIK. 112094

ii
HALAMAN PERNYATAAN

Dengan ini, saya:

NIM : Yogi Kortisa


Nama : 4311301040

adalah mahasiswa Teknik Informatika Politeknik Batam yang menyatakan bahwa tugas
akhir dengan judul:

DETEKSI SQL INJECTION PADA APLIKASI WEB MENGGUNAKAN


METODE CODE REVIEW DAN PENETRATION TESTING

disusun dengan:

1. tidak melakukan plagiat terhadap naskah karya orang lain


2. tidak melakukan pemalsuan data
3. tidak menggunakan karya orang lain tanpa menyebut sumber asli atau tanpa ijin
pemilik

Jika kemudian terbukti terjadi pelanggaran terhadap pernyataan di atas, maka saya
bersedia menerima sanksi apapun termasuk pencabutan gelar akademik.

Lembar pernyataan ini juga memberikan hak kepada Politeknik Batam untuk
mempergunakan, mendistribusikan ataupun memproduksi ulang seluruh hasil Tugas
Akhir ini.

Batam, 15 Desember 2016

Yogi Kortisa
4311301040

iii
KATA PENGANTAR

Tiada kata yang paling indah serta mulia diucapkan melainkan hanyalah memuji syukur

kehadirat Allah SWT. Shalawat dan salam semoga selalu dilimpahkan kepada

Rasulullah SAW, karena atas rahmat dan taufik-Nya proses penulisan tugas akhir ini

dapat terselesaikan. Penulisan tugas akhir ini dilakukan dalam rangka memenuhi

persyaratan dari mata kuliah Tugas Akhir I dan Tugas Akhir II pada program studi

Teknik Multimedia dan Jaringan Politeknik Negeri Batam. Dalam menyelesaikan tugas

akhir ini penulis banyak mendapat kesulitan dan kendala yang dihadapi, namun berkat

bantuan dan bimbingan yang baik dari berbagai pihak, maka akhirnya tugas akhir ini

dapat terselesaikan dengan baik. Oleh karena itu, dalam kesempatan ini penulis

mengucapkan terima kasih yang sebesar-besarnya kepada:

1. Bapak Tri Ramadani Arjo selaku dosen pembimbing tugas akhir yang telah

mengarahkan penulis dalam menyusun tugas akhir ini

2. Listia Indarti yang selalu ada untuk penulis dan selalu memberikan semangat,

dukungan, doa, serta tidak pernah bosan menjadi tempat berbagi masalah yang

penulis hadapi di dalam dunia perkuliahan maupun kehidupan

3. Orang Tua saya yang selalu memberikan dorongan serta dukungan baik meteri

maupun yang non-materi

4. Seluruh anggota komunitas Street Workout Batam yang selalu memotivasi dan

memberikan semangat yang positif setiap hari

iv
5. Seluruh teman-teman seperjuangan program studi Teknik Multimedia dan Jaringan

Politeknik Negeri Batam angkatan 2013 yang telah memberikan dukungan dan

pelajaran berharga saat kuliah selama 4 tahun ini.

Sebagai pihak yang diberikan dorongan dan bantuan demi kelancaran penulisan tugas

akhir ini, penulis berharap agar Allah SWT dapat membalas segala kebaikan dari semua

pihak yang telah penulis sebutkan di atas. Penulis berharap semoga tugas akhir ini dapat

memberikan manfaat bagi pembaca dan pengembangan ilmu pengetahuan.

Batam, 13 Desember 2016

Penulis

v
ABSTRAK

DETEKSI SQL INJECTION PADA WEB MENGGUNAKAN METODE


CODE REVIEW DAN PENETRATION TESTING

Beragam jenis website yang dikembangkan saat ini dengan tingkat kompleksitas yang
semakin tinggi, ternyata masih memiliki risiko celah keamanan yang dapat dimanfaatkan
oleh para cyber criminal. Salah satu jenis serangan yang paling sering terjadi adalah
SQL injection. Penelitian ini bertujuan untuk menguji efektifitas dari metode Code
Review dan Penetration Testing dalam mendeteksi celah keamanan SQL injection
pada web. Pada penelitian ini diusulkan sebuah pendekatan 360 Review dalam
menerapkan kedua metode deteksi tersebut. Tahapan pertama yaitu pengujian metode
Code Review untuk menemukan celah keamanan SQL Injection, kemudian hasilnya
digunakan kembali untuk merencanakan pengujian metode Penetration Testing. Hasil
dari penelitian ini dapat membantu pengembang web dalam memahami potensi celah
keamanan SQL injection pada aplikasinya untuk kemudian menentukan pilihan metode
yang efektif dalam mendeteksi celah tersebut.
Kata kunci: Code Review, Penetration Testing, Joomla!, SQL injection

vi
ABSTRACT

DETECTING SQL INJECTION IN THE WEB USING CODE REVIEW AND


PENETRATION TESTING METHOD

Various types of websites are developed today with the higher level of complexity, it still
has the risk of security holes that can be exploited by cyber criminals. One type of
attack is the most common SQL injection. This study aims to test the effectiveness of
the methods Code Review and Penetration Testing in detecting SQL injection security
holes in the web. In this study 360 Review proposed an approach in implementing both
the detection method. The first stage is to test the Code Review method to find SQL
Injection, and then use the results back to plan the Penetration Testing method. The
results of this study can help web developers in understanding the potential SQL
injection security holes in its application to then determine the choice of method is
effective in detecting the gap.
Key words: Code Review, Penetration Testing, Joomla!, SQL injection

vii
DAFTAR ISI

HALAMAN JUDUL................................................................................................. i
HALAMAN PENGESAHAN................................................................................... ii
HALAMAN PERNYATAAN.................................................................................. iii
KATA PENGANTAR............................................................................................. iv
HALAMAN ABSTRAK.......................................................................................... vi
DAFTAR ISI......................................................................................................... viii
DAFTAR GAMBAR................................................................................................ x
DAFTAR TABEL.................................................................................................... xi
LAMPIRAN........................................................................................................... xii

BAB I PENDAHULUAN..................................................................................... 1
1.1 Latar Belakang........................................................................................... 1
1.2 Rumusan Masalah ...................................................................................... 2
1.3 Batasan Masalah ........................................................................................ 3
1.4 Tujuan Penelitian ........................................................................................ 3
1.5 Manfaat Penelitian ...................................................................................... 3
1.6 Tinjauan Pustaka ........................................................................................ 3
1.7 Sistematika Penulisan.................................................................................. 5

BAB II LANDASAN TEORI ................................................................................ 6


2.1 Pengenalan Web ........................................................................................ 6
2.1.1 Keamanan Web ......................................................................................... 7
2.2 Joomla! ...................................................................................................... 8
2.3 SQL Injection............................................................................................ 8
2.4 Code Review ............................................................................................. 9
2.4.1 Code Review Tools ................................................................................. 10
2.5 Penetration Testing ................................................................................ 10
2.5.1 Penetration Testing Tools ...................................................................... 12

BAB III PERANCANGAN SISTEM ................................................................... 14


3.1 Spesifikasi Perangkat Keras ..................................................................... 14
3.2 Spesifikasi Perangkat Lunak ..................................................................... 14
3.3 Metode Penelitian..................................................................................... 15
3.3.1 Studi Literatur .......................................................................................... 17
3.3.2 Perancangan Model.................................................................................. 17
3.3.3 Pengujian Metode Code Review .............................................................. 19
3.3.4 Pengujian Metode Penetration Testing.................................................... 20
3.3.5 Evaluasi.................................................................................................... 23

viii
BAB IV PENGUJIAN DAN ANALISIS .............................................................. 24
4.1 Implementasi Pengujian Code Review....................................................... 24
4.1.1 Hasil Tahapan Dangerous Coding Behaviors .......................................... 24
4.1.2 Hasil Tahapan Entry Points ..................................................................... 25
4.1.3 Hasil Tahapan Following the Data .......................................................... 25
4.1.4 Code Review Report ............................................................................... 26
4.2 Implementasi Pengujian Penetration Testing ............................................ 27
4.2.1 Hasil Pemindaian OWSP ZAP.................................................................. 28
4.2.2 Hasil Pemindaian W3af............................................................................. 28
4.2.3 Hasil Pemindaian Vega ............................................................................. 29
4.2.4 Hasil Pemindaian Acunetix WVS .............................................................. 30
4.2.5 Eksploitasi dengan SQLMAP ................................................................... 31
4.2.6 Penetration Testing Report .................................................................... 32
4.3 Implementasi Evaluasi............................................................................... 33
4.3.1 Hasil Combined Report ........................................................................... 34
4.3.2 Jumlah Celah Keamanan........................................................................... 36
4.3.3 Penyebab False Positive ......................................................................... 36
4.3.4 Penyebab False Negative........................................................................ 37
4.3.5 Perbandingan Kedua Metode ................................................................... 38

BAB V KESIMPULAN DAN SARAN ............................................................... 40


5.1 Kesimpulan .............................................................................................. 40
5.2 Saran ....................................................................................................... 40

DAFTAR PUSTAKA............................................................................................. 41
LAMPIRAN........................................................................................................... 44

ix
DAFTAR GAMBAR

Gambar 3.1 Tahapan penelitian................................................................................ 16


Gambar 3.2 360 review approach.......................................................................... 18
Gambar 3.3 Tahapan code review .......................................................................... 19
Gambar 3.4 Tahapan penetration testing ............................................................... 21
Gambar 4.1 Tahapan dangerous coding behaviors ................................................ 24
Gambar 4.2 Tahapan entry points........................................................................... 25
Gambar 4.3 Tahapan following the data ................................................................ 25
Gambar 4.4 Hasil pencarian user-controlled data ................................................... 26
Gambar 4.5 Correct vulnerability .......................................................................... 31
Gambar 4.6 False positive vulnerability ................................................................ 31

x
DAFTAR TABEL

Tabel 3.1 Spesifikasi perangkat keras ...................................................................... 14


Tabel 3.2 Spesifikasi perangkat lunak ...................................................................... 15
Tabel 3.3 Code review report template ................................................................. 20
Tabel 3.4 Penetration testing report template....................................................... 23
Tabel 3.5 Combined report template ..................................................................... 23
Tabel 4.1 Code review report ................................................................................ 27
Tabel 4.2 Penetration testing tools ........................................................................ 28
Tabel 4.3 Hasil pemindaian OWASP ZAP............................................................... 28
Tabel 4.4 Hasil pemindaian W3af ............................................................................ 29
Tabel 4.5 Hasil pemindaian Vega ............................................................................. 29
Tabel 4.6 Hasil pemindaian Acunetix WVS .............................................................. 30
Tabel 4.7 Hasil penetration testing report.............................................................. 33
Tabel 4.8 Hasil combined report ............................................................................ 35

xi
LAMPIRAN

Lampiran 1 Proses code review pertama...................................................................48


Lampiran 2 Proses code review kedua..................................................................... 48
Lampiran 3 Proses code review ketiga..................................................................... 49
Lampiran 4 Proses code review keempat................................................................. 49
Lampiran 5 Proses code review kelima.................................................................... 50
Lampiran 6 Memulai tool OWASP ZAP................................................................. 50
Lampiran 7 Proses scanning OWASP ZAP............................................................. 51
Lampiran 8 Hasil report OWASP ZAP................................................................... 51
Lampiran 9 Memulai tool W3af............................................................................... 52
Lampiran 10 Proses scanning W3af......................................................................... 52
Lampiran 11 Hasil report W3af............................................................................... 53
Lampiran 12 Memulai tool Vega.............................................................................. 53
Lampiran 13 Proses scanning Vega.......................................................................... 54
Lampiran 14 Hasil report Vega................................................................................ 54
Lampiran 15 Memulai tool Acunetix WVS............................................................... 55
Lampiran 16 Proses scanning Acunetix WVS........................................................... 55
Lampiran 17 Hasil report Acunetix WVS................................................................. 56
Lampiran 18 Proses eksploitasi SQLMAP............................................................... 56
Lampiran 19 Seluruh hasil Penetration testing report................................................. 57
Lampiran 20 Seluruh hasil Combined report............................................................. 60

xii
BAB I
PENDAHULUAN

1.1 Latar Belakang


Website saat ini digunakan sebagai media pertukaran informasi, transaksi elektronik,
dan penyimpanan data elektronik yang bersifat sensitif. Beragam jenis website yang
dikembangkan saat ini dengan tingkat kompleksitas yang semakin tinggi, ternyata masih
memiliki risiko celah keamanan yang dapat dimanfaatkan oleh penjahat dunia maya
(cyber criminal). Tujuannya adalah untuk mendapatkan keuntungan dari pencurian
informasi yang bersifat sensitif, menyebarkan informasi palsu, dan masih banyak lagi
tujuan lainnya. Salah satu jenis serangan terhadap celah keamanan web adalah SQL
Injection.

Tajpour (2010) menyebutkan jenis serangan SQL Injection memungkinkan penyerang


untuk menyisipkan kode Structured Query Language (SQL) ke dalam sebuah form
pada web untuk mendapatkan akses atau melakukan perubahan pada data. Menurut
data dari The Open Web Application Security Project (2013), SQL Injection adalah
salah satu dari sepuluh jenis serangan yang paling banyak terdapat pada aplikasi web.

Menurut Holzmann (2009) metode Code Review bertujuan untuk memastikan kode
dapat dimengerti dengan baik, terstruktur rapi, dan tidak adanya kecacatan dalam
desain dan pemrograman. Menurut Xynos (2010) Penetration Testing adalah sebuah
proses yang sistematis dan secara aktif menguji sebuah jaringan untuk menentukan
kerentanan apa saja yang mungkin ditemukan dan membuat laporan yang berisi
rekomendasi untuk mengurangi ataupun mengatasi kerentanan tersebut. Berbeda dengan
penjahat dunia maya (cyber criminal), seorang Penetration Tester sebelumnya telah
mendapatkan izin dari pemilik sumber daya komputasi yang sedang diuji dan akan
bertanggung jawab untuk memberikan sebuah laporan. Tujuan dari Penetration

1
Testing adalah untuk meningkatkan keamanan komputasi sumber daya yang sedang
diuji.

Edmundson (2013) melakukan sebuah penelitian empiris untuk menjawab pertanyaan


mendasar tentang efektifitas dari berbagai variasi metode manual Code Review pada
web. Penelitian tersebut menyimpulkan efektifitas dari seluruh reviewer cukup rendah.
Dua puluh persen dari jumlah para reviewer yang dijadikan percobaan tidak
menemukan celah keamanan yang benar, dan tidak ada pengembang yang menemukan
lebih dari lima celah keamanan, yang mana total keseluruhan celah keamanan adalah
berjumlah tujuh celah.

Dari uraian pendahuluan diatas, diusulkan sebuah pendekatan 360 Review dalam
menerapkan metode Code Review dan Penetration Testing. Penelitian ini akan
menguji efektifitas kedua metode tersebut dalam mendeteksi celah keamanan SQL
Injection pada web. Hasil temuan dari metode Code Review diawal pengujian akan
dijadikan rujukan dalam pengujian selanjutnya menggunakan metode Penetration
Testing. Hasil dari pengujian metode Penetration Testing kemudian digunakan
kembali sebagai informasi tambahan pada hasil pengujian dari metode Code Review.
Evaluasi dilakukan pada hasil pengujian untuk mengetahui efektifitas metode yang telah
diujikan dalam mendeteksi celah keamanan SQL Injection.

1.2 Rumusan Masalah


Berdasarkan uraian diatas dapat dirumuskan masalah dalam penelitian ini, yaitu
bagaimanakah efektifitas metode Code Review dan Penetration Testing dalam
mendeteksi celah keamanan SQL Injection?

2
1.3 Batasan Masalah
a. Penelitian ini menggunakan Content Management system (CMS) Joomla! versi
3.2.1 sebagai objek penelitian
b. Jenis celah keamanan SQL Injection pada penelitian ini adalah injeksi pada
URL dengan parameter bertipe integer yang dikirimkan melalui method
$_GET
c. Penelitian ini menggunakan pendekatan white box testing dalam menerapkan
metode Penetration Testing

1.4 Tujuan Penelitian


Tujuan yang ingin dicapai dalam penelitian ini adalah mengetahui efektifitas metode
Code Review dan Penetration Testing dalam mendeteksi celah keamanan SQL
Injection.

1.5 Manfaat Penelitian


a. Bermanfaat bagi pengembang dalam memahami potensi celah keamanan SQL
Injection pada web dengan metode Code Review dan Penetration Testing
b. Bermanfaat bagi pengembang dalam menentukan pilihan metode yang efektif
dalam mendeteksi potensi celah keamanan SQL Injection.

1.6 Tinjauan Pustaka


Antunes dan Vieira (2009) melakukan penelitian dengan membandingkan efektifitas
antara teknik Penetration Testing dan static code analysis yang digunakan dalam
mendeteksi celah keamanan SQL Injection pada kode web services. Hasil penelitian
tersebut mengatakan bahwa secara umum static code analyzers bisa mendeteksi lebih
banyak celah SQL Injection daripada hasil dari penetration testing tools. Hasil lainnya
menyatakan bahwa penggunaan tools dengan pendekatan deteksi yang sama lebih
sering menghasilkan deteksi celah yang berbeda-beda. Banyak tools yang memiliki

3
cakupan yang rendah dan tingkat false positive yang tinggi yang menjadikannya sebuah
pilihan yang buruk bagi para programmer.

Nugraha dkk. (2013) dalam penelitiannya mengajukan metode pengamanan sistem


aplikasi web dari serangan SQL Injection dengan menggunakan metode penghapusan
nilai atribut pada SQL query untuk pendeteksian serangan dan honeypot untuk
mengamankan sistem utama dari serangan. Dari hasil uji coba dapat disimpulkan sistem
telah memenuhi semua kebutuhan dan menjalankan perannya dengan baik dalam
mendeteksi serangan SQL Injection, namun yang dapat dideteksi hanya yang
dikirimkan melalui POST method.

Edmundson (2013) melakukan sebuah penelitian empiris untuk menjawab pertanyaan


mendasar tentang efektifitas dari berbagai variasi metode manual Code Review pada
aplikasi web. Penelitian tersebut menyimpulkan efektifitas dari seluruh reviewer cukup
rendah. Dua puluh persen dari jumlah para reviewer yang dijadikan percobaan tidak
menemukan celah keamanan yang benar, dan tidak ada pengembang yang menemukan
lebih dari lima celah keamanan, yang mana total keseluruhan celah keamanan adalah
berjumlah tujuh celah.

Penelitian kali ini akan kembali menguji efektifitas dari metode Code Review, namun
dilanjutkan dengan metode Penetration Testing dalam mendeteksi celah keamanan
SQL Injection pada web. Dengan menggunakan pendekatan 360 Review, hasil temuan
dari metode Code Review diawal pengujian akan dijadikan rujukan dalam pengujian
selanjutnya menggunakan metode Penetration Testing. Hasil dari pengujian metode
Penetration Testing kemudian digunakan kembali sebagai informasi tambahan pada
hasil pengujian dari metode Code Review. Evaluasi dilakukan pada hasil pengujian
untuk menjawab rumusan masalah dalam penelitian ini.

4
1.7 Sistematika Penulisan

Sistematika penulisan merupakan gambaran singkat mengenai permasalahan yang akan


dibahas dalam penulisan ini, sehingga akan memperoleh gambaran yang jelas tentang isi
dari penulisan ini yang terdiri dari 5 bab, diantaranya:

BAB I PENDAHULUAN

Berisi latar belakang, rumusan masalah, batasan masalah, tujuan penelitian,


manfaat penelitian, tinjauan pustaka, dan sistematika penulisan

BAB II LANDASAN TEORI

Berisi tentang teori-teori yang mendasari penlitian ini yaitu mengenai keamanan
aplikasi web, SQL Injection, Joomla! CMS, Code Review, dan Penetration
Testing.

BAB III PERANCANGAN SISTEM

Berisi tentang deskripsi umum sistem, analisis kebutuhan sistem, dan


perancangan skenario pengujian aplikasi Joomla! CMS yang akan dilakukan

BAB IV IMPLEMENTASI DAN PENGUJIAN

Berisi tentang implementasi dan hasil pengujian aplikasi, dan analisis hasil
pengujian

BAB V KESIMPULAN DAN SARAN

Berisi tentang kesimpulan dan saran dari penelitian ini untuk pengembangan
penelitian selanjutnya.

5
BAB II
LANDASAN TEORI

2.1 Pengenalan Web


World Wide Web (WWW) atau yang lebih dikenal dengan sebutan web adalah salah
salah satu sumber daya Internet yang berisi informasi yang didistribusikan dengan
menggunakan pendekatan hypertext. Pendekatan hypertext adalah bagaimana suatu
teks dapat menjadi acuan untuk berpindah dari suatu dokumen ke dokumen lain. Web
telah berkembang pesat dan digunakan oleh orang diseluruh penjuru dunia mulai dari
lembaga-lembaga penelitian yang ingin mempublikasikan hasil riset, hingga digunakan
untuk transaksi bisnis dan mempromosikan suatu produk.

Sejarah perkembangan web dimulai pada bulan Maret tahun 1989 ketika Tim Berner-
Lee sedang bekerja di laboratorium Fisika Partikel Erope atau yang dikenal dengan
CERN (Consei European pour la Recherce Nuclaire) yang berada di Genewa,
Swiss. Berner-Lee mengajukan sebuah ide suatu tatacara dalam berkomunikasi
(protocol) sistem distribusi informasi pada Internet yang digunakan untuk bertukar
informasi antara para fisikawan. Protokol inilah yang selanjutnya dikenal dengan
protokol World Wide Consortium (W3C), yaitu konsorsium yang mengembangkan
berbagai standar yang berkaitan dengan web.

Website pada awalnya dibangun dengan menggunakan bahasa yang dikenal sebagai
HTML (HyperText Markup Language) dengan menggunakan protokol HTTP
(HyperText Transfer Protocol). Kemudian dikembangkan sejumlah skrip dan objek
untuk memperluas kemampuan HTML, seperti bahasa PHP dan ASP yang merupakan
server-side scripting dan Applet (Java) yang merupakan contoh objek. Ada dua jenis
aplikasi web, yaitu web statis dan web dinamis. Web statis adalah aplikasi web yang
kontennya diletakkan bersamaan dengan kode program aplikasi web tersebut, bersifat

6
statis karena jika ingin merubah konten maka juga harus membongkar program web
tersebut. Sedangkan web dinamis adalah aplikasi web yang kontennya disimpan di
dalam database, bersifat interaktif dan dinamis karena juga dapat berisi konten gambar,
animasi, dan konten multimedia lainnya serta konten dapat dimanipulasi dengan mudah
di database tanpa harus membongkar program webnya.

2.1.1 Keamanan Web


Keamanan web adalah proses mengamankan data rahasia yang disimpan secara online
dari akses dan modifikasi data yang tidak sah. Hal ini dilakukan dengan merapkan
langkah-langkah kebijakan yang ketat. Ancaman keamanan aplikasi web dapat
membahayakan data yang disimpan dan memungkinkan attacker dengan niat jahat
mencoba untuk mendapatkan akses ke informasi sensitif. Keamanan aplikasi web
bertujuan untuk memenuhi empat kondisi keamanan yang juga disebut dengan prinsip-
prinsip keamanan, yaitu:
a. Confidentiality: menyatakan bahwa data sensitif yang tersimpan di dalam
aplikasi web tidak dapat diakses oleh sembarang pihak yang tidak
berwenang dalam keadaan apapun
b. Integrity: menyatakan bahwa data yang terdapat dalam aplikasi web
adalah konsisten dan tidak dimodifikasi oleh pengguna yang tidak sah
c. Availability: menyatakan bahwa aplikasi web harus dapat diakses oleh
pengguna asli dalam jangka waktu tertentu sesuai dengan permintaan
d. Nonrepudiation: Menyatakan bahwa pengguna asli tidak dapat
menyangkal memodifikasi data yang terdapat dalam aplikasi web dan
aplikasi web dapat membuktikan identitasnya ke pengguna asli.
Proses analisis keamanan berjalan secara paralel dengan pengembangan aplikasi web.
Kelompok developer aplikasi web juga bertanggung jawab dalam pelaksanaan strategi,
analisis pasca risiko, mitigasi, dan monitoring.

7
2.2 Joomla!
Joomla! adalah sebuah Content Management System (CMS) yang dapat digunakan
untuk membangun situs web dan aplikasi online yang powerful. Banyak sekali aspek
kelebihan yang dimiliki Joomla! seperti penggunaan yang mudah dan dapat
dikembangkan sesuai keinginan, telah menjadikan Joomla! Sebagai perangkat lunak
situs web yang paling populer yang pernah ada. Yang terbaik dari semuanya, Joomla!
adalah solusi open source yang tersedia secara bebas dan gratis untuk semua orang.

2.3 SQL Injection


Tajpour (2010) menyebutkan jenis serangan SQL Injection memungkinkan penyerang
untuk menyisipkan kode Structured Query Language (SQL) ke dalam sebuah form
pada aplikasi web untuk mendapatkan akses atau melakukan perubahan pada data.
Menurut data dari The Open Web Application Security Project (OWASP) (Diakses
06 September 2016) SQL Injection adalah salah satu dari sepuluh jenis serangan yang
paling banyak terdapat pada aplikasi web.

Menurut Halfond dkk. (2006) serangan SQL Injection dapat diklasifikasikan menjadi
beberapa jenis, salah satu contoh jenis serangan dari SQL Injection adalah
Tautologies. Serangan ini bertujuan untuk baypassing authentication, identifying
injectable parameters, dan extracting data. Tujuan utamanya adalah untuk
menyisipkan kode ke dalam satu atau lebih statements kondisional sehingga akan selalu
menghasilkan nilai true. Contohnya yaitu seorang attacker dapat memasukkan nilai „ or
1=1 -- ke dalam login input field suatu aplikasi web tanpa memasukkan passwordnya.
Jika aplikasi web tersebut memiliki celah SQL Injection, maka proses dari SQL query-
nya adalah:

SELECT accounts FROM users WHERE login=‟„ or 1=1 --


AND pass=‟„

8
Kode yang diinjeksikan dalam pernyataan kondisional “OR 1=1” akan mengubah
keseluruhan klausa WHERE menjadi bernilai true atau bersifat tautologi. Hal ini dapat
terjadi karena 1=1 adalah sama dengan true dan simbol -- dalam SQL statements
menandakan bahwa query apapun setelah simbol tersebut akan dianggap komentar dan
tidak akan dieksekusi.

2.4 Code Review


Menurut Holzmann (2009) metode Code Review bertujuan untuk memastikan kode
dapat dimengerti dengan baik, terstruktur rapi, dan tidak adanya kecacatan dalam
desain dan pemrograman. Menurut Clarke (2012) terdapat dua metode utama dalam
menganalisis kelemahan pada suatu source code, yaitu dengan static code analysis dan
dynamic code analysis. Static code analysis adalah proses analisis source code tanpa
mengeksekusi kode program tersebut, sedangkan dynamic code analysis adalah
proses analisis kode pada saat program tersebut dijalankan.

Static code analysis secara manual berarti memeriksa source code baris-per-baris
untuk mengidentifikasi potensi celah keamanan pada kode terseut. Untuk aplikasi skala
besar yang memiliki jumlah kode yang sangat banyak, tentunya ini kurang efektif
dilakukan karena akan menghabiskan banyak waktu dan tenaga. Untuk kasus ini,
seorang security consultants atau developers biasanya membuat tools atau scripts
untuk mempermudah dan mempercepat dalam menganalisis kode yang sangat banyak,
atau alternatif lainnya yaitu dengan menggunakan tools yang telah dibuat oleh
developers secara khusus untuk melakukan analisis kode program dalam skala besar
ini. Beberapa open source static analysis code tools diantaranya seperti Grep dan
Awk yang terdapat pada sistem operasi turunan UNIX.

9
2.4.1 Code Review Tools
Clarke (2012) di dalam bukunya menjelaskan suatu proses Code Review secara
manual dilakukan dengan memeriksa setiap baris kode dengan menggunakan sebuah
text editor atau IDE (Integrated Development Environment). Namun, dengan
memeriksa menyeluruh membutuhkan sumber daya yang intensif, memakan waktu, dan
menjadi proses yang melelahkan. Untuk menghemat waktu dan agar dapat secara cepat
mengidentifikasi kode untuk yang untuk kemudian harus diperiksa kembali secara lebih
rinci, pendekatan yang paling sederhana adalah menggunakan tool Grep dan Awk.
Berikut adalah pengenalan dari masing-masing tool:
a. Grep
Grep adalah sebuah tool berbasis teks yang digunakan untuk pencarian teks
yang terdapat pada sistem operasi UNIX dan turunannya secara default,
seperti pada sistem operasi GNU/Linux dan OS X. Grep juga tersedia untuk
sistem operasi Windows dan dapat di download pada halaman website Grep.
Namun, jika lebih suka menggunakan tool yang secara khusus dibuat untuk
sistem operasi Windows dapat menggunakan perintah “findstr”, yang juga dapat
mencari pola teks dalam sebuah file menggunakan ekspresi reguler.
b. Awk
Tool lainnya yang dapat digunakan adalah Awk, yaitu sebuah bahasa
pemrograman dengan tujuan umum yang dirancang untuk pengolahan data
berbasis teks, baik dalam sebuah file atau data stream. Awk juga dapat
ditemukan pada kebanyakn sistem operasi turunan UNIX secara default. Tool
ini juga tersedia untuk Windows dengan nama Gawk (GNU awk).

2.5 Penetration Testing


Menurut Xynos (2010) Penetration Testing adalah sebuah proses yang sistematis dan
secara aktif menguji sebuah jaringan untuk menentukan kerentanan apa saja yang
mungkin ditemukan dan membuat laporan yang berisi rekomendasi untuk mengurangi

10
ataupun mengatasi kerentanan tersebut. Berbeda dengan penjahat dunia maya (cyber
criminal), seorang Penetration Tester sebelumnya telah mendapatkan izin dari pemilik
sumber daya komputasi yang sedang diuji dan akan bertanggung jawab untuk
memberikan sebuah laporan. Tujuan dari Penetration Testing adalah untuk
meningkatkan keamanan komputasi sumber daya yang sedang diuji. Allen dkk. (2014)
dalam bukunya menjelaskan meskipun ada berbagai jenis Penetration Testing, ada
dua pendekatan umum yang diterima secara luas oleh industri yaitu black box dan
white box.
a. Black box testing
Selama menerapkan pendekatan ini, seorang auditor keamanan akan menilai
infrastruktur jaringan dan tidak akan dapat mengetahui setiap teknologi internal
yang digunakan oleh organisasi yang ditargetkan. Dengan menggunakan
sejumlah teknik yang digunakan oleh hacker di dunia nyata dan melalui tahapan
tes yang dilakukan, kerentanan dapat ditemukan dan berpotensi untuk
dieksploitasi. Setelah proses pengujian selesai dilakukan, dibuatlah sebuah
laporan yang berisi semua informasi yang diperlukan mengenai postur keamanan
dunia nyata dari target, mengkategorikan dan menerjemahkan risiko yang telah
diidentifikasi ke dalam konteks bisinis. Black box testing bisa menjadi layanan
yang lebih mahal daripada white box testing
b. White box testing
Seorang auditor keamanan yang terlibat dalam proses white box testing harus
menyadari semua teknologi internal mendasar yang digunakan oleh lingkungan
target. Oleh karena itu, lebih mudah bagi seorang penetration tester dalam
mengevaluasi secara kritis kerentanan keamanan dengan kemungkinan upaya
yang minimal dan akurasi yang maksimal. Langkah-langkah yang digunakan
pada pendekatan white box testing mirip dengan langkah-langkah pada black
box testing. Pendekatan ini sangat efektif untuk memberantas masalah
keamanan yang mungkin terjadi pada tahap awal sebelum masalah keamanan

11
tersebut ditemukan dan dimanfaatkan oleh attackers. Waktu, biaya, dan tingkat
pengetahuan yang diperlukan untuk menemukan dan mengatasi kerentanan
keamanan dapat dikatakan lebih sedikit daripada dengan menggunakan
pendekatan black box testing.

2.5.1 Penetration Testing Tools


Penetration Testing dapat dilakukan lebih mudah, cepat dan efektif dengan
menggunakan sistem operasi yang dikhususkan untuk melakukan Penetration Testing,
yaitu Kali Linux. Di dalamnya telah terdapat ratusan automated penetration tools
seperti Nmap, SQLMAP, Metasploit, dan masih banyak lagi untuk memudahkan dalam
melakukan Penetration Testing. Menurut Allen dkk. (2014) Kali Linux adalah sebuah
platform Penetration Testing dan audit keamanan dengan tools yang canggih yang
digunakan untuk mengidentifikasi, mendeteksi, dan mengeksploitasi kerentanan yang
ditemukan di lingkungan jaringan terget. Dengan menerapkan metodologi pengujian yang
tepat dilengkapi dengan tujuan bisnis yang didefinisikan dengan baik dan rencana uji
yang terjadwal akan menghasilkan sebuah Penetration Testing yang kuat pada suatu
jaringan. Berikut adalah tools yang digunakan dalam melakukan pengujian metode
Penetration Testing:
a. W3af
W3af adalah sebuah Web Application Attack and Audit Framework
yang dapat digunakan untuk menemukan celah keamanan pada aplikasi
web. Aplikasi ini merupak sebuah projek open source yang dibangun
dengan bahasa Python dan dibawah lisensi GPLv2.0. Tujuan dari projek ini
adalah untuk membuat suatu framework yang dapat membantu
mengamankan aplikasi web dengan cara menemukan dan mengeksploitasi
seluruh celah keamanan yang ada pada aplikasi web.

12
b. OWASP ZAP
The OWASP Zed Attack Proxy (ZAP) adalah salah satu dari sekian
banyak free security tool dan dikembangkan oleh banyak orang di seluruh
dunia karena sifatnya yang open source. Tool ini dapat membantu
pengembang web dalam menemukan celah keamanan pada aplikasi web
secara otomatis. Tool ini juga sangat berguna bagi penetration testers
profesional dalam melakukan manual security testing.
c. Vega
Vega Vulnerability Scanner adalah sebuah web scanner yang bersifat free
and open source yang merupakan testing platform untuk mengetes
keamanan suatu aplikasi web. Vega dapat mendeteksi celah keamanan SQL
Injection, Cross-Site Scripting (XSS), inadvertently disclosed sensitive
information, dan celah keamanan lainnya. Tool ini dibangun menggunakan
bahasa Java dan berbasis GUI.
d. Acunetix WVS
Acunetix Web Vulnerability Scanner adalah sebuah web scanner yang
bersifat commercial tool dan sangat banyak digunakan orang di seluruh
dunia dikarenakan kehandalannya dalam mendeteksi celah keamanan pada
aplikasi web. Acunetix dapat melakukan scan dan crawling aplikasi web
dan mendeteksi SQL Injection, XSS, XXE, SSRF, Host Header Attacks,
dan lebih dari 3000 celah keamanan web lainnya.
e. SQLMAP
SQLMAP adalah sebuah penetration testing tool yang bersifat open
source yang dapat mendeteksi dan mengeksploitasi secara otomatis celah
keaman SQL Injection dan dapat mengambil alih database server.
SQLMAP adalah aplikasi berbasis Command Line Interface (CLI),
sehingga hanya dapat dijalankan pada konsol terminal.

13
BAB III
PERANCANGAN SISTEM

3.1 Spesifikasi Perangkat Keras


Pada tahap pengujian dalam penelitian ini akan digunakan beberapa perangkat keras,
diantaranya adalah 1 buah laptop dengan spesifikasi perangkat keras yang dijelaskan
pada Tabel 3.1.

Tabel 3.1 Spesifikasi perangkat keras


Hardware
Platform Laptop
Manufacture TOSHIBA
Model Satellite L745
Type x64-based PC
Processor Intel(R) Core(TM) i5-2410M CPU @
2.30GHz (4CPUs), ~2.3GHz
Memory 4 GBytes DDR3
HDD 600 GBytes
Graphics NVIDIA GeForce GT 525M

3.2 Spesifikasi Perangkat Lunak


Pada tahap pengujian dalam penelitian ini akan digunakan beberapa perangkat lunak
seperti sistem operasi, aplikasi web, code review tools, dan beberapa automated
penetration testing tools. Spesifikasi perangkat lunak yang digunakan dalam penelitian
ini tertera pada Tabel 3.2.

14
Tabel 3.2 Spesifikasi perangkat lunak

Operating System Software


Joomla! CMS 3.2.1
Grep 2.22
Awk 1.3.3
Kali Linux 2.0 W3af 1.6.54
OWASP ZAP 2.4.3
Vega 1.0
SQLMAP 1.0
Joomla! CMS 3.2.1
Microsoft Windows 7 Home Premium
Acunetix WVS 10.5

3.3 Metode Penelitian


Penelitian ini memiliki beberapa tahapan yang dilalui hingga mencapai hasil penelitian
yang diinginkan. Berikut adalah tahapan – tahapan penelitian yang tersaji pada Gambar
3.1.

Gambar 3.1 Tahapan penelitian

15
Pada tahapan pertama studi literatur yaitu mengumpulkan bahan, menentukan objek
penelitian, mencari informasi, dan materi dari jurnal, buku, dan situs di internet.
Kemudian berlanjut ke tahap perancangan model pengujian metode Code Review dan
Penetration Testing. Setelah itu, melakukan pengujian terhadap rancangan model
metodologi Code Review, kemudian pengujian terhadap metode Penetration Testing
dalam mendeteksi celah keamanan SQL Injection pada objek penelitian. Tahapan
terakhir yaitu menyimpulkan hasil penelitian, lalu menganalisis hasil tersebut untuk
menjawab tujuan penelitian.

3.3.1 Studi Literatur


Pada tahap ini adalah tahap awal mulai dari mengumpulkan bahan penelitian, mencari
informasi, dan materi dari jurnal, buku, dan situs di Internet. Kemudian menentukan
aplikasi web yang memiliki kemungkinan celah keamanan SQL Injection untuk
dijadikan objek penelitian. Pencarian data dilakukan dengan menggunakan mesin
pencari dan juga website yang memberikan informasi tentang celah keamanan SQL
Injection yang ditemukan diberbagai jenis aplikasi web. Penelitian ini menggunakan
aplikasi web CMS Joomla! versi 3.2.1 sebagai objek penelitian dengan alasan sebagai
berikut:
a. Menurut halaman resmi Joomla! pada URL http://joomla.org/, Joomla!
tersedia secara gratis dan bersifat open source. Sehingga dapat bebas
melihat source code dalam melakukan Code Review.
b. Menurut data dari W3Tech Web Technology Surveys (2016), Joomla!
menempati urutan ke-dua sebagai CMS yang paling banyak digunakan
untuk berbagai tujuan pembuatan aplikasi web.
c. Sebagai salah satu CMS yang paling banyak digunakan, ternyata masih
ditemukan celah keamanan SQL Injection di beberapa versi Joomla!.
Menurut data dari Trustwave: Smart Security on Demand (2015)

16
ditemukan celah keamanan SQL Injection pada Joomla! versi 3.2 hingga
versi 3.4.4.

3.3.2 Perancangan Model


OWASP Code Review Project (2013) memperkenalkan pendekatan 360 Review dan
akan digunakan pada penelitian ini, dimana nantinya tahapan pertama yaitu pengujian
metode Code Review untuk menemukan celah keamanan SQL Injection, kemudian
hasilnya digunakan kembali untuk merencanakan pengujian metode Penetration
Testing. Hasil dari pengujian Penetration Testing kemudian digunakan sebagai
informasi tambahan pada hasil pengujian Code Review. Alur proses pendekatan ini
dapat dilihat pada Gambar 3.2.

Gambar 3.2 360 review approach


(https://www.owasp.org/index.php/CRV2_360Review)

Menurut The Open Web Application Security Project (2013) sebuah Penetration
Testing yang menggunakan Code Review sebagai masukan untuk perencanaan adalah
termasuk ke dalam jenis white box testing. Pendekatan ini dapat menyebabkan proses
Penetration Testing lebih produktif, karena pengujian dapat difokuskan pada bagian
yang dicurigai saja atau bahkan kelemahan yang telah diketahui sebelumnya dari proses
Code Review. Dengan pengetahuan yang spesifik seperti struktur kode dan jenis
framework yang digunakan, libraries, dan bahasa pemrograman pada target aplikasi,

17
Penetration Testing dapat berkonsentrasi pada kelemahan yang ada pada bagian-
bagian tersebut.

Sebuah white box Penetration Testing juga dapat digunakan dalam menetapkan risiko
yang sebenarnya ditimbulkan oleh suatu celah keamanan yang ditemukan melalui Code
Review. Sebuah celah keamanan yang ditemukan saat proses Code Review mungkin
saja tidak exploitable ketika diuji dalam proses Penetration Testing. Hal ini dapat
disebabkan oleh proses Code Review yang tidak lengkap, seperti tidak ditemukannya
validasi input pada kode, namun ternyata validasi tersebut sudah ada sehingga celah
keamanan yang ditemukan menjadi false negative.

3.3.3 Pengujian Metode Code Review


Clarke (2012) di dalam bukunya menjelaskan untuk melakukan source Code Review
yang efektif dan mengidentifikasi semua potensi celah SQL Injection, dibutuhkan
kemampuan untuk mengenali perilaku pemrograman yang berbahaya (dangerous
coding behaviors), mengidentifikasi fungsi-fungsi keamanan yang sensitif, mencari
seluruh metode potensial yang digunakan untuk menangani masukan yang dikendalikan
pengguna (user-controlled input), lalu melacak data yang telah disusupi (tainted data)
kembali ke asal data tersebut melalui jalur eksekusi atau aliran data. Clarke
menyebutkan tahapan-tahapan yang dilakukan dalam melakukan Code Review untuk
mengidentifikasi celah keamanan SQL Injection. Penelitian ini menggunakan tahapan
yang telah dijelaskan oleh Clarke (2012), yaitu menggunakan tools Grep dan Awk yang
terdapat pada sistem operasi Kali Linux 2.0 untuk mempermudah melakukan Code
Review. Tahap pengujian dengan metode Code Review disajikan dalam Gambar 3.3.

18
Gambar 3.3 Tahapan code review

a. Dangerous Coding Behaviors


Sebuah tahapan Code Review dimulai dengan mengidentifikasi fungsi yang
digunakan untuk membangun dan menjalankan SQL statements (sinks) dengan
masukan yang dikendalikan oleh pengguna (user-controlled input) yang
berpotensi telah disusupi (tainted)
b. Entry Points
Kemudian mengidentifikasi entry points dari data yang dikendalikan oleh
pengguna (user-controlled data) yang sedang diteruskan ke fungsi-fungsi ini
(sink sources)
c. Following the Data
Tahapan terakhir yaitu melacak user-controlled data melalui aliran eksekusi
aplikasi untuk memastikan apakah terdapat data yang telah disusupi (tainted
data) saat mencapai fungsi tersebut (sink)
d. Reporting
Pada tahapan ini yaitu membuat laporan hasil pengujian ke dalam bentuk suatu
report yang berisi nama file dan baris dari celah keamanan yang ditemukan,
serta injection URL yang seharusnya dapat dieksploitasi. Template Code
Review Report dapat dilihat pada Tabel 3.3.

19
Tabel 3.3 Code review report template

Vulnerability Founds
No Injection URL
File Name Line
1 http://localhost/vuln.php 11 http://localhost/vuln.php?input=1
2 http://localhost/vuln2.php 12 http://localhost/vuln2.php?id=1
3 http://localhost/vuln3.php 13 http://localhost/vuln3.php?no=1

3.3.4 Pengujian Metode Penetration Testing


Tahapan yang dilakukan adalah sesuai dengan yang dijelaskan oleh Ansari (2015) di
dalam bukunya tentang tahapan dalam melakukan Penetration Testing. Tahapan
pengujian metode Penetration Testing disajikan di dalam Gambar 3.4.

Gambar 3.4 Tahapan penetration testing

a. Scanning for SQL Injection


Langkah pertama yang harus dilakukan pada tahap ini yaitu memeriksa input
fields dalam bentuk HTML forms, parameter skrip pada URL query strings,
nilai-nilai yang tersimpan di cookie, dan fields yang tersembunyi. Setelah

20
semuanya diidentifikasi, selanjutnya melakukan fuzz data dengan menginjeksi
metakarakter, SQL statements, operators, dan reserved words. Keseluruhan
langkah ini dapat dilakukan secara otomatis dengan bantuan automated
penetration tools, yaitu pada penelitian ini menggunakan OWASP ZAP, W3af,
Vera, dan Acunetix WVS.
b. Information gathering
Dikarenakan SQL syntax bervariasi untuk setiap jenis database systems, kita
harus mengidentifikasi jenis database dan versinya sebelum beralih ke proses
eksploitasi. Pesan kesalahan (error messages) akan membantu dalam
mengidentifikasi jenis database apa yang digunakan oleh target aplikasi. Jika
pesan kesalahan tidak cukup deskriptif, hal lain yang dapat dilakukan adalah
menebak berdasarkan pada jenis web server dan sistem operasi yang
digunakan. Contohnya sebuah web server Apache di GNU/Linux lebih
cenderung menggunakan MySQL database daripada menggunakan MS SQL.
Langkah ini juga dapat kita lakukan secara otomatis dengan tool SQLMAP.
c. Extracting data
Pada tahap ini yaitu melakukan ekstraksi data dengan SQL statements tertentu
pada sistem database target aplikasi untuk mencari informasi yang dapat
berguna pada tahap selanjutnya. Informasi tersebut seperti nama database,
jumlah tabel dan kolom, dan letak persis data-data sensitif pada database.
Langkah ini juga dapat kita lakukan secara otomatis dengan tool SQLMAP.
d. Exploiting the database server
Pada tahapan terakhir yaitu tahap eksploitasi database server untuk
mendapatkan kontrol penuh terhadap keseluruhan sistem database pada
server. Eksploitasi dilakukan untuk mendapatkan data sensitif pada backend
database hingga menjalankan shell commands untuk melakukan take over
server. Langkah ini juga dapat kita lakukan secara otomatis dengan tool
SQLMAP.

21
e. Reporting
Pada tahapan ini yaitu mengumpulkan seluruh report dari masing-masing web
vulnerability scanner tools. Kemudian seluruh hasil pengujian digabungkan ke
dalam suatu Penetration Testing Report. Laporan ini berisi URL celah
keamanan yang ditemukan beserta keterangan metode mana saja yang
menemukannya, serta status celah tersebut apakah terbukti dapat dieksploitasi
(correct vulnerability) atau hanya kesalahan deteksi (false positive) yang
ditandai dengan simbol centang (v). Template Penetration Testing Report
dapat dilihat pada Tabel 3.4.

Tabel 3.4 Penetration testing report template

Automated Web Scanner Code


No Vulnerability Founds Correct
ZAP W3af Vega Acunetix Review
1 http://target.com?id=
2 http://target.com?item=
3 http://target.com?no=

3.3.5 Evaluasi
Pada tahap ini dilakukan evaluasi terhadap hasil penelitian yang dilakukan dengan
menggabungkan dan melakukan perbandingan report hasil temuan celah keamanan
SQL Injection dari masing-masing metode yang telah diuji. Parameter yang digunakan
dalam menganalisis report tersebut adalah jumlah temuan celah keamanan SQL
injection, jumlah celah keamanan yang terbukti berhasil dieksploitasi (correct
vulnerability), jumlah celah keamanan yang tidak berhasil dieksploitasi (false positive),
dan jumlah celah keamanan yang telah diketahui (known vulnerability) namun tidak
berhasil terdeteksi (false negative). Tahap terakhir adalah membuat kesimpulan
terhadap hasil pengujian dan evaluasi yang telah dilakukan, lalu menjawab pertanyaan
penelitian. Hasil penggabungan report dari masing-masing metode dapat dilihat pada
Tabel 3.5.

22
Tabel 3.5 Combined report template
Code Penetration Testing
No Vulnerabilities Founds Correct
Review ZAP W3af Vega Acunetix
1 http://target.com?id=
2 http://target.com?name=
3 http://target.com?search=
Detected
Corrects
False Positive
False Negative
Total Detected
Total Corrects

23
BAB IV
PENGUJIAN DAN ANALISIS

4.1 Implementasi Pengujian Code Review


Implementasi pengujian metode Code Review dilakukan dengan memeriksa baris-per-
baris source code objek penelitian dengan menggunakan bantuan tools yang terdapat
pada sistem operasi Kali Linux 2.0, yaitu Grep dan Awk. Tools ini berbasis Command
Line Interface (CLI), sehingga hasil dari pemeriksaan akan ditampilkan pada konsol
terminal Kali Linux 2.0. Pemeriksaan source code dilakukan dengan perintah berikut:

grep –r –n “kata kunci pencarian” folder_joomla/ |


awk –F: „{print “filename: “$1”\nline: “$2”\nmatch:
“$3”\n\n

Perintah diatas memerintahkan Grep untuk mencari baris kode yang sesuai dengan kata
kunci pencarian yang telah ditentukan. Kemudian hasil pencarian tersebut ditampilkan
langsung pada layar terminal beserta dengan nama file dan informasi baris (line number)
dari kode tersebut dengan bantuan Awk.

4.1.1 Hasil Tahapan Dangerous Coding Behaviors


Pada tahapan awal ini menghasilkan kesimpulan bahwa tidak ditemukan kriteria umum
penulisan kode yang berbahaya. Hal ini ditandai dengan hasil pencarian Grep tidak
menemukan variabel global $_GET ataupun $_POST pada SQL statement query di
struktur source code Joomla!. Hal yang menyebabkan ini terjadi akan dijelaskan pada
hasil tahapan selanjutnya. Hasil tahapan ini dapat dilihat pada Gambar 4.1.

Gambar 4.1 Tahapan dangerous coding behaviors

24
4.1.2 Hasil Tahapan Entry Points
Tahapan ini menemukan beberapa data berupa variabel yang berisi user-controlled
data yang sedang diteruskan ke fungsi-fungsi SQL statement, contohnya variabel
$feed_id yang ditemukan di dalam klausa “WHERE” pada fungsi mysql_query.
Perintah yang digunakan pada tahapan ini yaitu:

grep –r –n “mysql_query(\|mysql_db_query(”
joomla321/ | awk –F: „{print “filename: “$1”\nline:
“$2”\nmatch: “$3”\n\n

Hasil tahapan ini dapat dilihat pada Gambar 4.2.

Gambar 4.2 Tahapan entry points

4.1.3 Hasil Tahapan Following the Data


Tahapan ini melanjutkan tahapan sebelumnya, yaitu melacak user-controlled data
melalui aliran eksekusi aplikasi untuk memastikan apakah terdapat data yang telah
disusupi (tainted data) saat mencapai fungsi tersebut (sink). Tahapan ini menemukan
bahwa variabel $feed_id yang sebelumnya ditemukan sebagai entry point dari data
yang dimasukkan oleh pengguna, ternyata telah dilakukan validasi menggunakan fungsi
mysql_real_escape_string(). Hal ini dapat dilihat pada Gambar 4.3.

Gambar 4.3 Tahapan following the data

Setelah melakukan riset yang mendalam terhadap struktur source code dari Joomla!,
ditemukan bahwa ternyata Jomla! memiliki mekanisme tersendiri dalam menangani

25
request data dari pengguna, yaitu menggunakan JInput class. Hal inilah yang
menyebabkan tidak ditemukannya variabel global $_GET atau $_POST dalam struktur
kode Joomla! pada tahapan sebelumnya. Contoh penggunaan JInput class yaitu:

$input = Jfactory::getApplication()->input;
$input->getInt(„id‟); //Get data parameter „id‟

Dengan mengetahui fakta ini, maka dilakukan pencarian kembali terhadap user-
controlled data. Pencarian kali ini menggunakan kata kunci berdasarkan contoh
penggunaan perintah Jinput class untuk memastikan apakah terdapat data yang mungkin
telah disusupi (tainted data). Pilihan berbagai kata kunci pencarian adalah berdasarkan
kecendrungan umum dalam pemrograman, yaitu selalu mendefinisikan suatu data
ataupun perintah ke dalam suatu variabel. Sehingga dapat ditentukan beberapa
kemungkinan kata kunci yang dapat menemukan user-controlled data, seperti:

“JFactory::getApplication()->input->getInt(“
“$input->getInt("

Tampilan hasil pencarian salah satu kata kunci yang dapat menemukan user-controlled
data dapat dilihat pada Gambar 4.4.

Gambar 4.4 Hasil pencarian user-controlled data

4.1.4 Code Review Report


Pada tahapan terkahir ini seluruh kemungkinan celah keamanan SQL injecion
dikumpulkan ke dalam bentuk suatu report. Code Review Report terdiri dari:
a. Vulnerability Founds
Terbagi menjadi dua keterangan, yaitu keterangan nama file celah keamanan
berada dan keterangan baris ke berapa celah tersebut ditemukan

26
b. Injection URL
Keterangan ini menentukan bagian URL yang mana yang kemudian dapat
dieksploitasi berdasarkan celah keamanan yang ditemukan.
Code Review Report dapat dilihat pada Tabel 4.1.

Tabel 4.1 Code review report

Vulnerability Founds
No Injection URL
File Name Line
joomla321/modules/mod_articles_categ http://localhost/tugasakhir/joomla321/index.php/article-
1
ory/mod_articles_category.php 33 categories?id=
joomla321/components/com_weblink http://localhost/tugasakhir/joomla321/index.php/weblinks
2
s/controllers/weblink.php 258 -component?id=1
joomla321/components/com_weblink http://localhost/tugasakhir/joomla321/index.php/weblinks
3
s/models/categories.php 52 -categories?id=
joomla321/components/com_newsfee http://localhost/tugasakhir/joomla321/index.php/new-
4
ds/models/categories.php 52 feed-categories?id=
joomla321/components/com_contact/ http://localhost/tugasakhir/joomla321/index.php/contact-
5
models/categories.php 52 categories?id=1

Dari hasil report diatas dapat disimpulkan bahwa pengujian metode Code Review
menemukan lima celah keamanan SQL injection pada source code Joomla! 3.2.1
beserta injection URL-nya untuk dapat dieksploitasi lebih lanjut pada tahapan
pengujian metode Penetration Testing. Empat celah keamanan ditemukan pada bagian
Joomla! component, dan satu celah keamanan ditemukan pada bagian modules yang
mengatur katagori articles.

4.2 Implementasi Pengujian Penetration Testing


Implementasi pengujian metode Penetration Testing dilakukan dengan menggunakan
empat automated web vulnerability scanner. Sebanyak tiga tools bersifat open
source dan satu tool yang bersifat commercial tools. Pemilihan berbagai web scanner
tools yang berbeda jenis ini dimaksudkan agar hasil pengujian dapat lebih akurat dan
dapat mendeteksi keseluruhan celah keamanan SQL Injection yang ada. Setelah proses

27
scanning selesai, tool SQLMAP digunakan untuk mengeksploitasi seluruh hasil temuan
celah keamanan. Keterangan tools yang digunakan selama proses penetration testing
dapat dilihat pada Tabel 4.2.

Tabel 4.2 Penetration testing tools


No Tool Name Type OS
1 W3af (GUI) open source Kali Linux 2.0
2 OWASP ZAP open source Kali Linux 2.0
3 Vega open source Kali Linux 2.0
4 Acunetix WVS commercial Windows 7 Home Premium
5 SQLMAP open source Kali Linux 2.0

4.2.1 Hasil Pemindaian OWASP ZAP


Pemindaian yang dilakukan menggunakan OWASP ZAP hanya mendeteksi satu celah
keamanan SQL injection saja. Celah keaman ini ditemukan pada parameter “id” yang
bertipe integer, sehingga dapat dieksploitasi injection URL-nya pada tahapan
berikutnya. Hasil pemindaian OWASP ZAP menemukan celah yang paling sedikit
diantara ketiga tools lainnya. Hasil pemindaian dapat dilihat pada Tabel 4.3.

Tabel 4.3 Hasil pemindaian OWASP ZAP


No Injection URL Parameter
http://localhost/tugasakhir/joomla321/index.php/park-
1 id
links?id=9-2&task=weblink.go

4.2.2 Hasil Pemindaian W3af


Pemindaian yang dilakukan menggunakan W3af mendeteksi empat celah keamanan
SQL Injection. Celah keamanan ini seluruhnya ditemukan pada parameter “id” yang
menampung request data bertipe integer, sehingga dapat dieksploitasi injection URL-
nya pada tahapan berikutnya. Hasil pemindaian dapat dilihat pada Tabel 4.4.

28
Tabel 4.4 Hasil pemindaian W3af
No Injection URL Parameter
http://localhost/tugasakhir/joomla321/index.php/weblinks-
1 id
categories?id=1
http://localhost/tugasakhir/joomla321/index.php/new-feed-
2 id
categories?id=1
http://localhost/tugasakhir/joomla321/index.php/archived-
3 id
articles?month=1&id=1
http://localhost/tugasakhir/joomla321/index.php/archived-
4 id
articles?month=1&id=1&view=archive

4.2.3 Hasil Pemindaian Vega


Pemindaian yang dilakukan menggunakan Vega ternyata juga mendeteksi empat celah
keamanan SQL Injection. Namun, celah keamanan ditemukan diberbagai parameter
yang berbeda. Satu celah keamanan ditemukan pada parameter ”print”, satu celah
keamanan lainnya ditemukan pada parameter “page”, dan dua celah lainnya ditemukan
pada parameter “id” yang semuanya meanampung request data bertipe integer,
sehingga dapat dieksploitasi injection URL-nya pada tahapan berikutnya. Hasil
pemindaian dapat dilihat pada Tabel 4.5.

Tabel 4.5 Hasil pemindaian Vega


No Injection URL Parameter
http://localhost/tugasakhir/joomla321/index.php/menu?
1 print
tmpl=component&print=1
http://localhost/tugasakhir/joomla321/index.php/menu?
2 page
tmpl=component&print=1&page=1
http://localhost/tugasakhir/joomla321/index.php/new-feed-
3 id
categories?id=0
http://localhost/tugasakhir/joomla321/index.php/weblinks-
4 id
categories?id=18

29
4.2.4 Hasil Pemindaian Acunetix WVS
Pemindaian yang dilakukan menggunakan Acunetix WVS mendeteksi 17 celah
keamanan SQL Injection. Celah keamanan ini seluruhnya ditemukan pada parameter
“id” yang menampung request data bertipe integer, sehingga dapat dieksploitasi
injection URL-nya pada tahapan berikutnya. Acunetix adalah web scanner yang paling
banyak menemukan celah keamanan SQL Injection dibandingkan ketiga tools yang
lain. Hasil pemindaian dapat dilihat pada Tabel 4.6.

Tabel 4.6 Hasil pemindaian Acunetix WVS


No Injection URL Parameter
1 http://localhost/tugasakhir/joomla321/index.php/?id=1 id
2 http://localhost/tugasakhir/joomla321/index.php/archived-articles/?id=1 id
http://localhost/tugasakhir/joomla321/index.php/archived-
3 id
articles?id=1&month=1
http://localhost/tugasakhir/joomla321/index.php/archived-
4 id
articles?id=1&month=1&view=archive
5 http://localhost/tugasakhir/joomla321/index.php/article-categories/?id=1 id
http://localhost/tugasakhir/joomla321/index.php/article-category-list/21-
6 id
extensions/?id=1
http://localhost/tugasakhir/joomla321/index.php/article-category-list/22-
7 id
extensions/?id=1
http://localhost/tugasakhir/joomla321/index.php/article-category-list/66-
8 id
extensions/?id=1
http://localhost/tugasakhir/joomla321/index.php/article-category-list/67-
9 id
extensions/?id=1
10 http://localhost/tugasakhir/joomla321/index.php/component/content/?id=1 id
11 http://localhost/tugasakhir/joomla321/index.php/component/search/?id=1 id
12 http://localhost/tugasakhir/joomla321/index.php/image-gallery/?id=1 id
13 http://localhost/tugasakhir/joomla321/index.php/index.php/?id=1 id
14 http://localhost/tugasakhir/joomla321/index.php/new-feed-categories?id=1 id
15 http://localhost/tugasakhir/joomla321/index.php/using-joomla/?id=1 id
16 http://localhost/tugasakhir/joomla321/index.php/using-joomla/extensions/?id=1 id
17 http://localhost/tugasakhir/joomla321/index.php/weblinks-categories?id=1 id

30
4.2.5 Eksploitasi dengan SQLMAP
Seluruh hasil temuan celah keamanan SQL injection dari proses pengujian metode
Code Review dan automated web vulnerability scanner dieksploitasi menggunakan
tool SQLMAP. SQLMAP melakukan tahapan extracting data dan exploiting the
database server sekaligus dengan menginjeksi secara otomatis injection URL seluruh
celah keamanan yang telah ditemukan. SQLMAP menentukan apakah suatu injection
URL tersebut adalah suatu celah yang terbukti dapat dieksploitasi (correct
vulnerability) atau hanya sebuah kesalahan deteksi (false positive).

Suatu celah dikatakan berhasil dieksploitasi apabila SQLMAP dapat mengekstraksi


data penting dari database sever seperti username dan password login admin control
panel. Celah keamanan yang terbukti dapat dieksploitasi dapat dilihat pada Gambar
4.5.

Gambar 4.5 Correct vulnerability

Sedangkan celah keamanan dikatakan sebagai kesalahan deteksi (false positive) jika
SQLMAP menghasilkan output seperti Gambar 4.6.

Gambar 4.6 False positive vulnerability

31
4.2.6 Penetration Testing Report
Pada tahapan terkahir ini seluruh kemungkinan celah keamanan SQL injecion dari
pengujian metode Code Review dan Penetration Testing dikumpulkan ke dalam
bentuk satu report. Penetration Testing Report terdiri dari:
a. Vulnerability Founds
Bagian ini berisi injection URL bersama dengan vulnerable parameter
dari seluruh hasil web scanner dan juga hasil dari Code Review
b. Automated Web Scanner
Bagian ini terdiri dari kolom ZAP, W3af, Vega, dan Acunetix. Pada bagian
ini adalah merupakan suatu check lists keberhasilan deteksi dari masing-
masing web scanner. Untuk setiap vulnerability founds yang berhasil di
deteksi diberikan tanda (v) pada kolom web scanner-nya
c. Code Review
Bagian ini adalah kolom check lists dari keberhasilan deteksi metode Code
Review yang juga diberi tanda (v) pada kolom ini jika vulnerability founds
juga terdeteksi pada pengujian metode ini
d. Correct
Bagian ini adalah check lists dari status sebuah vulnerability yang
ditemukan apakah terbukti berhasil dieksploitasi oleh SQLMAP (correct
vulnerability) atau tidak berhasil dieksploitasi sehingga hanya sebuah
kesalahan deteksi (false positive).
Hasil dari keseluruhan pengujian metode Penetration Testing sebanyak 25
vulnerability founds dan 17 correct vulnerabilies. Sebanyak 20 vulnerability
founds dideteksi oleh keempat automated web scanner dan 5 vulnerability founds
dideteksi oleh metode Code Review. Tampilan hasil dari Penetration Testing Report
yang menampilkan lima dari total 25 vulnerability founds dapat dilihat pada Tabel 4.7.
Untuk hasil tabel selengkapnya dapat dilihat pada lampiran.

32
Tabel 4.7 Hasil penetration testing report

Automated Web Scanner Code


No Vulnerability Founds Correct
ZAP W3af Vega Acunetix Review
http://localhost/tugasakhir/jo
omla321/index.php/park-
1 v
links?id=9-
2&task=weblink.go
http://localhost/tugasakhir/jo
2 omla321/index.php/weblink v v v v v
s-categories?id=0
http://localhost/tugasakhir/jo
3 omla321/index.php/new- v v v v v
feed-categories?id=0
http://localhost/tugasakhir/jo
4 omla321/index.php/article- v v v
categories?id=
http://localhost/tugasakhir/jo
5 omla321/index.php/weblink v v
s-component?id=1

4.3 Implementasi Evaluasi


Pada tahap ini dilakukan evaluasi terhadap keseuluhan hasil penelitian yang telah
dilakukan dengan melakukan perbandingan report hasil temuan celah keamanan SQL
Injection dari masing-masing metode yang telah diuji. Parameter yang digunakan
dalam menganalisis report tersebut adalah jumlah temuan celah keamanan SQL
injection, jumlah celah keamanan yang terbukti berhasil dieksploitasi (correct
vulnerability), jumlah celah keamanan yang tidak berhasil dieksploitasi (false positive),
dan jumlah celah keamanan yang telah diketahui (known vulnerability) namun tidak
berhasil terdeteksi (false negative). Tahap terakhir adalah membuat kesimpulan
terhadap hasil pengujian dan evaluasi yang telah dilakukan, lalu menjawab pertanyaan
penelitian.

33
4.3.1 Hasil Combined Report
Pada tahapan ini seluruh celah keamanan SQL injecion dari pengujian metode Code
Review dan Penetration Testing digabungkan ke dalam bentuk suatu Combined
Report. Untuk setiap vulnerability yang ternyata ditemukan oleh kedua pengujian
metode, kali ini hanya ditampilkan sebagai satu vulnerability saja pada Combined
Report. Combined Report terdiri dari beberapa bagian, yaitu:
a. Vulnerability Founds
Bagian ini berisi gabungan injection URL bersama dengan vulnerable
parameter dari seluruh hasil web scanner dan hasil dari Code Review
b. Code Review
Bagian ini adalah kolom check lists dari keberhasilan deteksi metode Code
Review yang juga diberi tanda (v) pada kolom ini jika vulnerability founds
terdeteksi pada pengujian metode ini
c. Penetration Testing
Bagian ini terdiri dari kolom ZAP, W3af, Vega, dan Acunetix. Pada bagian
ini adalah merupakan suatu check lists keberhasilan deteksi dari masing-
masing web scanner. Untuk setiap vulnerability founds yang berhasil di
deteksi diberikan tanda (v) pada kolom web scanner-nya
d. Correct
Bagian ini adalah check lists dari status sebuah vulnerability yang
ditemukan apakah terbukti berhasil dieksploitasi oleh SQLMAP (correct
vulnerability) atau tidak berhasil dieksploitasi sehingga hanya sebuah
kesalahan deteksi (false positive).
Di akhir tabel diberikan keterangan berupa summary dari hasil keseluruhan deteksi.
Penjelasan dari masing-masing keterangan tersebut adalah:
 Detected: jumlah dari seluruh vulnerability founds
 Corrects: jumlah celah keamanan yang terbukti dapat dieksploitasi
(exploitable) dengan tool SQLMAP

34
 False Positive: Positif palsu, maksudnya adalah jumlah keamanan yang tidak
terbukti dapat dieksploitasi (non-exploitable) oleh tool SQLMAP
 False Negative: jumlah celah keamanan yang tidak dapat dideteksi oleh satu
metode, namun dapat terdeteksi pada metode lainnya
 Total Detected: jumlah total gabungan dari seluruh vulnerability founds yang
ditemukan oleh metode Code Review dan Penetration Testing
 Total Corrects: jumlah total celah keamanan yang ditemukan oleh metode
Code Review dan Penetration Testing yang terbukti dapat dieksploitasi
(exploitable) dengan tool SQLMAP.
Tampilan hasil dari combined report yang menampilkan lima dari total 22 gabungan
vulnerability founds dari masing-masing hasil pengujian metode dapat dilihat pada
Tabel 4.8. Untuk hasil tabel selengkapnya dapat dilihat pada lampiran.

Tabel 4.8 Hasil combined report


Code Penetration Testing
No Vulnerabilities Founds Correct
Review ZAP W3af Vega Acunetix
http://localhost/tugasakhir/jo
1 omla321/index.php/article- v v v
categories?id=
http://localhost/tugasakhir/jo
2 omla321/index.php/weblink v v
s-component?id=1
http://localhost/tugasakhir/jo
3 omla321/index.php/weblink v v v v v
s-categories?id=
http://localhost/tugasakhir/jo
4 omla321/index.php/new- v v v v v
feed-categories?id=
http://localhost/tugasakhir/jo
5 omla321/index.php/contact v v
-categories?id=1
Detected 5 3
Corrects 5 3

35
Tampilan hasil summary dari total keseluruhan combined report dari masing-masing
hasil pengujian metode dapat dilihat pada Tabel 4.9.

Tabel 4.9 Total combined report


Total Code Review Penetration Testing
Detected 5 20
Corrects 5 17
False Positive - 3
False Negative 15 2
Total Detected 22
Total Corrects 19

Hasil Combined Report menunjukkan sebanyak 22 celah keamanan yang ditemukan


oleh kedua metode yang telah diujikan. 5 total celah keamanan ditemukan oleh metode
Code Review, sedangan total celah keamanan yang ditemukan oleh metode
Penetration Testing adalah sebanyak 20 celah keamanan. Jumlah celah keamanan
yang dapat dideteksi oleh kedua-duanya atau yang biasa disebut irisan dari dua
himpunan yaitu sebanyak 3 celah keamanan. Seluruh celah kemanan yang ditemukan
oleh Code Review ternyata dapat dieksploitasi, sehingga correct vulnerabilities
berjumlah 5 celah keamanan. Sedangkan correct vulnerabilities yang ditemukan oleh
Penetration Testing hanya berjumlah 17 dari 20 total celah keamanan yang terdeteksi.

Celah keamanan yang merupakan false positve tidak ditemukan pada hasil Code
Review, sedangkan pada hasil Penetration Testing ditemukan sebanyak 3 celah
keamanan yang false positive. Sebanyak 14 celah keamanan false negative dimiliki
oleh Code Review, ini berarti celah keamanan tersebut tidak dapat terdeteksi oleh
Code Review namun terdeteksi sebagai correct vulnerabily oleh Penetration Testing.
Sedangkan metode Penetration Testing memiliki 2 celah keamanan yang false
negative.

36
Seluruh celah keamanan sebanyak 5 celah yang ditemukan oleh metode Code Review
dapat dilihat pada Tabel 4.10.

Tabel 4.10 Vulnerabilities yang dideteksi code review


No Vulnerabilities Parameter
http://localhost/tugasakhir/joomla321/index.php/article-
1 id
categories?id=
http://localhost/tugasakhir/joomla321/index.php/weblinks-
2 id
component?id=1
http://localhost/tugasakhir/joomla321/index.php/weblinks-
3 id
categories?id=
http://localhost/tugasakhir/joomla321/index.php/new-feed-
4 id
categories?id=
http://localhost/tugasakhir/joomla321/index.php/contact-
5 id
categories?id=1

Sebanyak 5 celah keamanan dari total 20 celah keamanan yang ditemukan oleh metode
Penetration Testing dapat dilihat pada Tabel 4.11. Untuk hasil tabel selengkapnya
dapat dilihat pada lampiran. Terlihat bahwa terdapat 3 celah keamanan yang ditemukan
oleh metode Penetration Testing yang juga telah terdeteksi sebelumnya oleh metode
Code Review.

Tabel 4.11 Vulnerabilities yang dideteksi penetration testing


No Vulnerabilities Parameter
http://localhost/tugasakhir/joomla321/index.php/article-
1 id
categories?id=
http://localhost/tugasakhir/joomla321/index.php/weblinks-
2 id
categories?id=
http://localhost/tugasakhir/joomla321/index.php/new-feed-
3 id
categories?id=
http://localhost/tugasakhir/joomla321/index.php/park-
4 id
links?id=9-2&task=weblink.go
http://localhost/tugasakhir/joomla321/index.php/archived-
5 id
articles?month=1&id=0

37
Seluruh celah keamanan sebanyak 3 celah yang ditemukan oleh metode Code Review
dan juga ditemukan oleh metode Penetration Testing dapat dilihat pada Tabel 4.12.
Untuk hasil tabel selengkapnya dapat dilihat pada lampiran. Celah keamanan yang
ditemukan oleh kedua metode ini dapat disebut sebagai irisan dari hasil masing-masing
metode.

Tabel 4.12 Vulnerabilities yang dideteksi kedua metode


No Vulnerabilities Parameter
http://localhost/tugasakhir/joomla321/index.php/article-
1 id
categories?id=
http://localhost/tugasakhir/joomla321/index.php/weblinks-
2 id
categories?id=
http://localhost/tugasakhir/joomla321/index.php/new-feed-
3 id
categories?id=

Untuk menghitung persentase hasil combined report dari kedua metode digunakan
rumus:

Persentase irisan:
3/22 x 100% = 13,63%

Persentase hasil Code Review:


5/22 x 100% = 22,72% - 13,63%
= 9,09%
Persentase hasil Penetration Testing:
20/22 x 100% = 90,90% - 13,63%
= 77,27%

Berdasarkan perhitungan rumus diatas, persentase dari hasil combined report dapat
dilihat pada Gambar 4.7 yang disajikan dalam diagram venn.

38
Gambar 4.7 Diagram venn presentase combined report

Diagram venn diatas menunjukkan bahwa dari total 100% keseluruhan celah
keamanan, sebanyak 9,09% celah keamanan berhasil ditemukan oleh metode Code
Review, kemudian sebanyak 77,27% celah keamanan berhasil ditemukan oleh metode
Penetration Testing, dan sebanyak 13,63% celah keamanan yang merupakan irisan
dari hasil kedua metode yang ditemukan pada hasil Code Review dan ditemukan juga
pada hasil Penetration Testing.

4.3.2 Jumlah Celah Kemanan


Pada Tabel 4.8 menunjukkan bahwa jumlah total celah keamanan yang dideteksi oleh
kedua metode yang diujikan adalah sangat jauh berbeda. Celah keamanan yang
ditemukan oleh metode Code Review sangat sedikit jumlahnya dibandingkan dengan
metode Penetration Testing. Namun, terdapat dua celah keamanan yang tidak
ditemukan oleh metode Penetration Testing tetapi ditemukan oleh metode Code
Review. Melihat hasil pengujian metode Penetration Testing, Acunetix WVS
mendeteksi lebih banyak celah keamanan daripada tiga web vulnerability scanner
lainnya dan seluruh celah yang ditemukan adalah correct vulnerability.

39
4.3.3 Penyebab False Positive
False Positive adalah suatu celah keamanan yang ditemukan namun tidak terbukti
dapat dieksploitasi. Dari hasil pengujian metode Code Review tidak ditemukan false
positive sama sekali, karena setiap celah keamanan yang ditemukan dapat dilihat
dengan jelas dari sisi source code apakah sudah dilakukan input validation pada
request data input dari pengguna. Hal ini ditandai dengan adanya fungsi validasi yang
menyaring user input seperti fungsi mysql_real_escape_string(), int(), dan
sejenisnya. Namun, pada hasil pengujian metode Penetration Testing ditemukan
sebanyak tiga false positive. Ini disebabkan oleh deteksi hanya dilakukan pada http
request dan mekanisme deteksi tergantung dari algoritma web vulnerability scanner
yang digunakan. Ini terlihat jelas dari perbedaan hasil yang sangat mencolok antara ke-
empat tools yang digunakan.

4.3.4 Penyebab False Negative


False Negative adalah celah keamanan yang tidak ditemukan sama sekali oleh suatu
metode. False Negative lebih berbahaya daripada false positive, karena dapat
berpotensi besar menjadi correct vulnerability yang dapat dieksploitasi oleh
attackers. Hasil pengujian metode Code Review banyak menghasilkan false negative
yaitu sebanyak 14. Hal ini disebabkan oleh beberapa faktor, seperti:
a. Kurang teliti dalam memeriksa baris-per-baris
b. Kurangnya pengalaman dalam mempelajari struktur kode Joomla!
c. Kesulitan dalam memahami struktur kode Joomla! yang begitu rumit
dikarenakan Joomla! adalah suatu proyek web sekala besar.
Sedangkan hasil pengujian metode Penetration Testing juga menghasilkan dua false
negative. Hal ini disebabkan ke-empat tools yang digunakan kesulitan dalam
memetakan seluruh fungsionalitas dari Joomla! dikarenakan kompleksitasnya yang
tinggi. Seluruh web vulnerability scanner yang digunakan menghasilkan false
negative, termasuk Acunetix WVS yang bersifat commercial tool.

40
Hasil combined report dari masing-masing metode juga ternyata masih tetap
menghasilkan false negative. Tidak ada satupun metode yang dapat mendeteksi satu
lagi known vulnerability yang telah ditemukan sebelumnya oleh Trustwave: Smart
Security on Demand (2015). Celah keamanan tersebut terdapat pada parameter list di
URL berikut:

http://localhost/tugasakhir/joomla321/index.php?op
tion=com_contenthistory&view=history&list[select]=
1
Alasan yang menyebabkan celah ini tidak dapat terdeteksi oleh metode Code Review
adalah sama seperti yang telah dijelaskan sebelumnya, yaitu dipengaruhi oleh beberapa
faktor. Sedangkan alasan metode Penetration Testing tidak menemukan celah ini
adalah kompleksitas dari path URL pada Joomla! yang mungkin tidak dapat ditangani
oleh algoritma keempat automated web scanner yang digunakan.

4.3.5 Perbandingan Kedua Metode


Pada Tabel 4.8 menunjukkan celah keamanan apa saja yang dapat dideteksi oleh
metode Code Review dan metode Penetration Testing. Faktanya, setiap metode
hanya dapat mendeteksi sebagian dari seluruh celah keamanan yang ditemukan. Metode
Code Review hanya mendeteksi 5 vulnerabilities dengan tidak adanya kesalahan
deteksi (false positive) dan metode Penetration Testing mendeteksi lebih banyak
celah keamanan yaitu sebanyak 20 vulnerabilities dengan 3 kesalahan deteksi (false
positives).

Namun, dengan menggabungkan hasil temuan dari kedua metode akan menghasilkan
temuan celah keamanan yang saling melengkapi satu sama lainnya. Ketika hasil
keduanya digabungkan menjadi suatu combined report, tentu hasilnya lebih akurat dan
lengkap daripada hanya mengandalkan salah satu report dari metode yang hanya

41
mendeteksi sebagian dari celah keamanan yang ada. Faktanya, hasil combined report
juga masih memiliki setidaknya satu false negative karena belum dapat mendeteksi satu
known vulnerability yang telah beredar di internet. Namun, secara teori celah
keamanan tersebut dan celah keamanan apapun itu seharusnya dapat dideteksi dengan
menggunakan metode Code Review. Hal ini tergantung dari kerumitan source code,
ketelitian, pengalaman dan pemahaman seorang Code Reviewer dalam memahami
struktur kode yang akan di-review-nya.

Sekarang setelah melakukan evaluasi secara keseluruhan terhadap hasil implementasi


dari penelitian, dapat diberikan jawaban atas rumusan masalah penelitian:
“Bagaimanakah efektifitas metode Code Review dan Penetration Testing dalam
mendeteksi celah keamanan SQL Injection?”. Dalam mendeteksi celah keamanan SQL
injection adalah tidak efektif jika hanya menggunakan metode Code Review. Begitu
juga dengan metode Penetration Testing, akan menjadi tidak efektif jika hanya
mengandalkan metode ini saja dalam mendeteksi celah keamanan SQL injection.
Deteksi celah keamanan SQL injection akan lebih efektif jika dilakukan dengan
menggunakan metode Code Review untuk mendeteksi seluruh celah keamanan yang
mungkin berbahaya, kemudian dilanjutkan dengan menggunakan metode Penetration
Testing untuk mendeteksi kembali dan membuktikan bahwa celah-celah keamanan
tersebut dapat berdampak ataupun tidak sama sekali terhadap target.

42
BAB V
KESIMPULAN DAN SARAN

5.1 Kesimpulan
Berdasarkan penelitian dan pengujian yang telah dilakukan, maka dapat disimpulkan:
a. Pendekatan 360 review yang menggabungkan metode Code Review dan
Penetration Testing sangat efektif dalam mendeteksi celah keamanan SQL
Injection pada web Joomla! 3.2.1. Terbukti dari total celah keamanan yang
ditemukan lebih banyak daripada jumlah hasil deteksi dari masing-masing
metode Code Review ataupun Penetration Testing.
b. Hasil pengujian Penetration Testing menggunakan tools OWASP ZAP,
W3af, Vega, dan Acunetix WVS dapat mendeteksi sebanyak 77,27% dari total
celah keamanan, dan dapat dibuktikan sebagai correct vulnerabilities dengan
menggunakan tool SQLMAP.
c. Sebanyak 9,09% celah keamanan ditemukan oleh metode Code Review dan
sebanyak 77,27% celah keamanan ditemukan oleh metode Penetration
Testing dari total 22 jenis vulnerabilities yang ditemukan.
d. Akurasi celah keamanan yang terdeteksi cukup tinggi, dibuktikan dengan jumlah
total correct vulnerabilites yang cukup banyak yaitu 19 celah keamanan dan
hanya 3 celah keamanan yang merupakan false positive. Hanya satu known
vulnerability yang tidak dapat dideteksi (false negative) oleh kedua metode
ini.

43
5.2 Saran
Saran untuk penelitian selanjutnya adalah:
a. Disarankan untuk melakukan penelitian tentang deteksi SQL injection pada
$_POST method
b. Disarankan untuk melakukan penelitian tentang efektifitas manual code review
dan static analysis tools
c. Disarankan untuk melakukan penelitian tentang efektifitas Vulnerability
Assesment dan Penetration Testing

44
DAFTAR PUSTAKA

Acunetix, Website Security with Acunetix, Website: http://www.acunetix.com/, diakses


tanggal: 9 Oktober 2016.
Allen, L., Tedi Heriyanto, dan Shakeel Ali, 2014, Kali Linux – Assuring Security by
Penetration Testing, Pack Publishing, Birmingham, UK.
Ansari, J.A., 2015, Web Penetration Testing with Kali Linux, 2nd Edition, Pack
Publishing, Birmingham, UK.
Antunes, N. and Marco Vieira, 2009, Comparing the Effectiveness of Penetration
Testing and Static Code Analysis on the Detection of SQL Injection
Vulnerabilities in Web Services, Proceedings of the 15th IEEE Pacific Rim
International Symposium on Dependable Computing, Coimbra, Portugal.
Clarke, J., 2012, SQL Injection Attack and Defense, 2nd Edition, Syngress, Waltham,
MA.
Edmundson, Anne., Brian Holtkamp, Emanuel Rivera, Matthew Finifter, Adrian
Mettler, and David Wagner, 2013, An Empirical Study on the Effectiveness of
Security Code Review, 5th International Symposium, ESSoS 2013, Paris, France,
197-212.
Halfond, W.G.J., Jeremy Viegas, and Alessandro Orso, 2006, A Classification of
SQL-Injection Attacks and Countermeasures, Proceedings of the IEEE
International Symposium on Secure Software Engineering, Arlington, VA, USA,
April 8.
Holzmann, Gerard J., 2009, SCRUB: a tool for Code Reviews, Laboratory for Reliable
Software, Jet Propulsion Laboratory / California Institute of Technology,
Pasadena, CA 91109, USA.
Jonkergouw, Job P., 2014, Effectiveness of Automated Security Analysis using a
Uniface-like Architecture, Master‟s Thesis, Universiteit van Amsterdam,
Amsterdam.

45
Joomla!, About Joomla!, Website: https://www.joomla.org/about-joomla.html, diakses
tanggal: 9 Oktober 2016.
Kousa, S. 2013. Simplifying Secure Code Review. Bsides Quebec.
Muttaqiin, K., 2015, Pengenalan, Sejarah dan Aplikasi WEB [Teknologi Web],
Website: http://www.isrul.com/2015/02/pengenalan-sejarah-dan-aplikasi-
web.html, diakses tanggal: 9 Oktober 2016.
Northcutt, Stephen., Jerry Shenk, Dave Shackleford, Tim Rosenberg, Raul Siles, and
Steve Mancini, 2006, Penetration Testing: Assessing Your Overall Security
Before Attackers Do, SANS Institute.
Nugraha S.G., Supeno Djanali, dan Baskoro Adi Pratomo, 2013, Sistem Pendeteksi
dan Pencegah Serangan SQL Injection dengan Penghapusan Nilai Atribut Query
SQL dan Honeypot, Jurnal Teknik Pomits Vol. 2, No. 1, ISSN: 2337-3539
(2301-9271 Print).
Orpani, Asaf. Joomla SQL Injection Vulnerability Exploit Results in Full Administrative
Access, (Online), (https://www.trustwave.com/Resources/SpiderLabs-
Blog/Joomla-SQL-Injection-Vulnerability-Exploit-Results-in-Full-Administrative-
Access/?page=1&year=0&month=0, diakses tanggal: 19 November 2016).
OWASP, CRV2 360Review - OWASP, Website:
https://www.owasp.org/index.php/CRV2_360Review, diakses 18 Oktober 2016.
OWASP, OWASP Zed Attack Proxy Project, Website:
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project, diakses
tanggal: 9 Oktober 2016.
OWASP, Top 10 2013-Top 10 OWASP, Website:
https://www.owasp.org/index.php/Top_10_2013-Top_10/, diakses 06 September
2016.
OWASP Code Review Project. 2013. Code Review Guide 2.0. The Open Web
Application Security Project (OWASP).

46
Sqlmap, SQLMAP: Automatic SQL Injection and Database Take Over Tool, Website:
http://sqlmap.org/, diakses tanggal: 9 Oktober 2016.
Subgraph, Vega Vulnerability Scanner, Website: https://subgraph.com/vega/, diakses
tanggal: 9 Oktober 2016.
Techopedia, Web Application Security, Website:
https://www.techopedia.com/definition/24377/web-application-security, diakses
tanggal: 9 Oktober 2016.
Tajpour, A., Masrom, M., Heydari, M.Z., and Ibrahim, S., 2010, SQL Injection
detection and prevention tools assessment, Proc. 3rd IEEE International
Conference on Computer Science and Information Technology (ICCSIT‟10),
518-522.
W3af, Open Source Web Application Secuirty Scanner, Website:
https://www.w3af.org/, diakses tanggal: 9 Oktober 2016.
W3tech, Usage of content management systems for websites, Website:
https://w3techs.com/technologies/overview/content_management/all, diakses
tanggal: 19 November 2016.
Xynos, K., Iain Sutherland, Huw Read, Emlyn Everitt and Andrew J.C. Blyth, 2010,
Penetration Testing and Vulnerability Assessments: A Professional Approach.
Originally published in the Proceedings of the 1st International Cyber Resilience
Conference, Edith Cowan University, Perth Western Australia.

47
LAMPIRAN

Lampiran 1 Proses code review pertama

Lampiran 2 Proses code review kedua

48
Lampiran 3 Proses code review ketiga

Lampiran 4 Proses code review keempat

49
Lampiran 5 Proses code review kelima

Lampiran 6 Memulai tool OWASP ZAP

50
Lampiran 7 Proses scanning OWASP ZAP

Lampiran 8 Hasil report OWASP ZAP

51
Lampiran 9 Memulai tool W3af

Lampiran 10 Proses scanning W3af

52
Lampiran 11 Hasil report W3af

Lampiran 12 Memulai tool Vega

53
Lampiran 13 Proses scanning Vega

Lampiran 14 Hasil report Vega

54
Lampiran 15 Memulai tool Acunetix WVS

Lampiran 16 Proses scanning Acunetix WVS

55
Lampiran 17 Hasil report Acunetix WVS

Lampiran 18 Proses eksploitasi SQLMAP

56
Lampiran 19 Seluruh hasil Penetration testing report

Automated Web Scanner Code


No Vulnerability Founds Correct
ZAP W3af Vega Acunetix Review
http://localhost/tugasakhir/jo
omla321/index.php/park-
1 v
links?id=9-
2&task=weblink.go
http://localhost/tugasakhir/jo
2 omla321/index.php/weblink v v v v v
s-categories?id=0
http://localhost/tugasakhir/jo
3 omla321/index.php/new- v v v v v
feed-categories?id=0
http://localhost/tugasakhir/jo
4 omla321/index.php/archived v v v
-articles?month=1&id=0
http://localhost/tugasakhir/jo
omla321/index.php/archived
5 - v v v
articles?id=1&month=1&vie
w=archive
http://localhost/tugasakhir/jo
6 omla321/index.php/menu?t v
mpl=component&print=1
http://localhost/tugasakhir/jo
omla321/index.php/menu?t
7 v
mpl=component&print=1&
page=1
http://localhost/tugasakhir/jo
8 v v
omla321/index.php/?id=1
http://localhost/tugasakhir/jo
9 omla321/index.php/archived v v
-articles/?id=1
http://localhost/tugasakhir/jo
10 omla321/index.php/article- v v v
categories/?id=1
http://localhost/tugasakhir/jo
omla321/index.php/article-
11 v v
category-list/21-
extensions/?id=1
12 http://localhost/tugasakhir/jo v v

57
omla321/index.php/article-
category-list/22-
extensions/?id=1
http://localhost/tugasakhir/jo
omla321/index.php/article-
13 v v
category-list/66-
extensions/?id=1
http://localhost/tugasakhir/jo
omla321/index.php/article-
14 v v
category-list/67-
extensions/?id=1
http://localhost/tugasakhir/jo
15 omla321/index.php/compon v v
ent/content/?id=1
http://localhost/tugasakhir/jo
16 omla321/index.php/compon v v
ent/search/?id=1
http://localhost/tugasakhir/jo
17 omla321/index.php/image- v v
gallery/?id=1
http://localhost/tugasakhir/jo
18 omla321/index.php/index.ph v v
p/?id=1
http://localhost/tugasakhir/jo
19 omla321/index.php/using- v v
joomla/?id=1
http://localhost/tugasakhir/jo
20 omla321/index.php/using- v v
joomla/extensions/?id=1
http://localhost/tugasakhir/jo
21 omla321/index.php/article- v v v
categories?id=
http://localhost/tugasakhir/jo
22 omla321/index.php/weblink v v
s-component?id=1
http://localhost/tugasakhir/jo
23 omla321/index.php/weblink v v v v v
s-categories?id=
http://localhost/tugasakhir/jo
24 omla321/index.php/new- v v v v v
feed-categories?id=
25 http://localhost/tugasakhir/jo v v

58
omla321/index.php/contact-
categories?id=1

59
Lampiran 20 Seluruh hasil Combined report
Code Penetration Testing
No Vulnerabilities Founds Correct
Review ZAP W3af Vega Acunetix
http://localhost/tugasakhir/jo
1 omla321/index.php/article- v v v
categories?id=
http://localhost/tugasakhir/jo
2 omla321/index.php/weblink v v
s-component?id=1
http://localhost/tugasakhir/jo
3 omla321/index.php/weblink v v v v v
s-categories?id=
http://localhost/tugasakhir/jo
4 omla321/index.php/new- v v v v v
feed-categories?id=
http://localhost/tugasakhir/jo
5 omla321/index.php/contact v v
-categories?id=1
http://localhost/tugasakhir/jo
omla321/index.php/park-
6 v
links?id=9-
2&task=weblink.go
http://localhost/tugasakhir/jo
7 omla321/index.php/archive v v v
d-articles?month=1&id=0
http://localhost/tugasakhir/jo
omla321/index.php/archive
8 d- v v v
articles?id=1&month=1&vi
ew=archive
http://localhost/tugasakhir/jo
9 omla321/index.php/menu?t v
mpl=component&print=1
http://localhost/tugasakhir/jo
omla321/index.php/menu?t
10 v
mpl=component&print=1&
page=1
http://localhost/tugasakhir/jo
11 v v
omla321/index.php/?id=1
http://localhost/tugasakhir/jo
12 v v
omla321/index.php/archive

60
d-articles/?id=1
http://localhost/tugasakhir/jo
omla321/index.php/article-
13 v v
category-list/21-
extensions/?id=1
http://localhost/tugasakhir/jo
omla321/index.php/article-
14 v v
category-list/22-
extensions/?id=1
http://localhost/tugasakhir/jo
omla321/index.php/article-
15 v v
category-list/66-
extensions/?id=1
http://localhost/tugasakhir/jo
omla321/index.php/article-
16 v v
category-list/67-
extensions/?id=1
http://localhost/tugasakhir/jo
17 omla321/index.php/compo v v
nent/content/?id=1
http://localhost/tugasakhir/jo
18 omla321/index.php/compo v v
nent/search/?id=1
http://localhost/tugasakhir/jo
19 omla321/index.php/image- v v
gallery/?id=1
http://localhost/tugasakhir/jo
20 omla321/index.php/index.p v v
hp/?id=1
http://localhost/tugasakhir/jo
21 omla321/index.php/using- v v
joomla/?id=1
http://localhost/tugasakhir/jo
22 omla321/index.php/using- v v
joomla/extensions/?id=1
Detected 5 20
Corrects 5 17
False Positive - 3
False Negative 14 2
Total Detected 22
Total Corrects 19

61

Anda mungkin juga menyukai