martes, 3 de septiembre de 2013

WEB HACKING – Arquitecturas web vulnerables – Parte III



En la anterior publicación se hablaba de las dos principales categorías de ataques que pueden llevarse acabo contra un servidor web, explicando algunos ataques directos que son bastante frecuentes contra aplicaciones vulnerables, en esta publicación se hablará un poco más sobre algunos de los vectores de ataque directos contra el servidor o aplicaciones web y también se hablará sobre algunos ataques indirectos cuyo objetivo es utilizar el servidor web para comprometer a los clientes de aplicaciones web vulnerables.
Métodos HTTP Peligrosos
Los métodos HTTP son fundamentales para que los clientes puedan comunicarse eficientemente con servidores, se encuentran definidos como parte del protocolo HTTP así que son independientes de la plataforma del servidor. Son útiles para que un cliente pueda realizar varios tipos de operaciones sobre el servidor web, de hecho, el simple hecho de consultar una página con un navegador web, ya implica el uso de estos métodos. Sin embargo, cuando un servidor web no se encuentra correctamente configurado y permite el uso público de algunos de estos métodos (especialmente aquellos que permiten manipular la estructura del servidor) es cuando aparecen los problemas. Métodos HTTP tales como PUT, COPY, MOVE o DELETE permiten que un cliente pueda subir un contenidos, copiar, mover o eliminar elementos existentes en el servidor, estos métodos pueden ser utilizados por un atacante para subir una webshell en el servidor, eliminar páginas o modificar contenidos existentes, resulta evidente que no se debe permitir que cualquier cliente pueda utilizar dichos métodos contra un servidor web.
niktoscan
En este caso, Nikto ha detectado que el servidor web analizado soporta varios métodos HTTP peligrosos, tales como PUT, DELETE, entre otros, por lo tanto es un objetivo que puede ser vulnerable. Aunque también es importante apreciar, que en este servidor hay una instancia de WebDAV, por lo tanto es posible que el uso de estos métodos se encuentre restringido a solamente unos cuantos usuarios validos (esto se tratará en unos párrafos más abajo). Cuando un atacante quiere comprobar si puede subir ficheros o realizar cualquier tipo de modificación en el servidor web utilizando estos métodos, puede hacerlo fácilmente utilizandotelnet, netcat o directamente desde un script (en python, ruby o perl por ejemplo), también es posible utilizar Burp Proxy para este cometido. Por ejemplo para subir un fichero utilizando el método PUT:
PUT /ntdaddy.txt HTTP/1.1
Host: 10.10.10.10
Content-Length: 42798

Contenido de la WebShell.
La respuesta retornada por el servidor web, indicando que el servidor web admite el método PUT, seria similar a la siguiente
HTTP/1.1 100 Continue
Server: Microsoft-IIS/5.1
Date: Sun, 12 Aug 2012 09:10:00 GMT
HTTP/1.1 201 Created
Server: Microsoft-IIS/5.1
Date: Sun, 12 Aug 2012 09:10:01 GMT
Location: http://10.10.10.10/ntdaddy.txt
Content-Length: 0
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, LOCK, UNLOCK
Lo mismo se puede conseguir utilizando Burp Proxy en la pestaña repeater
repeater
Como se puede apreciar, el resultado es el mismo.
Instalaciones con WebDav inseguras o mal configuradas
WebDAV es una extensión del protocolo HTTP que permite a los usuarios utilizar los servidores web como un recurso donde se pueden crear, modificar y/o eliminar documentos. La finalidad de este protocolo es simplemente permitir a los usuarios compartir sus documentos de forma centralizada añadiendo algunos métodos y headers adicionales al protocolo HTTP estándar, tales como COPY y MOVE, además también es posible utilizar un mecanismo de autenticación y autorización que permitirá que solamente usuarios legítimos puedan realizar determinadas acciones tan riesgosas como subir ficheros al servidor web. Sin embargo, los beneficios de WebDav pueden ser contraproducentes desde el punto de vista de la seguridad del servidor web si no se toman las medidas oportunas.
Desde la posición de un atacante, cuenta con un buen conjunto de herramientas que le permitirán determinar si puede realizar un ataque contra el servidor web, típicamente intentando subir ficheros maliciosos a alguno de los directorios del servidor, por ejemplo, utilizando metasploit framework se puede extraer información interesante
webdaviis

NMAP también cuenta con un script que permite extraer información de un servidor con WebDAV habilitado
webdavnmap
Como se puede apreciar, el servidor web objetivo tiene WebDAV habilitado y se trata de un servidor web IIS versión 6.0 Es posible que gracias a esta extensión el uso de métodos potencialmente peligrosos sea restringido y solamente unos cuantos usuarios puedan hacer uso de ellos, en tales casos el uso del método HTTP PUT, COPY o MOVE probablemente retornará un código de error HTTP 403 indicando que no hay autorización para utilizar dicho método o también, que no se puede utilizar para subir ficheros potencialmente peligrosos para el servidor web, tales como ficheros con contenido dinámico, típicamente ficheros con extensión .PHP .ASP, .JSP, etc.
Sin embargo un servidor con WebDAV vulnerable puede tener consecuencias muy negativas, por ejemplo, en la versión 6.0 de IIS existe una vulnerabilidad que permite a un atacante realizar un “bypass” de las restricciones impuestas para mover o copiar ficheros con contenido dinámico. De este modo, es posible utilizar el método PUT para subir un fichero de texto con extensión TXT y posteriormente moverlo a una extensión diferente (ASP, JSP, PHP)
copyburp
Como se puede apreciar, el método COPY ha retornado un código HTTP 403 indicando que no es posible realizar la operación de copiado solicitada, sin embargo, si el Destination de la petición cambia con /webshell.asp;.txt el resultado es distinto, tal como se puede ver a continuación:
copyburp
El fichero ha sido copiado y ahora, se puede ejecutar el código ASP que se encuentre incluido en dicha página (previamente subido con extensión txt con el método PUT).
Estos son solo unos pocos ejemplos de ataques directos contra la infraestructura de un servidor web, no obstante existen muchísimas más formas de atacar un servidor web de forma directa, como se verá a lo largo de las siguientes publicaciones.


Miguel

No hay comentarios.: