Analizamos una vulnerabilidad en Citrix ADC que le permite penetrar en la red interna de la compañía en un minuto

A fines del año pasado, un experto en Tecnologías Positivas descubrió la vulnerabilidad CVE-2019-19781 en el software Citrix ADC, que permite a cualquier usuario no autorizado ejecutar comandos arbitrarios del sistema operativo. Cerca de 80 mil empresas en todo el mundo están



amenazadas . Para empeorar las cosas, Citrix ADC se instala en la interfaz entre la red externa e interna de una organización. Por lo tanto, después de explotar la vulnerabilidad, el atacante obtiene acceso de inmediato a la red interna de la compañía y tiene la capacidad de desarrollar ataques en el segmento de la red privada. En el artículo de hoy, el autor del estudio analizará la vulnerabilidad con más detalle, detalles de su detección y explotación. ¡Vamos!







¿Qué es Citrix ADC?



Citrix ADC es una solución de equilibrio de carga y entrega de aplicaciones basada en software diseñada específicamente para acelerar el rendimiento de las aplicaciones tradicionales, en la nube y web, sin importar dónde estén alojadas. Dichos controladores son los más utilizados en las industrias de TI y telecomunicaciones. Según las previsiones, para 2023 la demanda de ADC aumentará de las compañías financieras y de seguros.



Que tan serio es



Durante el monitoreo de las amenazas actuales (inteligencia de amenazas), se descubrió que al menos 80,000 empresas de 158 países son potencialmente vulnerables. En el momento en que se descubrió la vulnerabilidad, el TOP-5 por la cantidad de tales organizaciones incluía a los Estados Unidos de América (el líder absoluto: más del 38% de todas las organizaciones vulnerables se encuentran en los EE. UU.), Alemania, Gran Bretaña, los Países Bajos, Australia.



Rusia ocupó el puesto 26 en términos del número total de empresas potencialmente vulnerables en varios sectores empresariales, más de 300 organizaciones en total. Kazajstán y Bielorrusia ocuparon el puesto 44 y 45 en términos de número de empresas vulnerables, respectivamente.



A partir de febrero de 2020, los principales países en términos de número de organizaciones potencialmente vulnerables incluyeron Brasil (43% del número de empresas en las que se identificó inicialmente la vulnerabilidad), China (39%), Rusia (35%), Francia (34%), Italia (33%) y España (25%). Los Estados Unidos, el Reino Unido y Australia mostraron la mejor dinámica para eliminar las vulnerabilidades: en estos países, se registró el 21% de las empresas que continuaron utilizando dispositivos vulnerables y no tomaron ninguna medida de protección.







Descubrimiento y operación



Al comienzo de mi investigación, descubrí que usando Path Traversal, un usuario no autorizado tiene la capacidad de acceder a archivos estáticos a los que no se puede acceder sin autorización (/vpn/../vpns/style.css). Esto se encontró durante un análisis de Black Box del Citrix ADC.







El comportamiento descrito anteriormente me interesó, así que decidí encontrar la imagen Citrix ADC y ejecutarla localmente (gracias a mi colega Yuri Aleinov por ayudarme).



En primer lugar, analizamos la configuración del servidor web Apache (/etc/httpd.conf), que es responsable de la interfaz web de esta aplicación. Como podemos ver en la imagen de abajo, las rutas que caen bajo el patrón " /vpns/portal/scripts/.*\.pl$ " son procesadas por la función ModPerl :: Registry. Resulta que es posible ejecutar scripts perl desde la carpeta/ netscaler / portal / scripts / sin autorización.







Después de eso, comencé a analizar los scripts que podemos llamar yendo a /vpn/../vpns/portal/scripts/ [scriptName] .pl .







