Foi encontrado um novo vetor de ataque no servidor http Apache, que permanece não corrigido na atualização 2.4.50 e permite o acesso a arquivos de áreas fora do diretório raiz do site. Além disso, pesquisadores encontraram uma forma que, com determinadas configurações não padrão, permite não apenas ler arquivos do sistema, mas também executar remotamente o seu código no servidor. O problema se manifesta apenas nas versões 2.4.49 e 2.4.50; versões anteriores não são vulneráveis. Para corrigir essa nova variante da vulnerabilidade, foi rapidamente lançado o Apache httpd 2.4.51.
Fundamentalmente, o novo problema (CVE-2021-42013) é completamente análogo à vulnerabilidade original (CVE-2021-41773) na versão 2.4.49, com a única diferença sendo uma codificação diferente do caractere «..». Em particular, na versão 2.4.50, a possibilidade de usar a sequência «» para codificar um ponto foi bloqueada, mas a possibilidade de codificação dupla foi negligenciada — ao especificar a sequência «%» servidor decodificou-a em «», e então em «.», ou seja, os caracteres «..\/» para voltar ao diretório anterior poderiam ser codificados como «.%\/».
Quanto à exploração da vulnerabilidade através da execução de código, isso é possível quando o mod_cgi está ativado e utilizando um caminho base onde a execução de scripts CGI é permitida (por exemplo, se a diretiva ScriptAlias estiver habilitada ou se a flag ExecCGI estiver na diretiva Options). Um requisito imprescindível para a realização bem-sucedida do ataque também é a concessão explícita nas configurações do Apache de acesso aos diretórios com arquivos executáveis, como \/bin, ou acesso à raiz do sistema de arquivos “\/”. Como esse acesso normalmente não é concedido, o ataque pela execução de código é pouco aplicável a sistemas reais.
Entretanto, ainda é relevante o ataque para obter o conteúdo de arquivos de sistema arbitrários e códigos fonte de web scripts que estão acessíveis para leitura pelo usuário sob o qual o servidor http está em execução. Para realizar tal ataque, basta haver um diretório no site que esteja configurado com as diretivas “Alias” ou “ScriptAlias” (DocumentRoot não é suficiente), como “cgi-bin”.
Exemplo de um exploit que permite executar a ferramenta “id” em servidor: curl ‘http:\/\/192.168.0.1\/cgi-bin\/..%\/..%\/..%\/..%\/..%\/bin\/sh’ —data ‘echo Content-Type: text\/plain; echo; id’ uid=1(daemon) gid=1(daemon) groups=1(daemon)
Exemplo de exploits que permitem revelar o conteúdo \/etc\/passwd e um dos scripts web (para entregar o código dos scripts como base, deve ser especificado um diretório através da diretiva «Alias» para o qual a execução de scripts não está habilitada): curl ‘http:\/\/192.168.0.1\/cgi-bin\/..%\/..%\/..%\/..%\/..%\/etc\/passwd’ curl ‘http:\/\/192.168.0.1\/aliaseddir\/..%\/..%\/..%\/..%\/..%\/usr\/local\/apache2\/cgi-bin\/test.cgi’
O problema afeta principalmente distribuições de atualização contínua, como Fedora, Arch Linux e Gentoo, além de portas do FreeBSD. Pacotes em ramos estáveis de distribuições de servidor conservadoras como Debian, RHEL, Ubuntu e SUSE não estão vulneráveis. O problema não se manifesta se o acesso aos diretórios for explicitamente proibido com a configuração ‘require all denied’.
Fonte: opennet.ru
