Vulnerabilidad de path traversal en Cisco ASA (CVE-2018-0296)

El 6 de junio se hizo pública la vulnerabilidad CVE-2018-0296 que afecta a la interfaz web de los Cisco ASA (Adaptive Security Appliance) y aunque el fabricante lo describe como una vulnerabilidad que "podría permitir a un atacante remoto no autenticado provocar que el dispositivo se reinicie (DoS) y, en ciertas versiones de software, ver información sensible del sistema sin autenticación mediante el uso de técnicas de path traversal", lo realmente importante es ésto último, la falta de de validación de entrada y control de acceso a algunas URLs:

- "/+CSCOU+/../+CSCOE+/files/file_list.json?path=/"
- "/+CSCOU+/../+CSCOE+/files/file_list.json?path=%2bCSCOE%2b"
- "/+CSCOU+/../+CSCOE+/files/file_list.json?path=/sessions/"
- "/+CSCOE+/logon.html"
...

Sin embargo los polacos de Sekurak lo explican perfectamente en su artículo: "Error description CVE-2018-0296 - bypassing authentication in the Cisco ASA web interface":
ASA organiza sus recursos en dos directorios: /+CSCOU+/ y /+CSCOE+/ . Las subpáginas dentro de /+CSCOE+/ pueden requerir autenticación, mientras que las ubicadas en el medio /+CSCOU+/ autenticación nunca la requieren.

Como se muestra a continuación, si se intenta acceder a cualquier recurso /+CSCOE+/files/file_list.json de manera estándar se nos redireccionará a la página de logon:


Pero si se reemplaza en la petición /+CSCOE+/ por /+CSCOU+/ el resultado es sorprendente:


Así de sencillo. Esa a la manera de eludir la autenticación.

Como veis también, con file_list.json se pueden listar los archivos visibles desde la interfaz web. El catálogo de sesiones parece interesante, y después de entrar a una de esas sesiones, se puede averiguar cuál es el ID de usuario que está asociado, por lo que se puede averiguar fácilmente cual es la contraseña que hay que intentar romper ;)

Listado del contenido del directorio/sesiones:


Extracción del login del usuario conectado:


Podéis imaginaros que tratándose de Cisco existen numerosos dispositivos accesibles por Internet, sólo tenéis que buscar en Shodan o en Censys o usar un simple dork con /+CSCOE+/logon.html.

En cuanto a su explotación ya empiezan a surgir las primeras herramientas... Yassine Aboukir de HackerOne ya ha publicado un pequeño script en Python que vuelca a un archivo de texto tanto el contenido del directorio actual como lo de +CSCOE+:

https://github.com/yassineaboukir/CVE-2018-0296


Y Keith Lee (milo2012) ha liberado también otro script en Go que directamente extrae los nombres de usuario del dispositivo ASA:

https://github.com/milo2012/CVE-2018-0296


Esta vulnerabilidad se aplica al tráfico HTTP IPv4 e IPv6 y afecta al software Cisco ASA y al software Cisco Firepower Threat Defense (FTD) que se ejecuta en los siguientes productos de Cisco:

- 3000 Series Industrial Security Appliance (ISA)
- ASA 1000V Cloud Firewall
- ASA 5500 Series Adaptive Security Appliances
- ASA 5500-X Series Next-Generation Firewalls
- ASA Services Module for Cisco Catalyst 6500 Series Switches and Cisco 7600 Series Routers
 - Adaptive Security Virtual Appliance (ASAv)
- Firepower 2100 Series Security Appliance
- Firepower 4100 Series Security Appliance
- Firepower 9300 ASA Security Module
- FTD Virtual (FTDv)

Para confirmar si el dispositivo es vulnerable se recomienda seguir los pasos indicados por el mismo Cisco: CSCvi16029.

En cualquier de serlo es recomendable parchear inmediatamente (tenéis las versiones que corrigen el bug en el artículo anterior de Cisco).

Comentarios