SQL Injection
Disusun Oleh :
Jati Pandu Saputra 1500018108
Indriyanto Adi Prasetyo 1500018118
Maulana Agung Pribadi 1500018068
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
MsSQL injection
Fungsi SQL Injection
Penyerang ingin menyelidiki Aplikasi Web untuk menemukan mana parameter dan bidang-
input pengguna rentan terhadap SQLIA.
Tujuan dari serangan ini adalah untuk menambah atau mengubah informasi dalam database.
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.
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.
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
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.
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.
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 /
tersebut ialah dengan mengganti perintah ― order by ― dengan ― union select ― disertai
berapa jumlah kolom yang kita temukan tadi dan tanda – di depan angka. Contoh :
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= ‖
http://sekomsqlinject.blogspot.com/2012/04/sejarah-sql-injection.html
http://www.binushacker.net/pengertian-tutorial-tools-sql-injection-cara-kumpulan-software-
sql-injection.html
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