SQL Injection Tutorial Part 1:Bypass Admin Login / User Authentication - Di postingan sebelumnya , kita sudah membahas pengertian atau dasar tentang SQL (Structured Query Language). Nah sekarang kita akan membahas bagaimana cara melakukan SQL Injection itu sendiri dalam hal ini kita akan memanfaatkan bug tersebut untuk mem-bypass atau melewati user authentication, bisa admin login, user login dll. Untuk bahan praktek nya, saya sudah menyediakan sebuah web aplikasi tentang berita yang bisa anda download disini:
Link download web aplikasi berita
Disini saya menggunakan web aplikasi buatan saya sendiri untuk melakukan praktek SQL Injection ini. Teman teman bisa menggunakan aplikasi sendiri atau menggunakan aplikasi yang sudah saya sediakan diatas untuk mempermudah proses pembelajaran dan dapat mengikuti tutorial yang saya buat ini. Berikut akan saya berikan tutorial atau cara melakukan SQL Injection.
Instalasi Web App
Download Source Code
Untuk yang menggunakan aplikasi yang sudah saya sediakan diatas, silahkan download terlebih dahulu lalu extrak file nya ke dalam folder htdocs kalian bagi yang menggunakan
XAMPP atau ke folder aplikasi web masing" untuk yang menggunakan software" lain (disesuaikan saja). Setelahnya, jalankan web server anda, disini saya menggunakan apache2 & mysql dan menggunakan software
XAMPP. Di tahap ini kita sudah bisa mengakses website di
http://localhost/berita/ namun karna database nya belum di import maka masih ada error seperti gambar berikut:
Import Database
Setelah aplikasi sudah dijalankan dan muncul tampilan seperti diatas, saatnya kita import database nya. Pertama buat database bernama berita. Disini saya menggunakan
phpmyadmin untuk mempermudah mengelola database mysql nya.
Lalu klik import -> choose file -> upload file .sql yang sudah saya sediakan di dalam folder aplikasi, setelah import selesai, lalu ubah konfigurasi pada file config.php di dalam aplikasi yang sudah di download. Sesuaikan host, user mysql, password mysql dan database mysql milik kalian.
Setelah selesai, kalian bisa menggunakan aplikasi tersebut. Ada beberapa vulnrability disana karna semua input atau output belum saya filter, di kesempatan kali ini kita hanya akan membahas
SQL Injection nya saja dan fokus di bypass admin loginnya.
Cara Melakukan SQL Injection
Untuk cara melakukan serangan SQL Injection pada aplikasi website tadi, kalian bisa akses halaman adminnya di
http://localhost/berita/admin.php. Disana akan muncul tampilan login admin seperti gambar dibawah, halaman tersebut lah yang akan kita coba serang untuk kali ini.
Disini, asumsinya kita sudah mengetahui username(admin) tapi tidak mengetahui password admin, bagaimana cara agar kita tetap bisa login walaupun tidak mengetahui passwordnya ? nah disini lah bug
SQL Injection bisa dimanfaatkan untuk mem-bypass login adminnya.
Sekarang masukkan payload seperti berikut
Penjelasan
Pada inputan username kita memasukkan payload "admin' -- " yang "admin" berasal dari username admin yang sudah kita ketahui sebelumnya dan tanda petik setelahnya berguna untuk memanipulasi query SQL pada saat proses login sebagai penutup inputan agar seolah-olah isi inputan sudah ditutup dan "-- " adalah komentar dalam mysql yang berarti query selanjutnya akan diabaikan dan tidak dijalankan dalam hal ini query selanjutnya adalah pengecekan password sehingga, seolah-olah password tidak di cek dan yang di cek hanya username saja, oleh karena itu kita berhasil masuk ke dalam sistem dan login sebagai admin.
Nah itukan posisinya kita tahu username nya tanpa tahu passwordnya, bagaimana jika kita tidak tahu username dan password tapi masih ingin bisa login? nah jika ada bug
SQL Injection ini kita juga bisa login walaupun tanpa menggunakan username dan passwordnya. Nah caranya adalah kita cukup meletakkan payload "blabla' OR 1=1 -- " pada username nya, dan passwordnya bisa diisi asal saja.
Penjelasan
di username kita menuliskan string 'blabla' dimana itu sebenarnya bisa diisi asal saja lalu diikuti dengan tanda petik sebagai penutup input tersebut agar kita bisa memasukkan query SQL setelahnya.Nah pada "OR 1=1 -- " pentingnya, karna string 'blabla' yang kita masukkan tadi salah (tidak ada user yg memiliki username 'blabla') otomatis hasilnya false. Cara mengatasinya adalah kita memasukkan keyword 'OR' dimana 'OR' berarti jika diantara 2 statement salah satunya benar maka keduanya dianggap benar, berarti disini karna username 'blabla' tidak ada dan menghasilkan nilai false maka kita meletakkan statement yang sudah pasti benar setelahnya agar keduanya jadi dianggap benar yaitu 1=1 karna yaa 1 pasti sama dengan satu kan? dan kita tutup dengan keyword untuk komentar di mysql agar query setelahnya tidak dijalankan dam hasilnya boom berhasil login :D.
Ijin nih cara mendapatkan atau meretas database dengan SQL Injection menggunakan alat SQLMAP.
BalasHapus