SSI Injection (Server Side Includes Injection) adalah kerentanan keamanan web yang terjadi ketika aplikasi memasukkan data yang disediakan oleh pengguna ke dalam halaman web tanpa validasi atau sanitasi yang memadai, sehingga memungkinkan penyerang mengeksekusi perintah sistem operasi atau direktif SSI secara ilegal pada server web.
Kerentanan ini tergolong dalam kategori injeksi yang diawasi oleh OWASP (Open Worldwide Application Security Project). Jika aplikasi web mengaktifkan modul SSI (seperti includes pada server Apache atau IIS) dan memproses input berbahaya dari parameter URL, form, atau header HTTP, server akan mengeksekusi perintah tersebut atas nama aplikasi web.
Mekanisme Kerja dan Contoh Kerentanan SSI Injection
Server Side Includes adalah bahasa scripting sisi server yang sederhana, umumnya digunakan pada server Apache untuk menyertakan file lain atau menampilkan variabel lingkungan ke dalam dokumen HTML. Direktif SSI biasanya diawali dengan sintaks <!--# dan diakhiri dengan -->.
Contoh direktif SSI standar untuk menampilkan tanggal:
<!--#echo var="DATE_LOCAL" -->
Kerentanan muncul ketika aplikasi mengambil input pengguna secara langsung dan menampilkannya kembali menggunakan SSI. Sebagai contoh, jika sebuah aplikasi menyapa pengguna berdasarkan parameter nama:
http://vulnerable-site.com/welcome.php?name=John
Jika kode backend rentan dan memproses input tanpa pembersihan, penyerang dapat memasukkan payload SSI seperti berikut untuk membaca file sensitif atau mengeksekusi perintah:
http://vulnerable-site.com/welcome.php?name=<!--#exec cmd="cat /etc/passwd" -->
Matriks Karakteristik dan Dampak SSI Injection
| Parameter | Keterangan Teknis |
|---|---|
| Vektor Serangan | Parameter GET/POST, Cookie, HTTP Headers, Input Form. |
| Komponen Terdampak | Server Web (Apache, Nginx dengan modul SSI, IIS). |
| Dampak Keamanan | Remote Code Execution (RCE), pembacaan file sistem, Information Disclosure, potensi pengambilalihan server. |
| Tingkat Risiko (OWASP) | High hingga Critical (tergantung hak akses proses web server). |
Langkah Mitigasi dan Pencegahan SSI Injection
Mengamankan aplikasi web dari serangan SSI Injection membutuhkan pendekatan berlapis, mulai dari konfigurasi server hingga validasi kode aplikasi.
- Nonaktifkan SSI Jika Tidak Digunakan: Matikan modul Server Side Includes pada konfigurasi server web (misalnya
Includespada direktifOptionsdi Apache) jika aplikasi tidak membutuhkannya. - Validasi dan Sanitasi Input: Terapkan pendekatan allowlisting (daftar putih) untuk karakter yang diizinkan pada input pengguna. Tolak karakter khusus seperti
<,!,#,-, dan>jika input tidak seharusnya mengandung markup HTML atau SSI. - Gunakan Output Encoding: Lakukan enksekusi konteks atau HTML encoding pada semua data yang berasal dari pengguna sebelum ditampilkan kembali ke browser.
- Batasi Hak Akses Server: Jalankan proses web server dengan akun pengguna yang memiliki hak istimewa minimal (principle of least privilege) untuk membatasi kerusakan jika terjadi eksekusi perintah sistem.
Troubleshooting dan Pengujian Keamanan
Untuk mendeteksi adanya kerentanan SSI Injection pada aplikasi web, penguji keamanan (penetration tester) biasanya menyuntikkan payload tidak berbahaya seperti direktif waktu atau variabel lingkungan, lalu mengamati apakah server merespon dengan mengeksekusi direktif tersebut. Pastikan pengujian selalu dilakukan di lingkungan staging atau dengan izin tertulis dari pemilik sistem.