Modul mod_include pada web server Apache menangani Server Side Includes (SSI), sebuah mekanisme penyisipan direktif dinamis ke dalam halaman web statis. Dari sudut pandang keamanan, modul ini menyimpan risiko inheren yang signifikan, terutama terkait eksekusi perintah sistem (Remote Code Execution) melalui direktif #exec dan potensi pembocoran informasi sensitif (Information Disclosure) lewat direktif #include atau #printenv. Administrator server wajib mengonfigurasi batasan ketat untuk mencegah eksploitasi oleh pihak tak berwenang.
Ancaman utama pada mod_include muncul ketika pengguna jahat dapat mengunggah atau memodifikasi file HTML/SHTML yang diproses oleh server. Jika direktif #exec diizinkan, penyerang dapat menjalankan perintah sistem operasi secara langsung di bawah hak akses proses web server (misalnya www-data atau apache), yang berujung pada kompromi total sistem.
Vektor Serangan Utama pada Mod Include
Penggunaan SSI yang tidak dibatasi membuka beberapa celah eksploitasi umum yang sering dimanfaatkan dalam peretasan aplikasi web:
- Eksekusi Perintah Sistem (
#exec cmd): Memungkinkan penyisipan perintah shell langsung ke dalam dokumen. Contoh:<!--#exec cmd="cat /etc/passwd" -->. - Penyertaan File Lokal (
#include virtual/file): Memungkinkan pembacaan file sistem atau file konfigurasi sensitif yang berada di luar direktori web publik jika proteksi direktori tidak dikonfigurasi dengan benar. - Pengungkapan Variabel Lingkungan (
#printenv): Menampilkan seluruh variabel lingkungan server, termasuk kredensial database atau token rahasia yang mungkin tersimpan di lingkungan sistem.
Tabel Parameter Keamanan Mod Include
| Direktif / Fitur | Risiko Keamanan | Rekomendasi Pengamanan |
|---|---|---|
Options Includes |
Mengaktifkan pemrosesan SSI secara umum pada direktori. | Gunakan hanya pada direktori yang membutuhkan dan kombinasikan dengan IncludesNOEXEC. |
Options +IncludesNOEXEC |
Sedang. Mengizinkan SSI tetapi melarang penggunaan perintah #exec. |
Direkomendasikan untuk sebagian besar lingkungan produksi standar. |
#exec cmd |
Kritikal. Membuka pintu Remote Code Execution (RCE). | Matikan secara permanen dengan menonaktifkan modul atau menggunakan IncludesNOEXEC. |
#printenv |
Tinggi. Membocorkan variabel sistem dan kredensial rahasia. | Batasi akses file SHTML hanya bagi pengembang yang kredibel. |
Langkah Pengerasan Konfigurasi (Hardening) Apache
Untuk mengamankan server Apache dari eksploitasi mod_include, terapkan langkah-langkah teknis berikut pada file konfigurasi utama (httpd.conf atau dalam blok <Directory>):
<Directory "/var/www/html">
# Hanya izinkan SSI tanpa perintah eksekusi sistem
Options -Includes +IncludesNOEXEC
# Pastikan ekstensi file yang diproses dibatasi
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</Directory>
- Nonaktifkan Eksekusi Perintah: Ganti opsi
IncludesmenjadiIncludesNOEXECpada blok konfigurasi direktori untuk melumpuhkan fungsi#exec cgidan#exec cmd. - Batasi Pemetaan Ekstensi: Jangan terapkan filter
INCLUDESsecara global pada file dengan ekstensi.htmlatau.htm, karena dapat menurunkan performa server dan meningkatkan risiko jika pengguna dapat mengunggah file HTML biasa. Batasi hanya pada ekstensi khusus seperti.shtml. - Terapkan Hak Akses File (Permissions): Pastikan file yang dapat diproses oleh SSI tidak memiliki izin tulis (write permission) bagi pengguna umum atau grup sistem web server.
- Evaluasi Kebutuhan Modul: Jika aplikasi web modern tidak menggunakan Server Side Includes sama sekali, nonaktifkan modul secara total melalui perintah manajemen modul (misalnya
a2dismod includepada Ubuntu/Debian).
Troubleshooting dan Validasi Keamanan
Setelah melakukan perubahan konfigurasi, lakukan validasi untuk memastikan direktif berbahaya telah terblokir:
- Uji coba dengan menyisipkan
<!--#exec cmd="id" -->pada halaman uji. Jika konfigurasi aman, server harusnya mengembalikan pesan error ([an error occurred while processing this directive]) atau mengabaikannya sama sekali, dan perintah tidak boleh dieksekusi. - Periksa log error Apache (
error.log) secara berkala untuk mendeteksi upaya eksekusi direktif yang gagal atau akses file ilegal oleh pengguna luar.