Dokumen tersebut membahas mengenai serangan injeksi terhadap aplikasi web. Injeksi merupakan teknik yang memanfaatkan celah keamanan pada lapisan basis data dengan cara memodifikasi perintah SQL. Jenis serangan injeksi antara lain mengidentifikasi parameter yang rentan, mengetahui skema basis data, mengekstrak data, menambahkan data, melakukan denial of service, dan menjalankan perintah secara remote. Untuk mencegah serangan ini perlu merubah
1. Nama : Raka Septa Kurnia
NPM : TI1401010
Jurusan : Teknik Perangkat Lunak
SERANGAN INJEKSI TERHADAP APLIKASI WEB
Abstraksi
Aplikasi web adalah suatu aplikasi yang diakses menggunakan browser web melalui
jaringan internet. Jenis-jenis aplikasi web sangat beragam, seperti sosial media, toko online
dan website yang berisi informasi yang dalam beberapa tahun terakhir menjadi target
serangan cracker. Adapun ancaman yang sering terjadi diantaranya merupakan ancaman
Injeksi.
Injeksi merupakan sebuah teknik yang menyalahgunakan sebuah celah keamanan
yang terjadi dalam lapisan basis data dengan cara memodifikasi perintah SQL yang ditujukan
untuk menyerang database SQL server.
Kata Kunci : Injeksi, Aplikasi Web, SQL
Apa itu Injeksi?
Merupakan sebuah teknik yang menyalahgunakan sebuah celah keamanan yang
terjadi dalam lapisan basis data dengan cara memodifikasi perintah SQL yang ditujukan
untuk menyerang database SQL server.
Bagaimana cara kerja Injeksi?
Memanfaatkan celah yang ada ketika masukan pengguna tidak disaring secara benar
dari karakter-karakter pelolos bentukan string yang diimbuhkan dalam pernyataan SQL dan
menggunakan perintah SQL dengan memasukan kode melalui halaman masuk pada suatu
situs. Hal ini dikarenakan tidak adanya penanganan terhadap karakter-karakter tanda petik
tunggal (‘) dan juga karakter double minus (--). Sehingga seorang Cracker dengan mudahnya
menyisipkan perintah SQL kedalam suatu parameter maupun suatu form.
Jenis-jenis serangan yang termasuk kategor Injeksi?
1. Identifying injectable parameters
Dengan cara ini penyerang hanya ingin menyelidiki aplikasi web hanya untuk
menemukan dimana parameter dan bidang input pengguna rentan terhadap SQLIA.
2. Performing database finger-printing
Penyerang ingin menemukan jenis dan versi database yang aplikasi web gunakan.
Beberapa jenis database yang berbeda merespon secara berbeda terhadap query dan
serangan, dan informasi ini dapat digunakan untuk “sidik jari” database. Mengetahui
jenis dan versi database yang digunakan oleh aplikasi web memungkinkan penyerang
untuk “menyerang” database secara spesifik.
2. 3. Determining database schema
Untuk benar dalam mengekstrak data dari database, penyerang seringkali perlu
mengetahui informasi skema database, seperti nama tabel, nama kolom, dan tipe data
kolom.
4. Extracting data
Jenis-jenis serangan menggunakan teknik yang akan mengekstrak nilai data dari
database, tergantung pada jenis aplikasi web. Informasi ini bisa menjadi sensitif dan
sangat diinginkan untuk penyerang. Serangan dengan maksud ini adalah jenis yang
paling umum dari SQLIA.
5. Adding or modifying data
Tujuan dari serangan ini adalah untuk menambah atau mengubah informasi dalam
database.
6. Performing denial of service
Serangan ini dilakukan untuk menutup database dari aplikasi web, sehingga menyangkal
layanan kepada pengguna lain.
7. Evading detection
Kategori ini mengacu pada teknik serangan tertentu yang digunakan untuk menghindari
audit dan deteksi oleh mekanisme perlindungan sistem.
8. Bypassing authentication
Tujuan dari serangan jenis ini adalah untuk memungkinkan penyerang untuk memotong
database dan mekanisme otentikasi aplikasi.
9. Executing remote commands
Jenis serangan ini mencoba untuk menjalankan perintah sewenang-wenang pada
database. Perintah ini disimpan di prosedur atau fungsi yang tersedia bagi pengguna
database.
10. Performing privilege escalation
Serangan ini memanfaatkan kesalahan implementasi atau kekurangan logis dalam
database untuk meningkatkan hak-hak istimewa dari penyerang. Berbeda dengan
melewati serangan otentikasi, serangan ini fokus pada pemanfaatan hak database
pengguna.
Diatas merupakan beberapa jenis serangan menggunakan teknik Injeksi yang sering
digunakan oleh para Cracker.
3. Bagaimana cara mengatasi serangan Injeksi?
1. Merubah script php
Contoh script php awal
Script diatas memungkinkan seseorang dapat login dengan menyisipkan perintah SQL
kedalam form masukan. Ketika cracker menyisipkan karakter ’ or ’’ = ’ kedalam form email
dan password.
Maka dilakukan perubahan script menjadi :
$query = “select id,name,email,password,type,block from user ” .
“where email = ‘$Email’ and password = ‘$Password'”;
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, ‘yes’) == 0)
{
echo “<script>alert(‘Your account has been blocked’);
document.location.href=’index.php’;</script>n”;
exit();
}
else if(!empty($Id) && !empty($name) && !empty($email) &&
!empty($password));
$query = “select id,name,email,password,type,block from user”.
“where email = ‘$Email'”;
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, ‘yes’) == 0)
{
echo “<script>alert(‘Your account has been blocked’);
document.location.href=’index.php’;</script>n”;
exit();
}
$pass = md5($Password);
else if((strcmp($Email,$email) == 0) && strcmp($pass,$password) ==
0));
Select id, name, email, password, type, block, from user where email =
“or” = “and password = “or” = “
4. 2. Batasi panjang input box (jika memungkinkan), dengan cara membatasinya di kode
program, cracker pemula akan bingung sejenak melihat input box yang tidak bisa di
injek dengan perintah yang panjang.
3. Filter input yang dimasukkan oleh user, terutama penggunaan tanda kutip tunggal
(input validation).
4. Matikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server yang
berjalan.
5. Matikan fasilitas-fasilitas standar seperti Stored Procedures, Extended Stored
Procedures jika memungkinkan.
6. Ubah “Startup and run SQL Server” menggunakan low privilege user di SQL Server
Security tab.
7. Pasang WAF ( Web Application Firewall ) pada web server. WAF berperan sangat
penting dalam melindungi web server dikarenakan WAF bertugas sebagai penjaga
web dari berbagai serangan berbahaya, seperti SQL Injection, XSS, Spam, CSRF, dll.
Kesimpulan
Injeksi merupakan salah satu teknik dalam melakukan web hacking untuk menggapai
akses pada sistem database yg berbasis SQL. Teknik ini memanfaatkan kelemahan dalam
bahasa pemprograman scripting pada SQL dalam mengolah suatu sistem database. Hasil yang
ditimbulkan dari teknik ini membawa masalah yg sangat serius.
Injeksi dapat terjadi karena tidak adanya penanganan terhadap karakter – karakter
tanda petik satu dan juga karakter double minus yang menyebabkan suatu aplikasi dapat
disisipi dengan perintah SQL. Sehingga seorang Hacker menyisipkan perintah SQL kedalam
suatu parameter maupun suatu form.
Injeksi mempunyai beberapa karakteristik yaitu :
1. Teknik serangan ini memungkinkan seseorang dapat login kedalam sistem tanpa harus
memiliki account.
2. Selain itu injeksi juga memungkinkan seseorang merubah, menghapus, maupun
menambahkan data – data yang berada di dalam database. Bahkan yang lebih berbahaya
lagi yaitu mematikan database itu sendiri, sehingga tidak bisa memberi layanan kepada
web server.