Analisamos uma vulnerabilidade no Citrix ADC que permite a penetração na rede interna da empresa em um minuto

No final do ano passado, um especialista da Positive Technologies descobriu a vulnerabilidade CVE-2019-19781 no software Citrix ADC, que permite a qualquer usuário não autorizado executar comandos arbitrários do sistema operacional. Cerca de 80 mil empresas em todo o mundo estão



ameaçadas . Para piorar a situação, o Citrix ADC é instalado na interface entre a rede externa e interna de uma organização. Assim, depois de explorar a vulnerabilidade, o invasor obtém acesso imediato à rede interna da empresa e tem a capacidade de desenvolver ataques no segmento de rede privada. No artigo de hoje, o autor do estudo analisará a vulnerabilidade com mais detalhes, detalhes de sua detecção e exploração. Ir!







O que é Citrix ADC



O Citrix ADC é uma solução de balanceamento de carga e entrega de aplicativos baseada em software, projetada especificamente para acelerar o desempenho de aplicativos tradicionais, na nuvem e na web, não importa onde eles estejam hospedados. Esses controladores são mais amplamente utilizados nos setores de TI e telecomunicações. Segundo as previsões, até 2023, a demanda por ADCs aumentará de empresas financeiras e de seguros.



Quão sério é isso



Durante o monitoramento das ameaças atuais (inteligência de ameaças), verificou-se que pelo menos 80.000 empresas de 158 países são potencialmente vulneráveis. No momento em que a vulnerabilidade foi descoberta, o TOP-5 pelo número de organizações desse tipo incluía os Estados Unidos da América (líder absoluto - mais de 38% de todas as organizações vulneráveis ​​estão localizadas nos EUA), Alemanha, Grã-Bretanha, Holanda, Austrália.



A Rússia ficou em 26º lugar em termos do número total de empresas potencialmente vulneráveis ​​em vários setores de negócios - mais de 300 organizações no total. O Cazaquistão e a Bielorrússia ficaram em 44º e 45º em termos de número de empresas vulneráveis, respectivamente.



Em fevereiro de 2020, os principais países em termos de número de organizações potencialmente vulneráveis ​​incluíram o Brasil (43% do número de empresas em que a vulnerabilidade foi inicialmente identificada), China (39%), Rússia (35%), França (34%), Itália (33%) e Espanha (25%). A melhor dinâmica na eliminação de vulnerabilidades foi demonstrada pelos Estados Unidos, Reino Unido e Austrália: nesses países, 21% das empresas foram registradas que continuaram a usar dispositivos vulneráveis ​​e não adotaram nenhuma medida de proteção.







Descoberta e operação



No início de minha pesquisa, descobri que, usando o Path Traversal, um usuário não autorizado tem a capacidade de acessar arquivos estáticos que não são acessíveis sem autorização (/vpn/../vpns/style.css). Isso foi encontrado durante uma análise da Black Box do Citrix ADC.







O comportamento descrito acima me interessou, por isso decidi encontrar a imagem Citrix ADC e executá-la localmente (obrigado ao meu colega Yuri Aleinov pela ajuda).



Primeiramente, analisamos a configuração do servidor web Apache (/etc/httpd.conf), responsável pela interface web desse aplicativo. Como podemos ver na figura abaixo, os caminhos que se enquadram no padrão " /vpns/portal/scripts/.*\.pl$ " são processados ​​pela função ModPerl :: Registry. Acontece que é possível executar scripts perl a partir da pasta/ netscaler / portal / scripts / sem autorização.







Depois disso, comecei a analisar os scripts que podemos chamar acessando /vpn/../vpns/portal/scripts/ [scriptName] .pl .







