¿Cómo se volverá vulnerable un servidor con chmod 777?

A menudo leo artículos que dicen algo como “¡chmod 777 es malo!”

Me preguntaba:

¿Cómo me vuelvo vulnerable cuando ejecuto ‘chmod 777’ en un archivo?

¿Qué es un ejemplo del mundo real de esto que puedo reproducir?

Permite que el contenido del sistema de archivos sea visto y / o modificado por cualquier persona : suponiendo que el atacante ya tiene acceso general al sistema, que es muy común en las plataformas de alojamiento compartidas. Algunos están más “endurecidos” que otros desde el principio. Aquí hay una pequeña lista incompleta de posibles vectores de ataque:

  1. “su código de seguridad” podría sobrescribirse con “su código malicioso” que se ejecuta dentro del mismo contexto de servidor web … podría robar contraseñas / troyanos, exponer DB, eliminar contenido, etc. Es decir, el código de otra persona puede ejecutarse bajo su seguridad contexto .
  2. El contenido (por ejemplo, “fuente de script”) posiblemente se pueda ver fuera del contexto del servidor web (o del propietario). ¿Tiene una contraseña “segura” para conectarse a la base de datos? Bueno, ya no …
  3. Si el contenido estaba protegido por permisos (por ejemplo, el servidor web no podía acceder antes), el servidor web podría acceder / listar información confidencial … no es bueno si no pretendía compartirlo. Las diferentes configuraciones de servidor web también tratarán las “listas” de forma diferente, lo que también puede exponer más de lo deseado.

En lo anterior también supongo que “grupo” incluye el principal del servidor web y que hay un servidor web (y / o alojamiento compartido) involucrado que puede usarse como vector de ataque primario y / o vulnerabilidad de seguridad. Sin embargo, y lo enfatizo de nuevo: la lista anterior no está completa .

Aunque no es una “garantía de seguridad”, el uso de los permisos más específicos puede mitigar algunas vulnerabilidades / exposición.

Si el atacante solo tiene acceso a la interfaz web (no a los archivos, por ejemplo, a través de otra cuenta en el mismo servidor compartido), entonces el modo 777 no abre directamente ninguna vulnerabilidad. Lo que hace es facilitar que el atacante cambie las cosas en el sitio una vez que lo hacen de otra manera.

Por ejemplo, supongamos que tiene un sitio de WordPress y hay un error en alguna parte que le permite al atacante ejecutar código PHP arbitrario con las credenciales del daemon del servidor (esto ha sucedido muchas veces en el pasado y sin duda volverá a ocurrir en el futuro). El código para WordPress se almacena en archivos .php que el daemon del servidor puede leer. Si esos archivos son del modo 777, el atacante puede escribirles, lo que significa que pueden modificar el código, cambiando lo que hace su sitio. Tal vez instalen un kit “drive by exploit” y ahora todos los que visitan su sitio obtienen su navegador pirateado. Tal vez instalen un kit de spam SEO y ahora Google piensa que estás vendiendo Viagra (pero si visitas el sitio directamente es invisible, sí, esto realmente sucede).

Si los archivos .php son del modo 755 y pertenecen a un usuario que no es el daemon del servidor, el atacante no puede cambiar permanentemente lo que hace el sitio.

Tenga en cuenta que esto significa que la característica auto-upgrade-from-the-admin-panel de WordPress es arriesgada, ya que solo funciona si WordPress puede modificarse a sí mismo; no puede tener eso y también tiene el adversario incapaz de modificar archivos una vez que pueden ejecutar PHP arbitrario

Tenga en cuenta también que solo está 100% seguro en este sentido si no hay archivos ni directorios que el daemon del servidor pueda modificar. Incluso solo permitir la carga de archivos en un solo directorio puede ser un problema, incluso si lo único que permite que alguien ponga allí es archivos de imágenes. (Si eso parece imposible, eche un vistazo a http://lcamtuf.coredump.cx/squirrel/ .)

Cada dígito en el comando chmod representa un número octal (3 bits). Con tres dígitos, eso es 9 bits en total. Cada bit representa un permiso; 1 == tiene permiso, 0 == no tiene permiso.

Los tres bits en cada dígito representan lectura (binario 100 == decimal 4), escritura (binario 010 == decimal 2) y ejecución (binario 001 == decimal 1). El decimal 7 es permiso de lectura + escritura + ejecución.

El primer dígito de un comando chmod representa los permisos del propietario de un archivo o directorio. El segundo es para el grupo. El tercero es para el “universo”, es decir, para todos los demás.

Entonces, chmod 777 representa los permisos de lectura, escritura y ejecución para usted, el grupo y todos. Este suele ser un acceso mucho mayor que el requerido.

Para su ejemplo del mundo real, imagínese si un archivo llamado my_bank_account_credentials fue alterado con chmod 777 . ¡No muy seguro! Un usuario malintencionado puede cambiar lo que está allí o simplemente leerlo y tomar su dinero felizmente.

Para los servidores, el principal peligro es que un error explotado en el código del servidor podría permitir que un atacante acceda a cualquier cosa que el proceso del servidor tenga derechos, que incluiría cualquier cosa que tenga el conjunto de permisos 777 .

chmod es el comando CHANGE MODe. El 777 indica los permisos. Hay tres grupos de personas que pueden tener permisos (cada uno obtiene su propio dígito), en orden: Propietario (del archivo o directorio, los primeros 7), grupo (todos los que pertenecen al mismo grupo que el propietario, segundo 7 ) y mundo (tercer 7).

El propietario es el usuario del archivo, ese serías tú. En el mundo * nix, los usuarios pertenecen a grupos. Entonces, usted podría ser el usuario / propietario Bob en el grupo Marketing. Este modelo le permite hacer cosas como, por ejemplo, Bob puede leer / escribir el archivo, el rest del marketing solo puede leer el archivo y otros usuarios pueden leer el archivo.

Cada dígito en el 777 es una representación binaria de: rwx (leer / escribir / ejecutar). Entonces un chmod de 755 significa: 111 (7) – El propietario puede leer la ejecución de escritura 101 (5) – otro en el grupo puede ejecutar o leer, no escribir 101 (5) – rest del mundo puede leer y ejecutar, no escribir.

Esa configuración significa que puede leer / escribir y ejecutar sus archivos, pero las personas que visitan su sitio solo pueden leer o ejecutar el archivo. Por lo tanto, debe configurar progtwigs en su cgi-bin a 755, para que las personas puedan ejecutar el archivo como un progtwig.

Si configura los permisos para ‘chmod 644’, obtendrá un archivo que puede escribir usted, pero que solo puede leer el rest del mundo. Esto es bueno para archivos HTML rectos para que no ocurra ningún pañuelo panky. Pero intenta y ejecuta un archivo con permisos de 644 y obtendrás un error.

CHMOD 777 permitirá a todos hacer cambios en los archivos de su servidor, les dará la condición de ESCRITURA y todos saben que es malo.

Si una entrada maliciosa llega a su aplicación, sitio web, etc. No importa lo que haga con el código. El punto crítico está en la base de datos y no hay protección posible contra “escribir” en él. Entonces los permisos chmod 777 no son nada peligrosos.

Intereting Posts