SQL INJECTION | MAKALAH KEAMANAN KOMPUTER


MAKALAH 
KEAMANAN KOMPUTER
SQL INJECTION













Disusun Oleh:

DIAS                    E11140106
EDI SUTISON    E11140018








PROGRAM STUDI SISTEM INFORMASI
FAKULTAS ILMU KOMPUTER
UNIVERSITAS MATHLA’ULANWAR BANTEN
2018





KATA PENGANTAR


        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 yang masuk seperti input member login,searchengine,dan lain sebagainya.
        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 cracker Indonesia, Dani Firmansyah.

                                                                                                                                                                                                                                                  Penulis













BAB II

PEMBAHASAN

2.1  Pengertian SQL injection
SQL injection adalah kegiatan menyisipkan perintah SQL kepada suatu statement SQL yang ada pada aplikasi yang sedang berjalan. Dengan kata lain SQL injection ini merupakan suatu tehnik pengeksploitasi pada web apilikasi yang didalamna menggunakan database untuk penyimpanan datanya. Terjadinya SQL injection tersebut dikarenakan security atau keamanan pada level aplikasi (dalam hal ini aplikasi web) masih kurang sempurna. Kurang sempurnanya adalah pada cara aplikasi meng-handle inputan yang boleh di proses ke dalam database. Misalnya pada suatu web yang terdapat fasilitas login, terdapat dua buah inputan pada umumnya, yaitu username dan password. Jika karakter yang masuk melalui dua buah inputan tersebut tidak difilter (disaring) dengan baik maka bisa menimbulkan efek SQL injection, ini dikarenakan biasanya inputan tersebut secara sistem akan menjadi bagian dari kriteria dari suatu perintah SQL di dalam aplikasi web-nya. Secara garis besar terjadinya SQL injection tersebut adalah sebagai berikut:
1)      Tidak adanya pemfilteran terhadap karakter – karakter tanda petik satu ’ dan juga karakter double minus -- yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL.
2)      Sehingga seorang Hacker dapat menyisipkan perintah SQL kedalam suatu parameter maupun pada text area suatu form.
2.2  Default Setting SQL

            Seperti yang kita ketahui bahwa
tehnik SQL injection ini memungkinkan seseorang dapat login kedalam sistem tanpa harus memiliki account. Salah satunya yaitu default setting SQL. Default setting SQl yang paling berbahaya adalah menggunakan adminID = sa dan password blank alias (kosong), apabila ada direktori sebuah situs yang disitu ada input untuk adminnya maka kalau kita isi id-nya dengan = 'sa' dan passwordnya =' ' maka kita langsung


masuk sebagai admin, ini kalau default setting-nya belum diubah. Namun ada lagi string yang bisa kita input untuk akses sebagai web admin yaitu dengan string ' OR 1=1-- apabila ada input web admin yang input box-nya adalah User dan Password maka apabila kita masukan string ' OR 1=1-- di input box user dan masukan foobar di input box password, maka akan membuat SQL query-nya bingung diakibatkan jadi SQL Query membacanya sebagai:

SELECT * from users where User ='' or 1=1-- and Password ='foobar'

