Ejecutando Apache como servicio del sistema en Windows 2003 R2 de 64 bits

1

Intentando demostrar que la ejecución de Apache con el módulo PHP5 como servicio de Windows no es segura.

Todo lo que tengo que probarlo: acceso por FTP a algún sitio web interno. Entonces, lo que hice: subí el archivo test.php con contenido:

<?php
  system('whoami'); // output: nt authority\system
  file_put_contents('C:\test.txt', 'this server is hacked');
  echo file_get_contents('C:\test.txt'); // output: this server is hacked
  system('ping 127.0.0.1'); // Ping output: 4 packets sent, 4 received
  system('net stop apache2.2'); // No Output
  system('shutdown /r /f /t 1'); // No Output
?>

Luego presioné el navegador en: http://10.0.0.254/test.php

Todos los comandos ejecutados, excepto el apagado y la parada de red.

Las configuraciones de Windows, Apache y PHP son predeterminadas.

¿Es cierto que ejecutar Windows + Apache + PHP fuera de la caja, lo suficientemente seguro como para ejecutar los principales comandos del sistema como el apagado?

    
pregunta Alex G 19.10.2012 - 02:35
fuente

2 respuestas

2

La mejor solución para este problema es ejecutar PHP a través del trabajador aislado de IIS que se maneja con el módulo fastcgi.

Si quieres Apache, en Windows, puedes crear un nuevo usuario local, y no lo pongas en ningún grupo, y en NTFS puedes agregar permiso para leer los archivos php en docroot, así como todo lo demás que httpd está usando como php y archivos de configuración.

Para ejecutar Apache desde cualquier otro usuario, puedes cambiarlo en "servicios" o usar la línea de comandos "runas".

También puede intentar usar grupos existentes, como "usuarios", por lo que el php no podrá escribir en c: \, pero podrá iniciar aplicaciones, pero no en la consola del usuario, sino en su propia ( se redirige si se inicia como servicio).

    
respondido por el Andrew Smith 19.10.2012 - 03:46
fuente
5

Que el motor PHP se ejecute como un usuario con algunos privilegios extensos no es "inseguro" por sí mismo. Depende del contexto. Si algún atacante puede inducir a su Apache / PHP a ejecutar sus propios comandos arbitrarios, usted ya está en un problema bastante profundo: esto es suficiente para acceder a cualquier dato del código del sitio. utiliza, para alterar el sitio para engañar a otros usuarios del sitio, o para servir como retransmisión para otro ataque en otros sitios. Darle al atacante un acceso más extenso a la máquina local agrega insulto a la lesión, pero este no es el mayor problema en tal situación.

Ejecutar Apache / PHP como un usuario con menos privilegios es una buena idea, por supuesto, pero creer que esto lograría seguridad no lo es. Es simplemente contención de daños . Simplemente evita que un atacante que ya se haya hecho cargo de su sitio, también se haga cargo de la máquina física (o, al menos, que lo haga con demasiada facilidad, ya que los agujeros locales de escalamiento de privilegios son bastante comunes).

    
respondido por el Thomas Pornin 19.10.2012 - 14:50
fuente

Lea otras preguntas en las etiquetas