Deteksi kerentanan Server Side Includes (SSI) dilakukan dengan mengidentifikasi apakah aplikasi web memproses input pengguna secara tidak aman ke dalam direktif SSI server, yang dapat berujung pada eksekusi perintah sistem atau pembacaan file sensitif. Kerentanan ini terjadi ketika data yang dikirimkan oleh klien (melalui parameter GET, POST, HTTP headers, atau cookie) dimasukkan langsung ke dalam halaman yang diurai oleh modul SSI web server (seperti Apache mod_include) tanpa proses sanitasi yang memadai.
Untuk menemukan celah ini secara efektif, penguji keamanan menggunakan kombinasi pengujian manual dengan payload injeksi spesifik, pemindaian otomatis menggunakan pemindai kerentanan web, serta analisis konfigurasi server web yang aktif menangani file dengan ekstensi tertentu (.shtml, .shtm, .stm).
Metodologi Deteksi Kerentanan SSI Injection
Proses deteksi dimulai dengan memetakan titik masuk (entry points) di mana input pengguna dipantulkan kembali ke dalam respons halaman web. Jika server dikonfigurasi untuk mengeksekusi direktif SSI pada halaman tersebut, injeksi direktif dasar dapat memicu perubahan respons.
1. Pengujian Dasar (Basic Detection Payload)
Langkah awal adalah menyisipkan direktif SSI yang tidak berbahaya untuk melihat apakah direktif tersebut dieksekusi oleh server. Contoh direktif yang umum digunakan:
# Menampilkan tanggal sistem saat ini
<!--#echo var="DATE_LOCAL" -->
# Menampilkan variabel lingkungan tertentu
<!--#echo var="DOCUMENT_NAME" -->
Jika teks atau tanggal aktual dari server muncul pada respons halaman (bukan string mentah <!--#echo...-->), maka server rentan terhadap eksekusi SSI.
2. Pengujian Lanjutan (Command Execution Payload)
Jika direktif dasar berhasil dieksekusi, pengujian dilanjutkan untuk memeriksa apakah direktif eksekusi perintah sistem (exec) diizinkan oleh konfigurasi server:
# Mengeksekusi perintah sistem operasional (Contoh: id atau dir)
<!--#exec cmd="id" -->
# Membaca file sistem sensitif
<!--#include virtual="/etc/passwd" -->
| Tipe Payload SSI | Sintaks Contoh | Indikator Keberhasilan (Vulnerable) |
|---|---|---|
| Echo Variable | <!--#echo var="DATE_GMT" --> |
Waktu GMT server tercetak pada halaman web. |
| Include File | <!--#include virtual="/index.html" --> |
Isi dari file target termuat di dalam halaman respons. |
| Exec Command | <!--#exec cmd="whoami" --> |
Output terminal dari perintah sistem muncul di respons. |
Alat Bantu (Tools) untuk Deteksi Otomatis
Selain pengujian manual, beberapa perangkat lunak pemindai keamanan dapat mendeteksi keberadaan SSI Injection secara otomatis:
- OWASP ZAP (Zed Attack Proxy): Menggunakan aturan pemindaian pasif dan aktif untuk mendeteksi injeksi skrip sisi server.
- Burp Suite Professional: Melalui fitur Scanner atau penggunaan modul Intruder dengan daftar payload SSI kustom.
- Nikto: Pemindai kerentanan web open-source yang memeriksa file usang dan konfigurasi SSI yang rentan pada direktori server.
Langkah Mitigasi dan Pencegahan
Setelah kerentanan terdeteksi, perbaikan harus segera diterapkan pada tingkat konfigurasi server dan kode aplikasi:
- Nonaktifkan Eksekusi Perintah: Pastikan direktif
execdinonaktifkan pada konfigurasi server web (misalnya pada Apache dengan memastikan modulIncludestidak mengizinkanIncludesNOEXECdimatikan secara longgar). - Validasi Input Pengguna: Terapkan input sanitization dan output encoding yang ketat untuk semua data yang diterima dari pengguna sebelum dipantulkan ke halaman web.
- Batasi Penggunaan Ekstensi .shtml: Hanya aktifkan penguraian SSI pada direktori atau file yang benar-benar membutuhkannya.