Langkah Menonaktifkan shell_exec
Untuk menonaktifkan fungsi shell_exec dan fungsi eksekusi perintah sistem lainnya di PHP, Anda harus memodifikasi file konfigurasi php.ini. Langkah ini krusial untuk mencegah serangan Remote Code Execution (RCE) yang sering memanfaatkan fungsi ini untuk menjalankan perintah shell di tingkat server.
Prosedur Teknis
- Cari lokasi file
php.iniaktif Anda dengan menjalankan perintahphp --inidi terminal atau membuat fileinfo.phpdengan isi<?php phpinfo(); ?>. - Buka file tersebut menggunakan editor teks (seperti nano atau vi).
- Cari direktif
disable_functions. Jika belum ada, tambahkan baris baru. - Masukkan daftar fungsi yang ingin dinonaktifkan, dipisahkan dengan koma.
- Simpan perubahan dan restart layanan web server (Apache atau PHP-FPM).
disable_functions = shell_exec, exec, system, passthru, proc_open, popen, curl_multi_exec, parse_ini_file, show_sourceTabel Fungsi Berbahaya yang Wajib Dinonaktifkan
| Fungsi | Deskripsi Risiko |
|---|---|
| shell_exec | Menjalankan perintah shell dan mengembalikan output sebagai string. |
| exec | Menjalankan perintah eksternal. |
| system | Menjalankan perintah eksternal dan menampilkan output langsung. |
| passthru | Menjalankan perintah eksternal dan menampilkan output mentah. |
| proc_open | Membuka proses untuk input/output, sangat berisiko untuk RCE. |
Verifikasi Perubahan
Setelah melakukan restart pada web server, pastikan fungsi tersebut benar-benar telah dinonaktifkan dengan menjalankan skrip PHP berikut:
<?php
if (function_exists('shell_exec')) {
echo "shell_exec masih aktif.";
} else {
echo "shell_exec telah dinonaktifkan.";
}
?>Tips Troubleshooting
Jika aplikasi web Anda memerlukan fungsi tertentu untuk berjalan, pastikan untuk tidak memasukkan fungsi tersebut ke dalam daftar disable_functions. Selalu lakukan pengujian di lingkungan staging sebelum menerapkan perubahan pada server produksi. Jika Anda menggunakan panel kontrol seperti cPanel atau Plesk, pengaturan ini biasanya tersedia di menu 'MultiPHP INI Editor'.