Web Penetration Testing : SQL Injection Dengan SQLMAP

Di tengah kemajuan teknologi digital, keamanan web menjadi aspek yang sangat penting untuk diperhatikan. Salah satu ancaman serius yang sering mengintai aplikasi web adalah SQL Injection, yaitu teknik serangan di mana penyerang dapat memasukkan pernyataan SQL berbahaya ke dalam query yang dijalankan oleh aplikasi. SQL Injection dapat menimbulkan kerugian besar, mulai dari pencurian data sensitif, modifikasi basis data, hingga pengambilalihan kontrol penuh terhadap server.

Untuk mengatasi dan mencegah serangan ini, pengujian penetrasi (penetration testing) menjadi langkah penting dalam mengidentifikasi dan memperbaiki kerentanan pada aplikasi web. Salah satu alat yang sangat efektif untuk melakukan pengujian penetrasi terhadap SQL Injection adalah SQLMAP. SQLMAP adalah alat open-source yang otomatis memudahkan proses pendeteksian dan eksploitasi kerentanan SQL Injection, serta menyediakan berbagai fitur untuk analisis lebih lanjut. Anda bisa mengunjungi langsung repositori GitHub SQLMAP.

SQL Injection

SQL Injection adalah teknik serangan keamanan di mana penyerang memasukkan atau "menyuntikkan" pernyataan SQL yang berbahaya ke dalam input yang kemudian diproses oleh basis data aplikasi. Serangan ini memanfaatkan kerentanan dalam cara aplikasi web menangani input pengguna, memungkinkan penyerang untuk memanipulasi query SQL yang dieksekusi oleh server. Akibatnya, penyerang dapat melakukan berbagai aksi jahat seperti:

  • Mencuri Data Sensitif: Mengakses data pribadi pengguna yang tersimpan di basis data.
  • Mengubah Data: Memodifikasi atau menghapus data penting.
  • Menjalankan Perintah Arbitrary: Menjalankan perintah SQL yang dapat mengganggu integritas sistem.
  • Mengambil Alih Kontrol: Mengambil kendali penuh terhadap server basis data.

Pencegahan SQL Injection melibatkan praktik pemrograman yang aman, seperti penggunaan prepared statements, parameterized queries, dan input validation. Seperti pada contoh artikel yang pernah penulis buat cara mencegah SQL Injection dengan PDO PHP.

Tutorial

  1. Langkah pertama, di sini penulis menggunakan Linux WSL untuk menggunakan tool SQLMAP nya. Penulis harap Anda sudah menginstall tool tersebut di sistem operasi masing masing. Tangkapan layar :
  2. Untuk melihat daftar bantuan SQLMAP, ketik di bawah ini :
  3. python3 sqlmap.py -h

    Hasil :

  4. Untuk sasaran, penulis sudah siapkan pada URL aplikasi web di bawah ini :
  5. http://testphp.vulnweb.com/artists.php?artist=1

    Perlu di ingat, sasaran di atas adalah legal untuk di eksploitasi.

  6. Selanjutnya untuk menyerang, penulis ingin mengetahui apakah sasaran rentan terhadap serangan SQL Injection dengan mengetikkan perintah berikut :
  7. python3 sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1

    Penjelasan :

    Perintah python3 sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 digunakan untuk menguji kerentanan SQL Injection pada URL yang ditentukan. Perintah ini menjalankan SQLMAP menggunakan Python 3 dan menargetkan URL http://testphp.vulnweb.com/artists.php?artist=1, di mana parameter artist dengan nilai 1 akan diuji. SQLMAP akan memindai URL tersebut dan mencoba mendeteksi serta mengeksploitasi kerentanan SQL Injection secara otomatis.

    Hasil :

    Gambar di atas penulis berhasil mengetahui bahwa sasaran rentan terhadap serangan tersebut. Di karenakan SQLMAP berhasil mengirimkan payload SQL Injection pada sasaran dan mengembalikan hasil seperti database yang di gunakan, web server, sistem operasi.

  8. Penulis ingin mengetahui ada berapa database yang di miliki sasaran dengan mengetik perintah ini :
  9. python3 sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --dbs

    Penjelasan :

    Opsi --dbs menginstruksikan SQLMAP untuk memeriksa dan menampilkan semua basis data yang dapat diakses jika ditemukan kerentanan SQL Injection.

    Hasil :

    Hasil di atas sasaran memiliki dua database dengan nama database acuart dan information_schema.

  10. Penulis ingin melihat semua tabel yang ada pada kedua database tersebut pada perintah di bawah ini :
  11. python3 sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --tables

    Penjelasan :

    Opsi --tables menginstruksikan SQLMAP untuk memeriksa dan menampilkan semua tabel dalam basis data yang dapat diakses jika ditemukan kerentanan SQL Injection pada sasaran.

    Hasil :

  12. Selanjutnya, penulis ingin mengambil alih tabel bernama users beserta kolom pada database bernama acuart. Perintah nya :
  13. python3 sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --columns -D acuart -T users

    Penjelasan :

    Opsi --columns menginstruksikan SQLMAP untuk memeriksa dan menampilkan semua kolom. Opsi -D acuart menentukan basis data yang diakses yaitu acuart, dan opsi -T users menentukan tabel yang diakses yaitu users jika ditemukan kerentanan SQL Injection.

    Hasil :

  14. Terakhir, penulis akan ambil data tersebut pada perintah di bawah ini :
  15. python3 sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --dump -D acuart -T users --batch

    Penjelasan :

    Opsi --dump menginstruksikan SQLMAP untuk mengekstrak data, -D acuart menentukan basis data bernama acuart, dan -T users menentukan tabel yaitu users. Terakhir, opsi --batch memungkinkan SQLMAP untuk berjalan dalam mode batch, otomatis memilih opsi default untuk semua prompt sehingga tidak memerlukan input manual selama eksekusi.

    Hasil :

    Hasil SQLMAP menunjukkan bahwa SQLMAP mencoba melakukan cracking password berbasis kamus namun tidak berhasil menemukan password yang mengandung enkripsi password tipe MD5 pada kolom password. Setelah itu, SQLMAP hanya menampilkan isi tabel users dari database acuart, yang mengandung informasi seperti nomor kartu kredit, cart, password yang hanya berupa plain text, email, nomor telepon, username, nama, dan alamat.

  16. Selesai.

Penutup

Teknik seperti SQL Injection merupakan ancaman serius yang dapat dieksploitasi oleh penyerang untuk merusak atau mengakses data sensitif dalam basis data aplikasi web. Melalui alat seperti SQLMAP, para profesional keamanan dapat melakukan uji penetrasi untuk mengidentifikasi dan mengatasi kerentanan SQL Injection yang ada, sehingga meningkatkan tingkat keamanan sistem secara keseluruhan. Terakhir, cara di atas adalah cara umum. Anda bisa mengeksplor lebih dalam lagi menggunakan SQLMAP seperti bagaimana membypass WAF ketika aplikasi web di lindungi teknologi tersebut.