¿Puede suPHP conducir a problemas de seguridad debido al secuestro de cuentas de personas?

2

Tenga en cuenta que, aunque soy bastante bueno en la codificación de Javascript del lado del cliente, no soy tan bueno al tratar con PHP del lado del servidor. No ayuda que haya muy poca información / tutoriales / API en suPHP. Supongo que lo usas exactamente como PHP y mágicamente sabe cómo ejecutar todos los scripts como el propietario de ese script.

Estoy creando un sitio web dinámico que permite a los usuarios cargar scripts y ejecutarlos. En este momento, esto está limitado a JavaScript, pero también quiero permitirles que ejecuten scripts PHP en el servidor. Como el usuario predeterminado de Apache es www-data , quiero usar suPHP. Mi idea es crear un script intermedio, llamémoslo load.php , que toma como argumento el script objetivo del usuario, llamémoslo target.php . load.php luego verifica si el usuario posee target.php , y si lo hacen, lanza target.php .

Pero luego, ¿qué es lo que detiene al usuario dentro de target.php emitiendo un comando similar? (No estoy seguro de que este ejemplo sea correcto ya que no puedo encontrar ninguna documentación en suPHP).

shell_exec("suphp /home/someOtherUser/test.php");

¿SuPHP necesita una contraseña de usuario para ejecutar estos scripts?

Janne Pikkarainen señaló que suPHP comienza como root y luego cambia al propietario de un archivo antes de ejecutarlo . Así que ahora tengo dos preguntas.

  1. Si el script PHP ejecutado por suPHP (como propietario, llamémosle usuario1) a su vez contiene shell_exec("php /home/user2/test.php"); , ¿devolverá un error ya que el usuario1 está intentando iniciar el script del usuario2, o suPHP se activará nuevamente y cambiará de user1 a user2.
  2. ¿Qué es lo que impide que user1 ejecute código javascript / HTML como <form action="/home/user2/test.php" method="get"> ?
pregunta puk 04.11.2011 - 12:15
fuente

1 respuesta

7

(En la voz de Darth Vader): NOOOOOOOOOOOOOOOOOOOOOOO

Esa no es la forma en que usa o configura suPHP. Incluso si de alguna manera logras que funcione de esa manera, es más peligroso que útil.

se supone que suPHP se configura en el nivel de Apache (o cualquiera que sea su servidor web). La idea es hacer que Apache ejecute suPHP en lugar de mod_php regular.

Cómo suPHP realmente se da cuenta en qué cuenta ejecutar el script como no es mágico; simplemente lo ve desde el propietario del archivo. Al comienzo, suPHP se ejecuta como root y, antes de ejecutar el script, solo cambia el usuario para que sea el propietario del archivo, eliminando los privilegios de root.

EDITA después de tu propia edición: No. Déjame explicarte esto una vez más. Usted no puede y ni siquiera debe intentar ejecutar suPHP a través de shell_exec de PHP. Esa no es su idea. En absoluto.

suPHP pertenece a archivo de configuración de Apache httpd.conf , no en scripts PHP individuales. No hay ninguna excepción al respecto.

Aquí encontrará la documentación de configuración de suPHP para usted

    
respondido por el Janne Pikkarainen 04.11.2011 - 12:22
fuente

Lea otras preguntas en las etiquetas