Inti Masalah SHTML
SHTML (Server Side HTML) adalah file HTML yang mengandung perintah Server Side Includes (SSI). Kelemahan utama SHTML terletak pada arsitekturnya yang memungkinkan eksekusi perintah di sisi server sebelum halaman dikirim ke browser. Jika konfigurasi server tidak ketat, penyerang dapat melakukan injeksi perintah (SSI Injection) untuk mengeksekusi skrip berbahaya, mencuri data sensitif, atau mengambil alih kontrol server.
Tabel Analisis Risiko Keamanan SHTML
| Jenis Ancaman | Deskripsi Teknis | Dampak |
|---|---|---|
| SSI Injection | Input pengguna yang tidak disanitasi dimasukkan ke dalam file SHTML. | Eksekusi perintah sistem (RCE) oleh penyerang. |
| Information Disclosure | Penggunaan direktif #include yang salah konfigurasi. | Kebocoran file konfigurasi atau password server. |
| Overhead Performa | Server harus memproses file setiap kali ada permintaan. | Peningkatan beban CPU dan latensi respons. |
Mengapa SHTML Rentan?
SHTML bekerja dengan cara memindai file untuk mencari direktif SSI seperti <!--#exec cmd="..."-->. Masalah muncul ketika aplikasi web mengizinkan input pengguna (seperti kolom komentar atau parameter URL) untuk ditulis langsung ke dalam file yang diproses oleh server. Jika input tersebut mengandung perintah SSI, server akan mengeksekusinya dengan hak akses pengguna web server (biasanya www-data atau apache).
Risiko Eksekusi Perintah (RCE)
Jika direktif #exec diaktifkan di konfigurasi server (seperti pada Apache mod_include), penyerang dapat menjalankan perintah shell. Contoh payload berbahaya:
<!--#exec cmd="cat /etc/passwd"-->Perintah di atas akan memaksa server menampilkan isi file sistem yang sangat sensitif. Meskipun banyak administrator menonaktifkan #exec, kerentanan lain seperti #include tetap bisa digunakan untuk membaca file lokal (Local File Inclusion/LFI).
Perbandingan SHTML dengan Teknologi Modern
| Fitur | SHTML (SSI) | PHP / Node.js |
|---|---|---|
| Keamanan | Sangat Rendah (Raw Execution) | Tinggi (dengan sanitasi) |
| Fleksibilitas | Terbatas (Hanya include/exec) | Sangat Tinggi (Logika penuh) |
| Performa | Lambat (Parsing per request) | Cepat (Caching/Opcode) |
Langkah Mitigasi dan Rekomendasi
- Nonaktifkan SSI: Jika tidak benar-benar diperlukan, matikan modul
mod_includedi Apache atau server web lainnya. - Gunakan Konfigurasi Ketat: Jika harus menggunakan SSI, pastikan direktif
IncludesNOEXECdiaktifkan untuk mencegah eksekusi perintah shell. - Sanitasi Input: Jangan pernah memasukkan input pengguna langsung ke dalam file yang diproses oleh SSI.
- Migrasi ke Framework Modern: Gunakan bahasa sisi server yang lebih aman seperti PHP, Python (Django/Flask), atau Node.js yang memiliki mekanisme keamanan bawaan terhadap injeksi.
SHTML adalah teknologi warisan (legacy) yang tidak dirancang untuk standar keamanan web modern. Penggunaan SHTML saat ini sangat tidak disarankan untuk aplikasi yang menangani data pengguna atau berinteraksi dengan database.