Cross Zone Scripting / Cross Domain Attack
Siguiendo con la seguidilla de ataques cross, hoy les traigo un ataque no tan citado, pero igualmente importante.

Si antes nos metimos con la forma en que un server nos puede ayudar (método TRACE habilitado), ahora nos metemos con lo que un browser nos puede dar.

El Cross Zone Scripting, también conocido como Cross Domain Attack, se basa en falencias del browser para acceder cosas que de otra forma no podríamos ver.
Este ataque está pensado para el concepto de zonas, implementado en Internet Explorer (pero no específico de éste, dado que es un concepto genérico). Este concepto se basa en diferentes niveles de confianza dependiendo la zona en que se encuentre un site. Por ejemplo, las zonas predefinidas en IE son:
# Internet. Zona default. Todo lo que no pertenece a otras zonas va aca.
# Local intranet.
# Trusted sites. Cuenta con una lista de sitios de confianza, los cuales tienen permitido ejecutarse con mínimas restricciones de seguridad (e.g. ejecutar objetos ActiveX inseguros y sin firmar).
# Restricted sites.
También existe una zona adicional escondida llamada Local Computer zone (o My Computer zone). Esta zona es la más interesante porque permite acceder archivos de la máquina.
Local intranet, Trusted sites y Local Computer son las zonas con mayores privilegios, mientras que Internet es la zona con menos privilegios.
Cada site se ubica en una zona diferente, dependiendo la confianza que tengamos en el site. Por default, si no asignamos una zona a un site, éste se ubicará en la zona Internet.

Lo que se busca hacer con éste tipo de ataques es lograr ejecutar código de un site que está en la zona Internet (con pocos privilegios) como si perteneciera a una zona con privilegios (preferentemente Local Computer), es decir, escalar privilegios. Estando en la zona apropiada, el browser podría permitirnos hasta instalar programas en la computadora.
En la página de wikipedia se pueden encontrar algunos ejemplos de cómo explotar esta vulnerabilidad, pero supuestamente ya están parchados en versiones actuales de Internet explorer.

Un ejemplo bastante moderno que pueden probar es el listado en una entrada del 2008 en milw0rm. Allí se muestra un exploit que permite a una página no confiable ejecutar un programa (en el ejemplo la calculadora de windows). El cross-zone se logra cuando un usuario intenta imprimir la página utilizando la opción table of links. El script de impresión genera un nuevo HTML a partir del original y ahí se inserta el programa a ejecutar. Como el proceso de impresión se ejecuta con privilegios Local Computer, IE le permitirá al atacante ejecutar lo que desee. Yo lo probé en IE6 viejo y anda perfecto, supuestamente también anda en IE7 y en IE8b.

Hace unos días también leí sobre un nuevo ataque. Si el atacante logra adivinar el path completo a la versión almacenada en cache de la página que se está visualizando , éste podría incluir en el código de la página maliciosa una redirección desde la página actual a la versión que está almacenada en cache. Como la página que está en cache está en la máquina local, ésta se ejecutará con los máximos permisos, evadiendo el control de zonas! Pueden leer el advisor en Internet Explorer Security Zone restrictions bypass.


Referencias

- Cross-zone scripting (wiki)

0 comentarios:

Publicar un comentario