Nos últimos dois dias, foi ignorado pela "vulnerabilidade de execução remota de código Apache Log4j2" no círculo de amigos, principalmente por causa da vulnerabilidade de injeção Java JNDI no componente: quando o programa escreve os dados inseridos pelo usuário no log, o atacante constrói uma requisição especial para acionar a vulnerabilidade de execução remota de código no Apache Log4j2, explorando essa vulnerabilidade para executar código arbitrário no servidor alvo.
Escopo de influência
Apache Log4j 2.x <= 2.14.1
JNDI (Java Naming and Directory Interface) é uma interface de nomeação e diretório em Java fornecida pelo Java. Ao chamar a API do JNDI, as aplicações podem localizar recursos e outros objetos do programa. O JNDI é uma parte importante do Java EE, vale notar que não inclui apenas o DataSource (fonte de dados JDBC), o JNDI pode acessar diretórios e serviços existentes como: JDBC, LDAP, RMI, DNS, NIS, CORBA, extraído da Enciclopédia Baidu. Existem muitos artigos na Internet sobre como corrigir vulnerabilidades e capturas de tela de vulnerabilidades, mas pouco sobre como testar o projeto para identificar a vulnerabilidade.Java usa Log4j2 principalmente para testar o códigoComo segue:
Em termos simples, o Log4j2 acessará o seguinte endereço através do protocolo RMI ou LDAP e, de acordo com o conteúdo do protocolo, pode executar código construído maliciosamente.
A existência da vulnerabilidade quase sempre é comprovada na Internet ao abrir uma calculadora do Windows, e o código é o seguinte:
Como o Log4J2 usa protocolos RMI ou LDAP para acessar o servidor do atacante, e tanto os protocolos RMI quanto LDAP são baseados em TCP, podemos fazer isso diretamenteUsando .NET para ouvir em uma porta TCP, se uma chamada para log4j2 para imprimir logs acessa a porta de escuta .NET, isso prova que pode haver uma vulnerabilidade e, se não estiver, é seguro。
O .NET gera programas de teste muito pequenos6kb, o código é o seguinte:
Tente usar o componente log4j2.14.0A versão é impressa, e a renderização é a seguinte:
Tente atualizar o componente log4j para2.15.0Executada novamente, o efeito é o seguinte:
Após atualizar a versão, descobre-se que, ao chamar o log de impressão,O programa Java não acessa mais a porta externa。
Amigos interessados, podem consultar o link a seguir para reproduzir a vulnerabilidade e acessar a calculadora.
O login do hiperlink está visível.
O login do hiperlink está visível.
Por fim, anexe o procedimento de teste:
测试程序.rar
(2.66 KB, Número de downloads: 1)
|