Mencegah Apache untuk mengakses FS root melalui exec

0

Sebenarnya saya menemukan bahwa saya dapat mengakses root melalui exec di php seperti ini

<?php
   echo exec('cat /etc/passwd');
?>

akan mencetak konten file passwd, perhatikan bahwa dengan cdperintah saya dapat dengan mudah menavigasi di mana pun saya inginkan, jadi bagaimana saya bisa memperbaikinya? Mendefinisikan semacam root virtual misalnya terbatas pada direktori actuel

Terima kasih!

rednaks
sumber

Jawaban:

0

File cat /etc/passwdhanya-baca secara default untuk semua pengguna. File tidak mengandung informasi penting. Ini adalah perilaku normal bagi pengguna (baik itu www-data / apache atau orang lain) untuk dapat menelusuri sistem file. Namun beberapa file dibatasi untuk semua pengguna kecuali pengguna super (root). Jika ada proses di bawah Apache yang dapat mengakses misalnya /etc/shadowAnda memiliki masalah izin serius, karena file tersebut berisi kata sandi terenkripsi dari semua pengguna.

Sekarang jika Anda tidak ingin PHP dapat mengakses sistem file, ada sejumlah cara untuk menangkal perilaku ini. Perhatikan juga bahwa perilaku ini bukan risiko keamanan dengan sendirinya, karena izin file mengontrol siapa dan apa yang dapat memodifikasi atau melihat file / direktori.

  1. Sebelum PHP 5.4.0 ada sesuatu yang disebut safe-mode yang dapat digunakan untuk membatasi akses pengguna. (Itu memiliki sejumlah masalah dan karena itu kemudian dihapus).
  2. Anda dapat melarang semua perintah shell (sistem, exec, passthru).
  3. Gunakan open_basedir
pengguna555
sumber