yang artinya sqlnya men-SELECT semua query dari user yang user-nya '' (kosong) atau (OR) 1=1 (true) -- (tanda -- adalah mark dari SQL seperti halnya di C/C++ marknya // atau /*)

            Jadi kalau diuraikan logikanya adalah bahwa SQL-nya menganggap 1=1 sebagai true sehingga kolom itu di-bypass lalu kolom password-nya diabaikan karena setelah 1=1 terdapat mark SQL ( -- ), sehingga password itupun diabaikan. Lalu apakah hanya itu string-nya dalam menginjeksi sebuah situs? Tentu saja tidak. Inti dari injeksi dalam langkah awalnya adalah memaksa keluar sebuah error page yang berisi informasi struktur database situs itu dan kalau kita ingin melihatnya kita harus men-debug-nya. Jadi yang kita masukkan adalah string debugging SQL code, yaitu ' having 1=1-- , ini adalah string yang harus dimasukkan kalau kita ingin melihat error page dari situs sasaran.
Sehingga dapat dikatakan bahwa teknik ini memungkinkan seseorang dapat login kedalam sistem tanpa harus memiliki account. Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan data–data yang berada didalam database.

Bahkan yang lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa memberi layanan kepada web server.
2.3  Mencari Target
Situs web MS-SQL dengan ASP adalah situs yang paling rentan terhadap serangan ini. Hal pertama yang dilakukan dalam pencarian target yang sudah tidak asing lagi bagi kita yaitu buka www.google.com, pada kolom keywordnya masukkan allinurl:.co.nz/admin.asp, atau allinurl:/logon.asp Keyword ini dapat kita modifikasi ke berbagai bentuk .Penulisan allinurl perlu dicantumkan, dengan begitu Google akan segera mencari semua URL dalam sebuah situs yang mempunyai direktori /admin.asp. kita bisa saja mengganti keyword tersebut dengan allinurl:.co.id atau net atau org, or.id, sampai allinurl:.fr/admin.asp semua tergantung kemauan kita dalam mencari target menggunakan Google, dan yang terpenting dari semua itu adalah kita harus tahu di mana harus menginput string SQL tadi, misalnya di member login, user login, dan bahkan dapat pula di search product dan lainnya.

2.3  Lokasi Sql Injection

            Tidak selalu pada setiap situs target, kita harus di-inject lewat input box-nya. Kita juga bisa memasukan string-string SQL di URL situs target. Misalnya ada sebuah situs www.xxxxxx.com/moreinfo.cfm?ProductID=245 lalu, ketikkan string injeksi debuging SQL tadi ke address bar anda dibelakang url target itu, salah satu contohnya:
www.xxxxxx.com/moreinfo.cfm?ProductID=245' having 1=1-- atau juga kita dapat menghapus nilai produk dari URL tersebut dan ganti dengan debugging codenya, sebagai contoh: www.xxxxxx.com/moreinfo?ProductID=' having 1=1—
Apabila setelah itu akan keluar sebuah error page dari situs itu, ini menandakan bahwa situs tersebut dapat memberikan informasi tentang struktur database situs itu. Dari hasil informasi tersebut, kita dapat melakukan serangan SQL injection berikutnya. Apabila browser kita adalah Internet Explorer, ada sebagian situs yang tidak menampilkan error-nya, ini dikarenakan opsi Show Friendly HTTP Error Messages diaktifkan. Untuk itu kita perlu menonaktifkannya dengan cara menghilangkan tanda centang di kotaknya.

Opsi ini dapat anda temukan di Tools > Internet Option > Advanced cari opsinya di bagian Browsing lalu hilangkan tanda centangnya dan klik tombol Apply. Sesudah itu apabila anda menemui error page yang berisi HTTP 500 error - internal server error- sebelum men-set opsi tadi, anda cukup menekan tombol Refresh,
lalu terlihatlah sudah error-nya. Setelah kita tahu struktur database-nya, dengan pengetahuan dasar dari belajar SQL kita dapat menghancurkan database itu dengan perintah ' drop database [nama_database] atau drop table [nama_table], namun bukan ini yang kita cari dalam SQL Injection karena kita tidak dapat apa-apa dari string tadi.
 BAB II

AKSI SQL INJECTION
3.1  Praktik SQl
1. Cara Penggunaan
  1. Download contoh form login yang akan di injection DOWNLOAD
  2. Import database login.php  via phpmyadmin
  3. Buat Folder baru dalam Folder htdocs
  4. Extark semua file dalam system-login-edisutosn.zip ke dalam baru
  5. Buka halaman login http://localhost/tugas_sql_injec/login.php

  1. Klik Daftar untuk mendaftarkan users

Jika register berhasil maka data user akan tersimpan ke dalam database
  1. Coba login menggunakan user yang sudah di daftarkan, jika berhasil akan tampil halaman seperti ini

2. Query Login yang digunakan

Sekarang kita coba untuk menerapkan Sql Injection pada halama system login tersebut, yang perlu di lakukan adalah dengan menganalisa terlebih dahulu.
  • Jika kemungkinan query menggunakan awalan kutip satu ‘, maka inject dengan kutip dua. contoh querynya sebagai berikut : $query=select * from admin where username=”‘.$username.'” and password=MD5(“‘.$password.'”);
  • Jika kemungkinan query menggunakan awalan kutip dua “, maka inject dengan kutip satu. contoh querynya berikut : $query=select * from admin where username=’$username’ and password=MD5(‘$password’);
