Berikut request yang saya dapatkan Ketika melakukan intercept
Selanjutnya dari hasil request tersebut saya kirim ke repeater, guna untuk melakukan edit & resend request Saya mencoba melakukan input single quote pada parameter nama_perusahaan, berikut respons yang saya dapatkan
Respons nya adalah 500 Internal Server Error, selanjutnya saya menambah string balance setelah single quote, untuk mengetahui apakah error atau normal Kembali respons nya
Responsnya adalah HTTP 200 OK, berarti dapat disimpulkan ini vulnerable terhadap SQL Injection.
Selanjutnya saya melakukan injeksi secara manual dengan exploit
' order by 2-- -
Untuk mengetahui dimana columnya berada, untuk kasus ini column berada di nomor 43 Respons di 43 yaitu 500 Internal Server Error
Selanjutnya saya melakukan union select sampai 43 dan melihat di angka berapa muncul dalam respons nya, gunanya untuk mencari jumlah data dari table lain
Terlihat respons nya yaitu menampilkan angka 13, 14 dan 11
Selanjutnya saya memasukkan query user(), database() dan version() Untuk mengetahui user, database dan version OS yang dipakai
Saya berhasil melihat data user & database nya. Sementara itu hasil scanning saya di Sqlmap mendapatkan 12 Database lainnya yang terdapat dalam web temank3.kemnaker.go.id
Dengan Command
sqlmap -u https://temank3.kemnaker.go.id/page/sertifikat_esmk3/ --data="nama_perusahaan=test&button_cari=" --level=3 --risk=3 --dbs
Solusi untuk menutup/memperbaiki kerentanan SQL Injection dapat menambahkan query mysql escape string, blacklist input karakter tertentu pada parameternya atau menggunakan WAF dan dilakukan masking pada di setiap parameternya.