Casi todos los scripts llaman a la función csd del módulo NetScaler :: Portal :: UserPrefs ( /netscaler/portal/modules/NetScaler/Portal/UserPrefs.pm ). La función funciona con encabezados HTTP NSC_USER y NSC_NONCE. No se toman acciones interesantes con el segundo encabezado, pero el valor del encabezado NSC_USER se usa como el nombre del archivo. Si el archivo (cuyo nombre se pasó como el valor del encabezado NSC_USER) no existe, entonces este archivo se crea con una determinada estructura, y si ya existe, la variable $ doc se analiza y se basa en ella .... Resulta que si usamos el recorrido de la ruta en el nombre del archivo, entonces podemos crear un archivo con la extensión ".xml" en cualquier directorio del sistema de archivos donde tengamos permisos de escritura. Para verificar esto, envíe la línea "../../../../tmp/myTestFile" como el valor del encabezado "NSC_USER" y verifique si el archivo existe en el directorio "/ tmp /". En esta etapa, tenemos la capacidad de crear un archivo con la extensión ".xml", pero no hay forma de controlar el contenido del archivo. Prestemos atención al script "newbm.pl", que también se encuentra en el directorio que nos interesa. Este script toma parámetros POST y escribe en un archivo (cuyo nombre se especifica en el encabezado NSC_USER) los valores de parámetros como "url", "título" y "desc".



























Ahora es posible no solo crear archivos xml en lugares arbitrarios, sino también controlar parcialmente su contenido.



Para continuar la ruta a RCE, regresemos a la configuración del servidor web y observemos que una ruta más (/ vpns / portal /) es manejada por la función perl NetScaler :: Portal :: Handler ( / netscaler / portal / modules / NetScaler / Portal / Handler.pm )







La función de controlador obtiene la parte de la ruta después del último carácter "/" como nombre de archivo, lo busca en la carpeta "/ netscaler / portal / templates /" e intenta representar este archivo usando la biblioteca "Template Toolkit". Por lo tanto, si podemos cargar nuestro archivo en la carpeta con plantillas, también podemos llamar a su render.











La explotación adicional se complica por el hecho de que la biblioteca Template Toolkit funciona de tal manera que es imposible ejecutar el código perl usando métodos estándar. Por ejemplo, la directiva " [% PERL%] " no se puede usar .







En base a estas limitaciones, decidí buscar vulnerabilidades en los complementos de la biblioteca estándar. Considere un complemento como "Archivo de datos" ( /usr/local/lib/perl5/site_perl/5.14.2/mach/Template/Plugin/Datafile.pm ). El archivo es bastante pequeño, por lo que prestamos atención de inmediato a la llamada a la función estándar "abrir" con dos argumentos. Este uso no es seguro y podría conducir a RCE.







Estamos tratando de explotar la vulnerabilidad localmente y, como verificación, creamos un archivo "testRCE" en la carpeta "/ tmp /".







Por el momento, tenemos la capacidad de crear archivos en lugares arbitrarios del sistema, para controlar parcialmente su contenido y vulnerabilidad en la biblioteca de Template Toolkit. Usamos todo esto para obtener la ejecución de comandos arbitrarios de un usuario no autorizado.



Cree un archivo en la carpeta con plantillas, cuyo procesamiento conducirá a la ejecución del código y a la creación de un intérprete de línea de comando web.







Luego renderizamos este archivo.







Pasamos al script (shell web) que creamos anteriormente y ejecutamos un comando arbitrario del sistema operativo.







Cómo protegerte



Citrix ha publicado una guía para abordar esta vulnerabilidad. Además, el fabricante recomienda que los usuarios actualicen inmediatamente todas las versiones de software vulnerables a las recomendadas.



Las empresas pueden usar firewalls de nivel de aplicación para bloquear un posible ataque. Por ejemplo, PT Application Firewall detecta este ataque de forma inmediata: el sistema debe bloquearse para solicitar solicitudes peligrosas de protección en tiempo real. Teniendo en cuenta la vida útil total de la vulnerabilidad identificada (ha sido relevante desde el lanzamiento de la primera versión vulnerable del software, es decir, desde 2014), también es importante identificar la posible explotación de esta vulnerabilidad (y, en consecuencia, el compromiso de la infraestructura) en retrospectiva.



Los usuarios de PT Network Attack Discovery, a partir del 18 de diciembre de 2019, pueden aprovechar las reglas especiales que detectan los intentos de explotar esta vulnerabilidad en línea.



Autor : Mikhail Klyuchnikov (@ __mn1__ ), Tecnologías positivas



Cronograma



  • 5 de diciembre de 2019 Reportado a Citrix
  • 19 diciembre, 2019 Pasos de mitigación liberados de Citrix



All Articles