Hoy vamos a hablar sobre un comportamiento de IIS6 no conocido que considero interesante y puede ser útil a la hora de realizar auditorÃas de seguridad. Se trata de un artÃculo sobre cómo funciona IIS6 a la hora de trabajar junto con aplicaciones de terceros que realicen operaciones sobre el sistema de ficheros (creación de directorios, upload de ficheros) tales como gestores de ficheros en web.
Descripción
Tratando de saltar la seguridad en el componente de upload de ficheros de una aplicación ASP corriendo bajo IIS 6, me dà cuenta que IIS sólo usa la parte de la URL antes de una ‘/’ o ‘\’ para determinar si un fichero será ejecutado como un Active Server Page por la librerÃa ASP.dll. En concreto, IIS no parsea correctamente los nombres de los directorios cuando estos tienen extensiones ejecutables como 1) .asp, 2) .asa y 3) .cer. La extensión .aspx parece ser que no está afectada devolviendo un error 404, aun cuando el fichero existe en dicho path.
Cuando se parsea una URL tal como ‘maliciousfolder.asp/code.pdf’, se ejecuta una rutina que comprueba si ese fichero debe ser ejecutado por la ASP.dll. El carácter ‘/’ (o ‘\’) rompe la cadena e IIS determina que ese fichero debe ser ejecutado como un script ASP, pero a la hora de ejecutarlo, una rutina distinta lee el fichero correcto: ‘maliciousfolder.asp/code.pdf’ y ejecuta el código contenido en él, por lo que un atacante remoto podrÃa ejecutar código ASP en el servidor web desde un fichero pdf o cualquier otro tipo de archivo considerado «seguro» para las aplicaciones de upload de ficheros.
(más…)