Definisi dan Mekanisme Eksploitasi SSI
Eksploitasi Server Side Includes (SSI) adalah teknik serangan injeksi di mana penyerang menyisipkan direktif SSI ke dalam aplikasi web yang kemudian dieksekusi oleh server. SSI sendiri merupakan mekanisme yang memungkinkan pengembang untuk menyertakan konten dinamis (seperti tanggal, waktu, atau file lain) ke dalam dokumen HTML sebelum dikirim ke browser pengguna. Jika input pengguna tidak divalidasi dengan benar, penyerang dapat menyuntikkan perintah sistem yang akan dijalankan dengan hak akses server web.
Vektor Serangan Utama
Serangan terjadi ketika aplikasi web mencerminkan input pengguna (misalnya melalui formulir, parameter URL, atau header HTTP) ke dalam halaman yang diproses oleh server dengan modul SSI aktif (biasanya mod_include pada Apache). Penyerang akan memasukkan sintaks SSI untuk mengeksekusi perintah shell atau membaca file sensitif.
| Direktif SSI | Fungsi Eksploitasi |
|---|---|
| <!--#exec cmd="..."--> | Menjalankan perintah sistem operasi (RCE). |
| <!--#include virtual="..."--> | Membaca file lokal (LFI) seperti /etc/passwd. |
| <!--#printenv--> | Mencetak variabel lingkungan, termasuk kunci API. |
| <!--#config errmsg="..."--> | Memanipulasi pesan error untuk pengintaian. |
Contoh Injeksi Perintah
Jika sebuah aplikasi mengambil nama pengguna dari input dan menampilkannya tanpa sanitasi, penyerang dapat mengirimkan payload berikut:
<!--#exec cmd="cat /etc/passwd"-->Jika server mengizinkan eksekusi, konten file /etc/passwd akan dirender langsung ke dalam halaman HTML yang dilihat oleh penyerang.
Langkah Mitigasi dan Pengamanan
Untuk mencegah eksploitasi SSI, administrator sistem dan pengembang harus menerapkan strategi pertahanan berlapis:
- Nonaktifkan SSI: Jika tidak diperlukan, matikan modul
mod_includepada konfigurasi server web (Apache/Nginx). - Validasi Input: Terapkan input sanitization yang ketat. Tolak karakter khusus seperti
<,>,#, dan"jika tidak diperlukan. - Prinsip Least Privilege: Jalankan proses server web dengan pengguna yang memiliki hak akses minimal (bukan root).
- Konfigurasi Server: Gunakan opsi
IncludesNOEXECpada Apache untuk menonaktifkan direktifexec, sehingga perintah sistem tidak dapat dijalankan meskipun SSI aktif. - Web Application Firewall (WAF): Gunakan WAF untuk mendeteksi dan memblokir pola string yang mengandung sintaks SSI berbahaya.
Troubleshooting Keamanan
Jika Anda mencurigai adanya injeksi SSI, periksa log akses server untuk mencari permintaan yang mengandung string #exec atau #include. Segera lakukan pembersihan pada file yang terinfeksi dan perbarui kode aplikasi untuk memastikan input pengguna di-encode sebelum ditampilkan ke browser.