Quase todo script chama a função csd do módulo NetScaler :: Portal :: UserPrefs ( /netscaler/portal/modules/NetScaler/Portal/UserPrefs.pm ). A função funciona com os cabeçalhos HTTP NSC_USER e NSC_NONCE. Nenhuma ação interessante é executada com o segundo cabeçalho, mas o valor do cabeçalho NSC_USER é usado como o nome do arquivo. Se o arquivo (cujo nome foi passado como o valor do cabeçalho NSC_USER) não existir, esse arquivo será criado com uma certa estrutura e, se já existir, a variável $ doc será analisada e com base nela .. Acontece que, se usarmos o caminho transversal no nome do arquivo, podemos criar um arquivo com a extensão ".xml" em qualquer diretório do sistema de arquivos em que tenhamos permissões de gravação. Para verificar isso, envie a linha "../../../../tmp/myTestFile" como o valor do cabeçalho "NSC_USER" e verifique se o arquivo existe no diretório "/ tmp /". Nesta fase, temos a capacidade de criar um arquivo com a extensão ".xml", mas não há como controlar o conteúdo do arquivo. Vamos prestar atenção no script "newbm.pl", que também está localizado no diretório em que estamos interessados. Esse script utiliza parâmetros POST e grava os valores de parâmetros como "url", "title" e "desc" em um arquivo (cujo nome é especificado no cabeçalho NSC_USER).



























Agora é possível não apenas criar arquivos xml em locais arbitrários, mas também controlar parcialmente seu conteúdo.



Para continuar o caminho para o RCE, voltemos à configuração do servidor web e observe que mais um caminho (/ vpns / portal /) é tratado pela função perl NetScaler :: Portal :: Handler ( / netscaler / portal / modules / NetScaler / Portal / Handler.pm )







A função manipulador obtém a parte do caminho após o último "/" como um nome de arquivo, procura-o na pasta "/ netscaler / portal / templates /" e tenta renderizar esse arquivo usando a biblioteca "Template Toolkit". Assim, se podemos carregar nosso arquivo na pasta com modelos, também podemos chamar sua renderização.











A exploração adicional é complicada pelo fato de a biblioteca Template Toolkit funcionar de tal modo que é impossível executar o código perl usando métodos padrão. Por exemplo, a diretiva " [% PERL%] " não pode ser usada .







Com base nessas limitações, decidi procurar vulnerabilidades nos plugins de bibliotecas padrão. Considere um plug-in como "Arquivo de dados" ( /usr/local/lib/perl5/site_perl/5.14.2/mach/Template/Plugin/Datafile.pm ). Como o arquivo é pequeno, prestamos atenção imediata à chamada para a função padrão "open" com dois argumentos. Esse uso é inseguro e pode levar ao RCE.







Estamos tentando explorar a vulnerabilidade localmente e, como verificação, criamos um arquivo "testRCE" na pasta "/ tmp /".







No momento, temos a capacidade de criar arquivos em locais arbitrários do sistema, para controlar parcialmente seu conteúdo e vulnerabilidade na biblioteca do Template Toolkit. Usamos tudo isso para obter a execução de comandos arbitrários de um usuário não autorizado.



Crie um arquivo na pasta com modelos, cuja renderização levará à execução do código e à criação de um interpretador de linha de comando da Web.







Então renderizamos este arquivo.







Passamos ao script (shell da web) que criamos anteriormente e executamos um comando arbitrário do SO.







Como se proteger



A Citrix lançou diretrizes para solucionar esta vulnerabilidade. Além disso, o fabricante recomenda que os usuários atualizem imediatamente todas as versões de software vulneráveis ​​para as recomendadas.



As empresas podem usar firewalls no nível do aplicativo para bloquear um possível ataque. Por exemplo, o PT Application Firewall detecta esse ataque imediatamente: o sistema deve bloquear solicitações perigosas de proteção em tempo real. Levando em consideração o tempo de vida total da vulnerabilidade identificada (é relevante desde o lançamento da primeira versão vulnerável do software, ou seja, desde 2014), também é importante identificar a possível exploração dessa vulnerabilidade (e, consequentemente, o comprometimento da infraestrutura) em retrospecto.



Os usuários do PT Network Attack Discovery, a partir de 18 de dezembro de 2019, podem aproveitar as regras especiais que detectam tentativas de explorar essa vulnerabilidade online.



Autor : Mikhail Klyuchnikov (@ __mn1__ ), Tecnologias positivas



Linha do tempo



  • 5 de dezembro de 2019 Reportado à Citrix
  • 19 de dezembro de 2019 Lançadas etapas de mitigação da Citrix



All Articles