Diajukan Untuk Memenuhi Tugas Besar Mata Kuliah Keamanan Sistem Informasi
Program Studi Teknik Informatika
Fakultas Teknik dan Ilmu Komputer
Oleh :
Melanni Heldiassintia – 10114386
Priyambodo Pujo Sulaksono – 10114381
Aulia Rahma S.R – 10114351
Mirza Rahadi – 10114349
KSI-09
Puji syukur penulis panjatkan kehadirat Tuhan Yang Maha Esa karena atas rahmat
dan nikmat yang telah dilimpahkan kepada kami, sehingga kami dapat
menyelesaikan makalah tugas besar yang berjudul ”Penggunaan Metode Encoding sebagai
pengamanan web terhadap eksploitasi inject, deface make shell, xxs, enxrypt, directpass”
Terselesainya makalah ini tidak lepas dari dukungan beberapa pihak yang telah memberikan
kepada kami berupa referensi dan materi. Oleh karena itu, kami bermaksud mengucapkan
banyak terima kasih kepada seluruh pihak yang tak dapat di sebutkan satu persatu, semua
Kami menyadari bahwa penyusunan makalah ini belum mencapai kesempurnaan, sehingga
kritik dan saran yang bersifat membangun sangat kami harapkan dari berbagai pihak demi
kesempurnaan makalah ini. Akhirnya kami berharap semoga makalah ini dapat bermanfaat
Penyusun
BAB 1
PENDAHULUAN
Pada bab ini, kita akan mempelajari bagaimana cara melihat suatu keamanan dalam web yang
belum aman dan yang sudah aman dengan menggunakan eksploitasi inject, deface make shell,
xss, encrypt, directpass dengan cara membandingkan dan memperlihatkan suatu sistem keamanan
pada web
Masalah keamanan merupakan salah satu aspek penting dari sebuah sistem informasi.Sayang
sekali masalah keamanan ini seringkali kurang mendapat perhatian dari para pemilik dan
pengelola sistem informasi.Seringkali masalah keamanan berada di urutan kedua atau bahkan
diurutan terakhir dalam daftar hal-hal yang dianggap penting. Apa bila menggangu performansi
Informasi saat ini sudah menjadi sebuah komoditi yang sangat penting.Kemampuan untuk
mengakses dan menyediakan informasi secara cepat dan akurat menjadi sangat esensial bagi
sebuah organisasi baik yang berupa organisasi komersial (perusahaan), perguruan tinggi, lembaga
pemerintahan, maupun individual. Hal ini dimungkinkan dengan perkembangan pesat di bidang
diinginkan hanya boleh diakses oleh orang-orang tertentu. Jatuhnya informasi ke tangan pihak
lain (misalnya pihak lawan bisnis) dapat menimbulkan kerugian bagi pemilik informasi.
Sebagai contoh, banyak informasi dalam sebuah perusahaan yang hanya diperbolehkan
misalnya informasi tentang produk yang sedang dalam development, algoritma-algoritma dan
teknik-teknik yang digunakan untuk menghasilkan produk tersebut. Untuk itu keamanan dari
sistem informasi yang digunakan harus terjamin dalam batas yang dapat diterima.
Di dunia maya atau internet sekarang ini sudah banyak sekali bertebaran bug-bug dari
unicode para cracker-craker yang tidak bertanggung jawab. Mereka ini menggunakan berbagai
tehnik hacking untuk mencari kelemahan dan merusak pada system keamanan suatu jaringan.
Salah satu dari tehnik tersebut yang sangat membahayakan sebuah website yaitu SQL
injection atau dikenal juga dengan SQL insertion yaitu sebuah teknik yang digunakan untuk
mengeksploitasi database pada suatu websites dengan memaksa keluarnya error page situs itu
yang ada error pages itu terdapat info tentang struktur database website yang dieksploitasi. SQL
sendiri merupakan bahasa pemrograman database yang sering dipakai para web developer
maupun admin sebuah situs untuk menampung ataupun menaruh data-data baru dari suatu input
Sebenarnya SQL injection sendiri bukanlah hal baru, dari dulu teknik ini sudah dikenal dalam
dunia hacking sebagai salah satu teknik web hacking, namun baru muncul lagi sekarang karena
sifatnya yang dapat merusak database dari suatu website. SQL injection ini sempat ramai pada
beberapa waktu yang lalu yaitu pada saat kasus bobolnya situs TNP KPU oleh salah seorang
1. Agar para pembaca bisa tau tentang cara mengamankan web dari croosite scripting
Website kepegawaian aman dari pretasan injection direct acces maupun deface. Akses data
password aman dari peretasan ke database menggunakan fungsi encrytion dengan pembuatan
kamus dan key.
BAB 2
TOOLS / METODE
2.1 Tools
1. Shell
Shell adalah salah satu jenis program asli sistem operasi (seringnya
merupakan program yang terpisah dari inti sistem operasi) yang menyediakan
komunikasi langsung antara pengguna dan sistem operasi. Contoh dari kekerang
adalah COMMAND.COM dalam MS-DOS, Macintosh Finder
(Macintosh), Windows Explorer, Command Prompt/cmd.exe, PowerShell dalam Micr
soft Windows, Bourne shell, C shell, Korn shell dan masih banyak lainnya khususnya
dalam keluarga sistem operasi UNIX. Beberapa kekerang juga dapat digunakan untuk
melakukan pengelolaan berkas.
Shell adalah suatu perangkat lunak yang menyediakan antarmuka bagi
pengguna sistem operasi yang menyediakan akses ke layanan kernel. Shell sistem
operasi pada umumnya mempunyai 2 kategori. yaitu command Line dan graphical.
Command Line shells menyediakan Command Line Interface (CLI) ke sistem
operasi, sedangkan graphical shells seperti Windows Shells, menyediakan Graphical
User Interface (GUI). Tujuan utama dari shell adalah untuk memulai program lain
dengan melihat isi directories.
Manfaat dari CLI dan GUI shell sering diperdebatkan. CLI mengklaim bahwa operasi
tertentu dapat dilakukan jauh lebih cepat CLI shell dibanding dengan GUI shell.
Namun, para pendukung GUI menganjurkan kegunaan komparatif dan keserhanaan
GUI shell. Pilihan terbaik sering ditentukan oleh cara dimana komputer digunakan.
Pada server, terutama digunakan untuk transfer data dan pengolahan dengan
administrasi asli, CLI mungkin menjadi pilihan yang terbaik. Namun, GUI akan
sesuai untuk komputer yang digunakan untuk mengedit gambar atau video dan
pengembangan data.
Contoh-contoh shell :
Bourne shell, C shell, Emacs shell, Stand alone shell, rc shell, bean shell adalah
beberapa contoh shell dari UNIX.
cmd.exe
command.com
Windows power shell
Singularity shell
Google shell
Console
iSeries QSHELL
dll.
2. CodeIgniter
CodeIgniter merupakan aplikasi sumber terbuka yang berupa framework PHP
dengan model MVC (Model, View, Controller) untuk membangun website dinamis
dengan menggunakan PHP. CodeIgniter memudahkan developer untuk membuat
aplikasi web dengan cepat mudah dibandingkan dengan membuatnya dari awal.
CodeIgniter dirilis pertama kali pada 28 Februari 2006. Versi stabil terakhir adalah
versi 3.0.4.
Model View Controller merupakan suatu konsep yang cukup populer dalam
pembangunan aplikasi web, berawal pada bahasa pemrograman Small Talk, MVC
memisahkan pengembangan aplikasi berdasarkan komponen utama yang membangun
sebuah aplikasi seperti manipulasi data, user interface, dan bagian yang menjadi
kontrol aplikasi. Terdapat 3 jenis komponen yang membangun suatu MVC pattern
dalam suatu aplikasi yaitu :
1. View, merupakan bagian yang menangani presentation logic. Pada suatu aplikasi
web bagian ini biasanya berupa file template HTML, yang diatur oleh controller.
View berfungsi untuk menerima dan merepresentasikan data kepada user. Bagian
ini tidak memiliki akses langsung terhadap bagian model.
2. Model, biasanya berhubungan langsung dengan database untuk memanipulasi
data (insert, update, delete, search), menangani validasi dari bagian controller,
namun tidak dapat berhubungan langsung dengan bagian view.
3. Controller, merupakan bagian yang mengatur hubungan antara bagian model dan
bagian view, controller berfungsi untuk menerima request dan data dari user
kemudian menentukan apa yang akan diproses oleh aplikasi.
Ada beberapa kelebihan CodeIgniter (CI) dibandingkan dengan Framework PHP lain,
Performa sangat cepat : salah satu alasan tidak menggunakan framework adalah
karena eksekusinya yang lebih lambat daripada PHP from the scracth, tapi
Codeigniter sangat cepat bahkan mungkin bisa dibilang codeigniter merupakan
framework yang paling cepat dibanding framework yang lain.
Konfigurasi yang sangat minim (nearly zero configuration) : tentu saja untuk
menyesuaikan dengan database dan keleluasaan routing tetap diizinkan
melakukan konfigurasi dengan mengubah beberapa file konfigurasi seperti
database.php atau autoload.php, namun untuk menggunakan codeigniter dengan
setting standard, anda hanya perlu mengubah sedikit saja file pada folder config.
Banyak komunitas: dengan banyaknya komunitas CI ini, memudahkan kita untuk
berinteraksi dengan yang lain, baik itu bertanya atau teknologi terbaru.
Dokumentasi yang sangat lengkap : Setiap paket instalasi codeigniter sudah
disertai user guide yang sangat bagus dan lengkap untuk dijadikan permulaan,
bahasanya pun mudah dipahami.
Dan banyak lagi yang lainnya.
3. Framework
Relatif memudahkan dalam proses maintenance karena sudah ada pola tertentu
dalam sebuah framework (dengan syarat programmer mengikuti pola standar
yang ada)
2.2 Metode
1. Injection
Injection adalah sebuah teknik untuk mengeksplorasi aplikasi web dengan
memanfaatkan suplai data dari client dalam sintak atau script SQL.
2. Deface
Berdasarkan kamus UMUM berarti merusakkan; mencemarkan; menggoresi;
menghapuskan tetapi arti kata deface disini yang sangat lekat adalah sebagai salah
satu kegiatan merubah tampilan suatu website baik halaman utama atau index filenya
ataupun halaman lain yang masih terkait dalam satu url dengan website tersebut (bisa
di folder atau di file).Deface adalah teknik mengganti atau menyisipkan file pada
server, teknik ini dapat dilakukan karena terdapat lubang pada sistem security yang
ada di dalam sebuah aplikasi. Hal ini bertujuan untuk melakukan perubahan tampilan
pada website korban dengan tampilan yang dimiliki oleh si defacer. Deface
merupakan sebuah serangan yang dilakukan untuk mengganti visual dari sebuah
website. Para hacker biasanya meninggalkan pesan dan nickname mereka agar hasil
kerjanya diketahui oleh khalayak hacker.
5. Direct-Access Attack
Serangan ini memungkinkan pengguna tak berotoritas memperoleh akses
langsung terhadap sebuah sistem komputer. Hal ini memungkinkan pengguna
tersebut untuk menyalin data dari sistem. Dia menerobos keamanan dengan cara
membuat perubahan terhadap sistem operasi, memasang software worm, keylogger,
dan lainnya. Bahkan saat sistem terproteksi oleh pengamanan standar, mereka
mungkin dapat menerobos dengan mem-booting sistem operasi lain atau alat lain
dari CD-ROM atau media bootable lainnya. Pencegahan terhadap serangan ini
adalah enkripsi data yang ada di harddisk.
BAB 3
DATA PENELITIAN
Sistem Kepegawaian
$res=mysqli_query($link,$sql);
$find=mysqli_num_rows($res);
$data=mysqli_fetch_array($res);
if ($find == true){
Koneksi langsung tanpa validasi dan batasan menyebabkan dapat disisipkannya query yang
menyebabkan orang yang tidak memiliki hak akses dapat memasuki sistem.
Hal ini bisa diatasi dengan pengcodean sesuai ketentuan yang dari framework Code Igniter
yaitu urutan MVC karena Code Igniter sendiri sudah tidak bisa dilakukan sql injection.
2. Eksploitasi Deface di form input file
Eksploitasi dengan penyisipan file shell saat penambah data di php mengijinkan website di
eksploitasi keseluruhan.
View
<input class="btn btn-info" required name="image" type="file" >
Hal ini bisa diatas dengan memvalidasi atau mengijinkan file apa yang diijinkan masuk ke
form input.
3. Eksploitasi XSS di form input
Eksploitasi xss menggunakan script peringatan dari JavaScript yaitu
“<script>alert(“peringatan”);</script>” yang menyebabkan form atau tampilan berubah
memnculkan peringatan maupun merubah struktur dari tampilan program
Config
$config['global_xss_filtering'] = FALSE;
View
<td><?php echo $p['username']; ?></td>
<td><?php echo $p['nama_depan']; ?> <?php echo $p['nama_belakang']; ?></td>
<td><?php if($p['jk']=='L'){echo "Laki-Laki";}else{echo "Perempuan";} ?></td>
<td><?php echo $p['tl']; ?></td>
<td><?php echo $p['alamat']; ?></td>
<td><?php echo $p['status']; ?></td>
Settingan bawaan Code Igniter untuk global xss filtering ke database bernilai false yang
menyebabkan tak adanya filtering dari inputan yang masuk ke database. Serta terdapat celah
juga pada output yang bisa ditutup dengan pembuatan fungsi baru untuk memvalidasi output
Hal ini bisa diatasi dengan mengubah settingan global xss filtering ke true dan mevalidasi
output.
4. Eksploitasi Direct Pass
Eksploitasi direct pass menggunakan url yang ditambahkan dengan nama controller(mvc)
untuk mengakes directory tanpa melalui script utama.
defined('BASEPATH') or exit('No direct script access allowed')
Code tersebut berfungsi agai tidak bisa mengakses controller lain, tetapi di program ini tidak
berfungsi dengan baik sehingga masih bisa di akses ke controller untuk mengeksplotasi data.
Hal ini bisa diatasi dengan penggunaan session yang terintegrasi dengan premmision yang
diakses dari database terdaftar untuk menjaga hak akses yang diijinkan masuk sistem dan
menolak anomali anonymous.
5. Tidak ada fungsi Encryption di password
Tidak adanya fungsi encryption menjadi hal yang karena penyalahgunaan akses user sendiri
yang mudah untuk dilihat dan juga sebagai bentuk keamanan saat database di eksploitasi.
Perlu ada penambahan fungsi encryption menggunakan key di form penambahan user dan
form login agar database hanya menyimpan data encption.
$this->load->model('model_akses');
$this->load->model('model_aktivitas');
$username = $this->input->post('username');
$password = $this->input->post(password);
$sess_data['username'] = $data->username;
$sess_data['hak_akses'] = $data->hak_akses;
$sess_data['nama_depan'] = $data->nama_depan;
$sess_data['user'] = $data->user;
$sess_data['public'] = $data->public;
$sess_data['akses'] = $data->akses;
$this->session->set_userdata($sess_data);
} redirect('admin');
}else{
$this->session->set_flashdata('pesan', 'Maaf, kombinasi nip dengan password salah.');
redirect('welcome');
}
Pengujian
2. Eksploitasi Deface di form input
Penambahan paramater file yang diijinkan masuk
<input class="btn btn-info" required name="image" type="file" accept="image/*">
Form input hanya mengijinkan file berekstensi jpg, jpeg, jpeg2000, gif, png, etc untuk dapat
memasukan data.
Pengujian
3. Eksploitasi XSS di form input
Pengubahan setting bawaan Code Igniter
$config['global_xss_filtering'] = TRUE;
Pengujian
4. Eksploitasi Direct Pass
Penambahan session dan premmision yang di atur dengan code sebagai berikut
Pengambilan session premmision dari database
sess_data['username'] = $data->username;
$sess_data['hak_akses'] = $data->hak_akses;
$sess_data['nama_depan'] = $dat->nama_depan;
$sess_data['user'] = $data->user;
$sess_data['public'] = $data->public;
$sess_data['akses'] = $data->akses;
$this->session->set_userdata($sess_data);
Session prememision diatas terdiri dari 4 digit integer yang bernilai 1 dan 0 dengan
keterangan sebagai berikut
1 = true dan 0 = false
4 digit secara berurutan adalah mewakili read create update delete
Penempatan session pada view menggunakan session premmision sebagai parameternya
if ($readuser == 1) {
statement
}
Artinya view tersebut hanya bisa diakses setelah session dari data yang terdaftar sehingga
directpass sulit untuk mengakses controller secara langsung
Pengujian
5. Tidak ada fungsi Encryption di password
Penambahan Fungsi untuk encrption dengan 1 key yaitu “astychis”
Encryption Algoritma sebagai berikut
function enkripsi($plainText, $key)
{
$key2 = 'AuOeiIEoUa';
$karakterLib =
'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ
.,?!/';
$karakterLib2 =
'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ
.,?!/';
$stringKeyLib = ' ' . $key;
$stringKeyLib2 = ' ' . $key2;
$stringKeyTemp = '';
$stringKeyTemp2 = '';
$stringTemp='';
$plainTextTemp='';
$chiperText = '';
$chiperTextTemp = '';
$spasi = ' ';
//key
for ($h=0; $h < strlen($stringKeyLib); $h++)
{
$karakter = substr($stringKeyLib, $h, 1);
if(!strpos($stringKeyTemp, $karakter))
{
$stringKeyTemp.= $karakter;
}
}
$stringKeyLib = $stringKeyTemp;
//key+alfabet
for ($i=0; $i < strlen($karakterLib); $i++)
{
$karakter = substr($karakterLib, $i, 1);
if(!strpos($stringKeyLib, $karakter))
{
$stringKeyLib.= $karakter;
}
}
//key2
for ($j=0; $j < strlen($stringKeyLib2); $j++)
{
$karakter = substr($stringKeyLib2, $j, 1);
if(!strpos($stringKeyTemp2, $karakter))
{
$stringKeyTemp2.= $karakter;
}
}
//key2+(key+alfabet)
for ($k=0; $k < strlen($karakterLib2); $k++)
{
$karakter = substr($karakterLib2, $k, 1);
if(!strpos($stringKeyLib2, $karakter))
{
$stringKeyLib2.= $karakter;
}
}
$chiperTextTemp=strrev($chiperTextTemp);
$this->load->model('model_akses');
$this->load->model('model_aktivitas');
$username = $this->input->post('username');
$sess_data['username'] = $data->username;
$sess_data['hak_akses'] = $data->hak_akses;
$sess_data['nama_depan'] = $data->nama_depan;
$sess_data['user'] = $data->user;
$sess_data['public'] = $data->public;
$sess_data['akses'] = $data->akses;
$this->session->set_userdata($sess_data);
}
$data = array(
'username' =>$this->session->userdata('username'),
'aktivitas' => "Login ".$this->session->userdata('username'),
);
$data = $this->model_aktivitas->add('aktivitas', $data);
redirect('admin');
}
else
{
$this->session->set_flashdata('pesan', 'Maaf, kombinasi nip
dengan password salah.');
redirect('welcome');
}
KESIMPULAN
Kesimpulan dari Pengamanan pada program menggunakan framework code igniter dan
database mysql dapat disimpulkan sebagai berikut
1. Pengaksesan sistem telah divalidasi dengan fungsi premmision dan session di form login dan
memberi validasi pada query yang masuk di form input.
2. Pengamanan inputan yang masuk di form input menggunakan validasi dan parameter serta
settingan yang telah disediakan framework code igniter.
3. Akses data password aman dari peretasan ke database menggunakan fungsi encrytion dengan
pembuatan kamus dan key.
DAFTAR PUSTAKA
http://webservices.xml.com/pub/a/ws/2003/03/04/security.html?page=2, diakses 29
[2] Della-Libera, Geovanni dkk, Security in a Web Services World: a Proposed Architecture
[3] Hartman, Bret dkk, Mastering Web Services Security, Wiley Publishing Inc, 2003.
[4] Jothy Rosenberg dan David L. Remy, Securing Web Services with WS-Security, Sams
Publishing, 2004.
[5] Skonnard, Aaron (2002). XML Files: The Birth of Web Services. October 2002 issue of