SHTML (Server Side Includes HTML) adalah ekstensi file yang menginstruksikan web server untuk memproses arahan khusus (directives) di dalam dokumen sebelum mengirimkannya ke browser. Tanpa konfigurasi yang tepat, direktif SSI seperti #exec membuka celah keamanan fatal berupa Remote Code Execution (RCE), injeksi perintah sistem, dan Cross-Site Scripting (XSS). Artikel ini membahas praktik terbaik pengamanan SHTML untuk memitigasi risiko tersebut.
Ancaman utama pada file berformat SHTML bersumber dari penyalahgunaan fungsi eksekusi perintah eksternal. Jika pengguna dapat mengunggah file SHTML atau memanipulasi parameter input yang diproses oleh server, penyerang dapat menjalankan perintah shell arbitrer di tingkat sistem operasi.
Matriks Risiko dan Mitigasi Keamanan SHTML
| Vektor Ancaman | Penyebab Utama | Dampak Risiko | Solusi Mitigasi |
|---|---|---|---|
| Remote Code Execution (RCE) | Penggunaan direktif #exec cmd yang tidak dibatasi. |
Pengambilalihan server oleh penyerang. | Nonaktifkan total perintah #exec pada konfigurasi server. |
| Cross-Site Scripting (XSS) | Menampilkan variabel input pengguna tanpa sanitasi melalui #echo. |
Pencurian sesi pengguna atau manipulasi DOM. | Gunakan enkode output atau hindari penampilan input mentah. |
| Information Disclosure | Menyertakan file sensitif (misal: /etc/passwd atau file konfigurasi DB) via #include. |
Kebocoran kredensial dan struktur sistem. | Batasi direktori akses Includes menggunakan IncludesNOEXEC. |
Langkah Teknis Pengamanan Server Web
1. Konfigurasi Apache HTTP Server
Pada server Apache, modul mod_include harus dikonfigurasi dengan hati-hati. Hindari penggunaan opsi Includes secara bebas pada direktori yang dapat diunggah oleh publik (seperti folder /uploads/). Gunakan opsi IncludesNOEXEC agar direktif penyertaan file tetap berjalan namun fungsi eksekusi perintah sistem (#exec) dimatikan secara permanen.
<Directory "/var/www/html">
# Izinkan SSI tapi LARANG eksekusi perintah sistem
Options +IncludesNOEXEC
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</Directory>
2. Konfigurasi Nginx
Nginx tidak memiliki dukungan natif SSI seluas Apache, namun modul ngx_http_ssi_module menyediakan fungsi serupa. Pastikan direktif ssi hanya diaktifkan pada direktori internal yang aman dan matikan pemrosesan SSI pada direktori unggahan pengguna.
location / {
ssi on;
# Batasi agar tidak mengeksekusi perintah berbahaya
}
location /uploads/ {
ssi off;
# Cegah eksekusi SSI pada folder unggahan
</code>
3. Validasi dan Sanitasi Unggahan File
Jika aplikasi web Anda memungkinkan pengguna mengunggah file, terapkan validasi ekstensi yang ketat. Jangan pernah mengizinkan ekstensi .shtml, .stm, atau .shtm diunggah melalui form pengguna. Batasi jenis file hanya pada format aman seperti .jpg, .png, atau .pdf, serta simpan file tersebut di luar direktori eksekusi skrip.
Troubleshooting dan Deteksi Dini
Jika server Anda menunjukkan lonjakan penggunaan CPU yang tidak wajar atau terdapat file asing berekstensi SHTML di direktori publik, lakukan langkah-langkah investigasi berikut:
- Periksa log akses web (
access.log) untuk mencari pola permintaan yang mencurigakan, seperti injeksi parameter pada URL yang memuat file SHTML. - Gunakan perintah pemindaian integritas file seperti
AIDEatauTripwireuntuk mendeteksi perubahan tidak sah pada direktori web root. - Lakukan audit file secara berkala menggunakan perintah
find /var/www -name "*.shtml"untuk memastikan tidak ada file SHTML liar yang disisipkan oleh penyerang.