Restrinja al usuario de ejecutar comandos de shell usando PHP

6

Digamos que he compartido hosting y quiero asegurar ese lugar, desde la ejecución de comandos de shell. He instalado suphp, para que los usuarios puedan ejecutar PHP por separado. También hice algunas otras cosas para proteger el servidor (basedir y otras configuraciones recomendadas dentro de php.ini).

Pero el problema sigue ahí: (puedo ejecutar y leer archivos de configuración de otros sitios web)

<?php echo exec('cat /var/www/website/config.php'); ?>

Si deshabilito la función ejecutiva, todavía hay otras formas de obtener información confidencial del servidor.

¿Qué puedo hacer? ¿Puedo deshabilitar los comandos de shell de Unix para un usuario específico? ¿Tendrá efecto?

Editar: He cambiado la versión premisa en la papelera 754, antes de que fuera la 755, y ahora los usuarios no pueden ejecutar comandos de shell usando PHP. ¿Esto es una solución o no?

    
pregunta Mirsad 01.02.2016 - 07:02
fuente

2 respuestas

2

Desactive exec y suexec, habilite open_basedir y básicamente siga todas las sugerencias en esta publicación .

Mencionó still there are other ways to... si después de leer esa publicación aún tiene preguntas o puntos débiles, publíquelos aquí o en Serverfault

    
respondido por el Purefan 01.02.2016 - 09:46
fuente
1
  

He cambiado la premisión en el contenedor 754, antes de que fuera 755, y ahora los usuarios no pueden ejecutar comandos de shell utilizando PHP.

Creo que esta es una solución interesante. Pero la separación de las reglas de seguridad no es conveniente para usuarios específicos en este caso.

Me gustaría sugerir algunas otras formas:

  1. Ejecuta apache como chroot . Pero requiere una configuración compleja. Permite crear espacio de ejecución "aislado" para cada host virtual (usuario de ejecución). En mi opinión, se describe un buen ejemplo aquí: Apache + Chroot + FastCGI + PHP Preguntas frecuentes

  2. Ejecuta apache y php dentro del contenedor Docker. Es una solución más moderna para el aislamiento de vhost. Pero también requiere una configuración compleja.

  3. Desactive las funciones potencialmente no seguras mediante la directiva disable_functions en php.ini . Esta es la forma más sencilla y menos segura. Por ejemplo:

    disable_functions=dl,system,exec,passthru,shell_exec,stream_select,popen,proc_open,proc_nice,ini_set

Las funciones potencialmente inseguras se pueden encontrar aquí: Funciones restringidas / deshabilitadas por el modo seguro .

    
respondido por el IStranger 17.09.2017 - 20:40
fuente

Lea otras preguntas en las etiquetas