Las páginas ASP programadas para la versión 5.0 del servidor web de
Microsoft (IIS) que hacen uso del método «Execute» pueden permitir
una escalada de directorios y dar acceso a la mayor parte de los
archivos del servidor.
El lenguaje ASP surge como una extensión al código HTML para permitir
un mayor dinamismo en la presentación de contenidos y obtener una
mayor potencia del servidor web. Pero si la programación de estas
páginas no se realiza de forma correcta puede producir graves
problemas que pueden permitir a un atacante la posibilidad de acceder
a datos, robar información e incluso llegar a tomar el control de
la maquina.
Desde la aparición de la versión 5.0 de IIS muchos programadores hacen
uso del método «Execute» para desarrollar los sitios web sin necesidad
de usar «frames» o usar la directiva «#include». De este modo es más
sencillo implementar plantillas HTML para facilitar el trabajo de los
desarrolladores.
EL problema se produce cuando se indica la página que debe de ser
cargada desde la propia URL, por ejemplo:
http://servidor/inicio.asp?file=/asp/home.asp
Mediante la modificación de la URL puede ser posible escalar directorios
mediante el uso de URL’s modificadas:
http://servidor/inicio.asp?file=../../WINNT/win.ini
Esto permitirá a un atacante acceder con permisos de lectura a muchos
de los archivos del servidor, o todos si no está usando el formato de
archivos NTFS.
Un segundo problema es una posible denegación de servicio si se solicita
el mismo archivo que hace la llamada al Server.Execute:
http://servidor/inicio.asp?file=inicio.asp
Esto provocaría que el script ASP entrara en un bucle infinito que le
llevaría a usar el 100% de la CPU y grandes cantidades de memoria
mientras el script no hiciera «time out», generalmente a los 90 segundos
de haberse iniciado la petición.
Las posibles soluciones pasan por verificar que el archivo que se pasa al
método Execute no contienen cadenas como «../» o desactivar las «rutas
padre» en la configuración del propio servidor IIS.
david@hispasec.com
Deja una respuesta