October 9, 2026
Error-Based SQL Injection di Portal Perizinan Pemerintah Kabupaten [REDACTED] via Parameter id
1. Ringkasan Eksekutif (Executive Summary / TL;DR)

By Mencari si dia
2 min read
1. Ringkasan Eksekutif (Executive Summary / TL;DR)
- Jenis Kerentanan: SQL Injection (Error-Based)
- Vektor: Parameter URL (
id) - Dampak: Eksekusi query SQL yang tidak sah, kebocoran informasi struktur database melalui pesan error, dan potensi eksfiltrasi data sensitif.
- Status: Unfixed (Dilaporkan, belum ada balasan, belum diperbaiki)
- Severity: Critical
2. Pendahuluan (Introduction)
Halo, saya Primandito Adi Setiya, seorang bug hunter. Pada 14 November 2025, saya sedang melakukan vulnerability testing pada portal layanan publik milik Pemerintah Kabupaten [REDACTED].
Saat menguji fitur persyaratan perizinan pada portal tersebut, saya menemukan sebuah celah Error-Based SQL Injection. Celah ini muncul karena input dari parameter URL id tidak disanitasi dengan benar sebelum dimasukkan ke dalam query database.
Artikel ini akan membahas bagaimana saya menemukannya, cara mereproduksinya, hingga dampak dari kerentanan ini.
3. Detail Kerentanan (Vulnerability Details)
Aplikasi menerima input dari parameter URL id dan memasukkannya secara langsung ke dalam query SQL tanpa melakukan escaping atau prepared statements. Ketika penyerang menyisipkan karakter khusus (seperti tanda kutip tunggal '), query SQL menjadi rusak dan memicu error.
Karena aplikasi menampilkan pesan error mentah dari database (MySQL) ke layar pengguna, penyerang dapat memanfaatkan informasi ini untuk memetakan struktur database, nama tabel, hingga berpotensi mengekstrak data sensitif.
4. Langkah Reproduksi (Steps to Reproduce / PoC)
Berikut adalah langkah-langkah untuk mereproduksi kerentanan ini:
Step 1: Identifikasi Target
Buka halaman persyaratan perizinan pada target:
https://redacted.redactedkab.go.id/index.php?com=persyaratan&id=1
Step 2: Injeksi Payload (Error-Based Test)
Ubah nilai parameter id dengan menambahkan karakter tanda kutip tunggal ('):
https://redacted.redactedkab.go.id/index.php?com=persyaratan&id='
Step 3: Analisis Error Setelah URL diakses, aplikasi menampilkan pesan error SQL mentah dari MySQL:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''" at line 1You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''" at line 1
Step 4: Status Perbaikan (Post-Fix) Hingga writeup ini dipublikasikan (9 Oktober 2026), pihak terkait belum memberikan respons dan kerentanan ini belum diperbaiki. Payload yang sama masih dapat memicu error SQL.
5. Dampak (Impact)
Kerentanan SQL Injection ini sangat berbahaya. Dengan informasi yang didapatkan, penyerang dapat:
- Information Disclosure: Membaca struktur database (nama tabel, kolom) melalui pesan error yang bocor.
- Eksfiltrasi Data: Berpotensi mengekstrak data sensitif seperti kredensial admin, data pengguna, atau informasi internal lainnya.
- Manipulasi Data: Jika privilege database cukup tinggi, penyerang bisa memodifikasi atau menghapus data yang ada.
- Bypass Authentication: Dalam beberapa kasus, SQLi dapat digunakan untuk melewati halaman login.
6. Rekomendasi Perbaikan (Remediation)
Untuk mencegah kerentanan ini terulang, ada tiga langkah krusial yang harus dilakukan:
- Gunakan Prepared Statements: Selalu gunakan prepared statements (parameterized queries) untuk memisahkan kode SQL dari input pengguna.
- Validasi Input: Batasi karakter yang diizinkan pada parameter
id(misalnya, hanya angka) dan tolak input yang mencurigakan. - Matikan Pesan Error di Produksi: Jangan pernah menampilkan pesan error database mentah ke pengguna. Alihkan ke halaman error kustom dan catat detail error ke log internal saja.
7. Timeline (Kronologi)
- 14 November 2025: Menemukan kerentanan dan melakukan verifikasi PoC.
- 14 November 2025: Melaporkan kerentanan ke pihak terkait.
- [Hingga 9 Oktober 2026]: Tidak ada balasan atau konfirmasi dari pihak terkait.
- 9 Oktober 2026: Melakukan pengecekan ulang, kerentanan belum diperbaiki. Writeup dipublikasikan sebagai dokumentasi portofolio dan pengingat akan pentingnya responsible disclosure.
8. Penutup & About Me
Kerentanan ini menjadi pengingat bahwa sanitasi input pada parameter URL sangatlah krusial. Meskipun laporan ini tidak mendapatkan balasan dan belum diperbaiki, saya tetap mendokumentasikannya sebagai bagian dari portofolio dan bukti kontribusi saya dalam menjaga keamanan siber.
Saya berharap pihak terkait dapat segera menindaklanjuti laporan ini demi keamanan data dan pengguna. Bagi para bug hunter, tetap semangat dan jangan pernah berhenti belajar. Happy hunting!