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