Mengaktifkan fungsi PHP exec pada aaPanel, berbahaya?

exec for command php.jpg

Beberapa aplikasi berbasis web mungkin membuatuhkan fungsi exec, terutama aplikasi yang di buat dengan bahasa pemrograman PHP. Exec merupakan fungsi bawaan yang di sediakan oleh PHP untuk mengeksekusi atau menjalankan perintah berbasis shell

Untuk apa perintah shell? Perintah ini dapat di gunakan untuk mendaftarkan dan membuat proses baru, mengelolah sistem operasi, dan berkomunikasi dengan aplikasi lain yang ter-install pada sistem server. Fungsi exec() secara default tidak di aktifkan pada installasi PHP.

Untuk mengaktifkanya, anda bisa mencari file php.ini ( yang merupakan konfigurasi dari installasi php ) dan hapus nama exec pada variabel dissabled function. Mengaktifkan fungsi exec mempunyai resiko keamanan yang tinggi. Di sini akan di paparkan, resiko keamanan seperti apa yang akan terjadi, semoga anda bisa memahami dan mengatasinya.

Exec memungkinkan skrip PHP dapat menjalankan perintah shell, perintah shell dapat mengendalikan server kita sendiri. Fungsi shell berbahaya digunakan jika anda merupakan seorang penyedia web hosting, jika fungsi ini di aktifkan pada versi PHP yang terpasang, maka pelanggan akan mempunyai akses ke server utama.

Kerentanan lain pada fungsi exec adalah pada sanitasi input, apabila ingin mennjalankan fungsi ini, sebaiknya tidak menerima perintah secara langsung dari $_GET, $_POST, maupun $_PUT. Jika anda berencana menginstall CMS dari luar seperti wordpress, atau CMS lain yang keamanannya banyak bermasalah, sebaiknya jangan mengaktifkan exec.

Seperti yang kita ketahui wordpress banyak mengandung celah keamanan yang belum di tambal. Celah keamanan ini adalah celah ketidak sadaran pengguna terhadap program ekstensi/plugin nuled. Sudah banyak situs wordpress yang menjadi korban akibat kerentanan tersebut.

Secara umum exec tidak berbahaya bila kita menjaga dengan teliti, jangan sampai ada penyusup yang dapat memasukan program jahat mereka ( penyusup ), jangan mengaktifkan exec jika kamu adalah sebagai seorang penyedia hosting.

Untuk menjaga keamanan lebih lanjut, sebaiknya pisahkan aplikasi lain dengan aplikasi yang membutuhka fungsi exec. Misalnya, anda ingin menjalankan program dengan kebutuhan fungsi exec, bisa gunakan salah satu versi dari PHP, mau pakai PHP 8.0 misalnya.

Kerentanan dari fungsi exec ada pada server kita sendiri, tergantung bagaimana aplikasi di jalankan. PHP merupakan bahasa pemrograman yang satu-satunya menggunakan PHP FPM untuk memanajemen proses mereka, dan itu mempermudah program di jalankan.

Berikut ini tips menjaga keamanan situs untuk menggunakan fungsi exec pada server.

  1. Pisahkan antar versi PHP yang digunakan dengan versi PHP lain. Jangan memasang program luar pada PHP dengan fungsi exec
  2. Hindari melakukan input command, sebaiknya anda tidak menerima input POST, DELETE, PUT untuk perintah exec
  3. Jangan sembarang menginstall program berbahaya, bahkan wordpress sekalipun jejak digitalnya diragukan. Ini karena wordpress dapat menjalankan plugin eksternal.
  4. Jika membutuhkan sebuah pustaka, sebaiknya baca terlebih dahulu kode sumber pustaka tersebut, Apakah ada bagian yang mencurigakan atau tidak.
  5. Batasi akses terhadap fungsi exec() hanya folder dan file tertentu saja yang dapat menjalakannya.
  6. Jangan aktifkan fungsi exec bila anda adalah penjual hosting, berbahaya sekali ( user akan memiliki akses ke sistem server. )

Sejak kemarin, setelah kita mempublikasikan sebuah pertanyaan di Grup PHP ID ( komunitas PHP Indonesia ), banyak dari responden yang memberikan komentar berbahaya, bahkan sampai ada yang menghujat. Ini menandakan bahwa pemahaman akan fungsi tersebut masih belum sempurna.

Sebenarnya fungsi ini cukup aman digunakan, sebuah rumor yang menyatakan ini tidak aman dan bersifat menakut-nakuti itu karena developer PHP sering sekali menggunakan skrip bajakan / nuled. Bahkan mereka tidak peduli terhadap keamanan, inilah yang menyebabkan banyak orang takut jika harus mengaktifkan exec pada versi PHP.

Mengaktifkan fungsi exec pada aaPanel
aaPanel menyediakan dashboard berbais UI yang mudah untuk kita mengatur konfigurasi PHP.ini, masuk ke menu App Store. Pada bagian versi PHP yang sedang berjalan, silakan klik setting, akan terbuka jendela popup baru.

Kemudian lihat pada navbar popup tersebut, ada menu disabled function. Temukan fungsi exec di sana, dan hapus. Menghapus nama exec pada versi PHP akan mengaktifkan fungsi exec secara langsung, pastikan skrip kamu sudah di amankan dengan baik, sudah lulus pemeriksaaan keamanan. Berikut ini tampilan popup menu pada configurasi PHP aaPanel

disabled function aapanel.jpg


Pada dasarnya fungsi dari exec ini di matikan secara bawaan, ini terletak pada file php.ini, tepatnya pada variabel disabled_function. Jika PHP yang anda install bukan berasal dari aaPanel, silakan temukan jalur installasi PHP, masuk ke jalur installasi dan temukan file PHP.ini

Lokasi PHP.ini akan sama tempatnya pada jalur aplikasi PHP yang sudah di kompilasi. Folder path secara penuh /var/versi-php/php.ini, edit menggunakan text editor. Gunakan CTRL + F untuk menemukan nama disabled function atau exec daripada harus melakukan scroll secara perlahan.