what networkservice network asp.net permissions service networking

asp.net - what - authority networkservice



¿Cuáles son los peligros de otorgar permisos de lectura/escritura a la cuenta de servicio de red a su aplicación web ASP.NET? (4)

¿Cuáles son los peligros de otorgar permisos de lectura / escritura a la cuenta de servicio de red a su aplicación web ASP.NET? Tengo que hacer esto para cualquier directorio en el que mi aplicación necesite escribir, como App_Data para mi base de datos VistaDb y algunos directorios aleatorios para subir imágenes y hacer cambios en los archivos de texto, etc. ¿Cuál es el peligro al hacer esto? ¿Y es aceptable otorgar permisos de lectura / escritura a toda la aplicación web para el servicio de red?


El mayor riesgo de seguridad de otorgar permisos de escritura a las carpetas de la cuenta de servicio de red se experimenta en Hosting Compartido o cuando se ejecutan varios sitios web en el mismo servidor.

Básicamente, si otorga permisos de modificación, todas las demás aplicaciones de ASP.NET que el servidor configuró para ejecutarse como Servicio de red (todas de manera predeterminada) también tendrán permisos de escritura para esa carpeta, que podrían ser explotados.


El peligro de hacer esto es que el Servicio de red es una cuenta compartida y cualquier aplicación o servicio que se ejecute bajo esta cuenta tendría acceso a ese directorio.

Dependiendo de la versión de IIS que esté utilizando, puede ubicar la aplicación web en un grupo de aplicaciones separado y hacer que se ejecute con una cuenta de usuario diferente. Luego, puede otorgar acceso específicamente a ese usuario y no a un servicio de red. Esto solo está disponible en IIS 6 o posterior.


así el peligro inmediato es que el servicio de red puede leer / escribir en esas carpetas, por supuesto, pero por Microsoft: esta cuenta es una cuenta de máquina menos privilegiada con permisos limitados. Si se encuentra en un dominio, un mejor enfoque puede ser utilizar una cuenta de dominio. Puede encontrar información detallada sobre ambos en http://msdn.microsoft.com/en-us/library/ms998320.aspx


Ok, entonces si puedo averiguar cómo hacer para que su aplicación escriba un archivo en el sistema de archivos, porque le concedió lectura / escritura al directorio virtual de la aplicación entera , ahora puedo escribir un archivo aspx en su sitio web, invocarlo y ejecutar arbitrariamente código, incluyendo cosas geniales como llamadas WMI e interoperabilidad COM.

¿Tiene el tiempo y los recursos para demostrar de manera concluyente que no puedo usar su aplicación (que incluye partes que no escribió, como el marco mismo) para escribir un archivo en su sitio web? ¿Por qué no excluir la posibilidad cuando es tan barato (en el tiempo) para establecer permisos ntfs?

Ahora bien, si concede solo a App_Data, incluso si escribiera un archivo aspx en esa carpeta, no podría invocarlo porque la carpeta App_data es tratada como especial por el tiempo de ejecución y no se publicará ningún archivo desde allí ( no sea que alguien simplemente llame a http://yourserver.com/app_data/data.mdb y piratee su base de datos simplemente descargando el archivo). Obviamente, se puede llegar a estos archivos en App_Data utilizando ADO y similares, pero eso no es un problema de seguridad.