Mematikan perintah exec pada Server Side Includes (SSI) di web server Apache merupakan langkah krusial pengamanan sistem untuk mencegah eksekusi kode arbitrer (Remote Code Execution) oleh pengguna tidak berwenang melalui manipulasi file HTML atau dokumen web. Direktif Includes dalam konfigurasi Apache mengizinkan penyisipan server-side, dan jika opsi IncludesNOEXEC tidak diterapkan atau modul mod_include dikonfigurasi terlalu longgar, penyerang dapat menyuntikkan perintah sistem operasi melalui tag <!--#exec cmd="..." -->.
Untuk menonaktifkan fitur eksekusi perintah SSI secara total atau sebagian, administrator sistem harus memodifikasi file konfigurasi utama Apache (seperti httpd.conf, apache2.conf), file konfigurasi virtual host, atau melalui penggunaan berkas .htaccess pada direktori web terkait.
Metode 1: Mengubah Konfigurasi Virtual Host atau httpd.conf
Cara paling aman dan terpusat untuk mematikan fungsi exec SSI adalah melalui blok konfigurasi direktori pada server utama atau file virtual host. Ubah penggunaan Options Includes menjadi Options IncludesNOEXEC atau hapus sama sekali kata kunci Includes.
<Directory "/var/www/html">
# Menerurkan SSI tetapi melarang penggunaan perintah eksekusi sistem
Options -ExecCGI IncludesNOEXEC
# Atau jika tidak memerlukan SSI sama sekali:
# Options -Includes
</Directory>
Setelah melakukan perubahan pada berkas konfigurasi server, simpan berkas tersebut dan lakukan pengujian sintaks untuk memastikan tidak ada kesalahan ketik sebelum memuat ulang layanan web server.
# Uji sintaks konfigurasi Apache
sudo apache2ctl configtest
# Muat ulang layanan Apache (Ubuntu/Debian)
sudo systemctl reload apache2
# Muat ulang layanan Apache (CentOS/RHEL)
sudo systemctl reload httpd
Metode 2: Menggunakan Berkas .htaccess
Jika Anda tidak memiliki akses root ke server utama namun penyedia hosting mengizinkan pengaturan direktori via berkas .htaccess, Anda dapat mematikan eksekusi SSI dengan menambahkan baris perintah pembatasan opsi direktori.
# Mencegah eksekusi perintah SSI melalui .htaccess
Options -IncludesNOEXEC
# Atau matikan total modul include untuk direktori ini
Options -Includes
Tabel Perbandingan Opsi Direktori SSI
| Opsi Konfigurasi | Status Fitur SSI | Status Perintah Exec | Tingkat Keamanan |
|---|---|---|---|
Options +Includes |
Aktif | Aktif (Berbahaya) | Rendah |
Options +IncludesNOEXEC |
Aktif | Nonaktif (Aman) | Tinggi |
Options -Includes |
Nonaktif Total | Nonaktif | Sangat Tinggi |
Langkah Verifikasi Keamanan
Untuk memastikan bahwa perintah exec pada SSI benar-benar telah nonaktif dan tidak dapat dieksploitasi, Anda dapat melakukan pengujian dengan mengunggah file uji berformat .shtml yang berisi skrip pemanggilan sistem:
<!--#exec cmd="ls" -->
Jika konfigurasi berhasil diterapkan dengan benar, web server akan mengembalikan pesan galat (error) internal server 500 atau mengabaikan tag tersebut tanpa menampilkan hasil keluaran dari perintah sistem operasi ls.
Troubleshooting Lapangan
Kendala yang sering ditemui setelah mengubah opsi konfigurasi adalah munculnya galat "Options ExecCGI and IncludesNOEXEC are off in this directory" pada log error Apache (error.log). Hal ini terjadi karena berkas .htaccess atau blok direktori turunan mencoba mengaktifkan fitur yang dibatasi oleh konfigurasi induk. Pastikan direktif AllowOverride pada konfigurasi utama server mengizinkan pengaturan Options jika Anda berencana mengaturnya melalui berkas .htaccess.