Pengamanan Database pada Server dari serangan SQL Injection

Assalamu'alaikum sobat TKJ, apakah kalian menyadari bahwa selama ini saat kita login data tersebut disimpan dimana? Data tersebut ada di suatu server yang memiliki sumber daya yang besar karena harus menyimpan banyak user dalam satu tempat yang disebut Database. Tentu saja tempat ini menjadi salah satu target yang paling menggiurkan bagi hacker, bagaimana tidak saat suatu Database berhasil ditakhlukan maka user dan password akan terlihat yang akan memberikan akses hacker untuk melakukan rencananya. Oleh karena itu kita akan membahas bagaimana suatu Database bisa ditakhlukkan oleh hacker menggunakan metode bernama SQL Injection dan juga cara untuk menghindarinya.

Kasus ini membutuhkan 1 vm Debian sebagai attack yang akan kita install tools untuk melakukan SQL Injection.

Langsung saja kita sikaatt....

Setup Topologi

Kita membutuhkan aplikasi burp suite untuk menangkap request yang akan kita kirim kepada servernya, klik link dibawah ini.
Pilih sesuai OS kalian.

Eksekusi aplikasi burp suite yang telah kalian download maka akan muncul tampilan berikut, klik Next.

Biarkan default karena folder akan digunakan instalasi.

Setelah instalasi selesai klik Finish.
Kita lanjutkan settingan untuk Debiannya, pergi ke Settings Network pada vm attack.
Adapter 1 kita pasang NAT.

Adapter 2 kita pasang Host-Only

Klik OK lalu Start Debian attack untuk menjalankannya, login lalu masuk menjadi mode root.
su-
Konfigurasi networknya agar bisa tersambung ke lokal dan internet
nano /etc/network/interfaces

Restart servicenya agar ip terupdate, juga pastikan sudah benar.

Jika sudah bisa untuk ping google.com dan juga laptop lokal kita maka siap untuk lanjut ke tahap penyerangan.

Attack Session

Pertama update repository agar tidak ada kendala saat melakukan instalasi tools
apt update

Kita install tools yang diperlukan untuk melakukan penyerangan
apt install openssh-server sqlmap

Konfigurasi remote server agar bisa login dengan user root
nano /etc/ssh/sshd_config

Restart service dan pastikan tidak ada error.
systemctl restart sshd
systemctl status sshd

Login kedalam Debian attack menggunakan ssh di laptop client
ssh root@<ip>
yes
masukkan password Debian attack
Sekarang command line kita sudah terhubung dengan vm Debian attack yang akan mempermudah saat menulis baris kode.

Buka burp suite, lalu klik Next.

Karena masih awal maka kita pakai konfigurasi defaultnya, klik Start Burp.

Saat tampilan awal telah muncul pilih proxy.

Biarkan intercept off kita langsung klik Open Browser untuk menggunakan browser yang akan menyimpan response dan request ke dalam burp suite.

Buka di browser milik burp suite, masukkan target website kita yaitu http://testphp.vulnweb.com/
Pergi ke menu login dan buka burp suite lalu aktifkan mode intercept.
Masukkan user dan password apapun lalu klik login, maka request kepada server akan terekam oleh burp suite.

Kembali buka burp suite maka akan muncul request yang tertahan, pilih yang POST dan blok semua kodenya lalu klik kanan copy.
Buka command line yang telah terhubung dengan Debian attack tadi lalu buat file baru
nano target
paste kode dari burp suite lalu save CTRL + s dan CTRL + x

Saatnya kita lakukan penyerangan kepada target menggunakan sqlmap, kita cek apakah website memiliki celah keamanan dengan mengetik
sqlmap -r target --batch
-r = menggunakan request http dari file
--batch = menonaktifkan input user sehingga akan berjalan default

Terlihat disini bahwa website memiliki celah pada keamanannya yang bisa kita lakukan injection dan mengambil data didalamnya.

Sekarang kita lakukan injection untuk mengambil database dan table yang ada.
sqlmap -r target --batch --dbs --tables
--dbs = menampilkan database yang ada target
--tables = menampilkan table yang ada pada target

Karena akan ada banyak database dan table yang muncul dari target, maka kita cari nama yang menarik untuk kita ekstrak datanya.
Pada kasus ini terlihat ada table users yang disimpan didalam database acuart, langsung saja kita dump atau ekstrak untuk melihat isinya.
sqlmap -r target --batch -D acuart -T users --dump
-D = merujuk pada database tertentu
-T = merujuk pada table tertentu
--dump = mengekstrak data yang ada pada table dan database.

Alhamdulillah kita telah berhasil mengekstrak data yang ada pada table users dan mendapatkan semua data user pada target.

Sekarang kita coba untuk melakukan login dengan menggunakan uname dan pass yang kita dapatkan melalui injection.

Kita sudah berhasil login dan data yang keluar sama dengan hasil injection tadi.

Saat kondisi seperti ini maka data semua user target sudah dimiliki oleh hacker, akan sangat berbahaya apabila metode ini disalahgunakan.

Defend Session

Data sudah terekstrak dan dimiliki hacker maka kita akan sangat susah untuk menyelamatkannya, namun untuk mencegah hal tersebut terjadi bisa lakukan beberapa hal berikut.

Meminimalisir Hak Akses Database
Jika kita menerapkan hal ini maka akan dapat mengurangi potensi untuk dilakukannya SQL Injection karena setiap Database akan dibedakan hak akses sesuai tingkat kepentingannya.
Contohnya :
GRANT ALL ON db.users TO "guest"@"localhost";
Maka hak akses guest hanya bisa melakukan aksinya pada table "users" yang ada di database "db" sehingga akan lebih aman.

Melakukan Escaping Input
Teknik ini dilakukan dengan cara menambahkan karakter escape ke dalam input user untuk mencegahnya menjadi kode SQL sehingga mempertahakan input user sebagai string biasa.
Contohnya :
Misal saat user memasukkan input injec'tion maka akan ditambahkan karakter escape dan berubah menjadi injec\'tion.
Tanda kutip tunggal (`) yang berbahaya bagi keamanan akan diubah menjadi karakter biasa menggunakan escape (\).

Sekian dari saya Terima Kasih, Wassalamu'alaikum Warahmatullahi Wabarakatuh.

Comments