problema de seguridad del comando bash enviado por el usuario

1

Recientemente estoy creando un servicio web que la entrada del usuario se utilizará para ejecutar un comando de bash en el lado del servidor. ¿Cuáles son los problemas de seguridad que necesito cuidar?

¡Ahora mismo encuentro que el usuario podría enviar elementos como pipe como valid thing | something bad y mi servidor ejecutó ese something bad ! Principalmente utilizo nodejs y exec de shelljs para construir el servidor.

    
pregunta qqibrow 23.03.2015 - 01:31
fuente

2 respuestas

3

Si está permitiendo que se ejecuten comandos de shell desde el navegador, lo que está haciendo de manera efectiva es permitir que el usuario inicie sesión y ejecute comandos en su sistema como el usuario con el que se ejecuta el servidor web. Pregúntese si eso es lo que quiere hacer? La respuesta es definitivamente no. De ninguna manera. No, nunca nunca. De hecho, los piratas informáticos pasan mucho tiempo tratando de averiguar cómo hacer lo que realmente diseñó en su sistema.

Puedes probar y "sanear" la entrada, pero lo único que estás haciendo es pedir a los piratas informáticos que intenten encontrar formas de eliminar el desinfectante. Probablemente sean más inteligentes que tú.

Puedes probar y ejecutar los comandos como un usuario con permisos restringidos. Entonces, efectivamente está permitiendo que cualquiera inicie sesión como ese usuario y ejecute comandos en ese sistema. El mecanismo de permisos de UNIX podría protegerte un poco.

Finalmente, podría intentar usar chroot para crear un entorno muy restringido para ejecutar los comandos de bash. Eso es bastante trabajo, y aún existe la posibilidad de que los troyanos se instalen en el entorno restringido. Si planea esta opción, puede buscar el comando makejail: makejail .

La opción final es no permitir que los usuarios ejecuten comandos bash arbitrarios, sino proporcionar una lista de comandos preconfigurados que les permita ejecutar, que usted sabe que son seguros.

Además, puede ser vulnerable al error de Shellshock Shellshock

    
respondido por el rghome 23.03.2015 - 16:15
fuente
2

Lo principal que habilita es un problema al abrir su shell en subshells. e.a. simplemente ejecutando un comando como / bin / bash permitiría a un atacante obtener acceso a su servidor.

Si realmente desea seguir ejecutando un servicio como este, le sugeriría que limite las opciones que pueden usar los usuarios finales (y un atacante), solo permitiendo comandos que sepa que son "seguros" y nunca los ejecute directamente. Utilice una sub shell de manera indirecta y solo después de haberla despojado de todas las partes peligrosas. (como el "|").

También tenga cuidado con el uso indebido al secuestrar la conexión. SSH hace esto bastante bien utilizando tanto el cifrado como los mecanismos de control de sesión. Por lo tanto, el secuestro es difícil y la mayoría de las veces resulta en una conexión cerrada. ¿Por qué reinventar la rueda si no hay necesidad de ella?)

Si encuentra que necesita ejecutar comandos como este, le recomendaría que los ejecute a través del shell bash restringido. (rsh) previene la mayoría de esas cosas "malas" de las que te preocupas (pero no todas)

    
respondido por el LvB 23.03.2015 - 02:46
fuente

Lea otras preguntas en las etiquetas