3. Dua Cara Menembus Password

Untuk menembus – atau mem-bypass – password pada sistem login, bisa ditempuh dengan dua cara.
Dari kedua cara tersebut seseorang bisa masuk ke suatu sistem tanpa perlu mengetahui
password-nya.

a.      Cara pertama adalah dengan menambahkan karakter ‘# setelah UserId. Sehingga bila Anda
menginputkan pada kotak User Id dengan ‘Joko’#’ (tanpa kutip) dan pada kotak Password Anda
inputkan sembarang karakter, seperti pada gambar ini.
  1.  Buka halaman login dengan URL http://localhost/tugas_sql_injec/login.php

  1. Masukan username namauser# dan  password “sembarang”

  1. Jika berhasil melakukan sql injection maka akan masuk kehalam seperti berikut


  1. Cara kedua adalah dengan menambahkan injection string sembarang’ OR ‘x’=’x pada kotak Password.




alasannya, isian password tidak sama dengan yang tersimpan di sistem. Tetapi ada
query lanjutannya, yaitu OR ‘x’=’x . Yang artinya sistem diberikan pilihan. Bila sebelumnya,

inputan password bernilai salah, maka dijalankan pilihan berikutnya yang sudah pasti benar, karena
‘x’=’x’. Akibatnya Anda bisa masuk ke dalam sistem tanpa mengetahui password yang
sesungguhnya dengan User Id ‘joko’!!













BAB III
KESIMPULAN


SQL Injection merupakan teknik hacking paling populer pada aplikasi web dengan prinsip melewatkan perintah-perintah SQL lewat aplikasi web untuk dieksekusi oleh database back-end. Kelemahan akan muncul apabila inputan user tidak disaring/difilter dengan sempurna dan akhirnya dieksekusi. Oleh karena itu diperlukan suatu pengamanan yang extra hati – hati pada SQL statement pada database yang ada pada suatu website-website kita, agar perintah-perintah SQL injection tersebut dapat disaring dengan baik. Demikian halnya dengan Setting server dengan benar memang akan mengamankan e-commerce web dari serangan deface, akan tetapi bukan berarti semuanya sudah aman sekarang. Situs e-commerce yang menggunakan Microsoft IIS juga menggunakan database access dengan Micosoft SQL server,dimana  MS SQL server tersebut mempunyai kelemahan yang memungkinkan seseorang tanpa account dapat masuk dan lolos verifikasi dari MS SQL server..Hal ini yang jelas dapat merugikan sekali, sebab bisa saja data sensitif seperti nomor kartu kredit serta lainnya bocor! Pada saat seseorang berusaha masuk ke situs e-commerce, biasanya akan disambut dengan halaman login yang mengharuskan pemakai memasukkan login name dan password.
  



DAFTAR PUSTAKA


1. http://www.nextgenss.com

2. http://st-curriculum.oracle.com/tutorial/SQLInjection/index.htm
                 
3.http://www.ilmuwebsite.com/detil_hacking/7/SQL_Injection_AJ_Auction__seluruh_  
   versi/"

4. Hacking Exposed book





Komentar

Postingan populer dari blog ini

Virtual Private Network (VPN) | Makalah Keamanan Komputer