
Vulnerabilidade Spring4Shell RCE - CVE-2022-22965
A vulnerabilidade spring4shell foi nomeada desta forma devido a 2 vulnerabilidades encontradas e amplamente exploradas por atacantes no início de 2022. Uma destas vulnerabilidades está no componente do framework chamado "Spring Cloud Functions" (menos crítica) e uma segunda e mais crítica componente sendo o coração do framework chamado "Spring Core". Com estas 2 vulnerabilidades críticas, gerou-se uma piada da comunidade relacionando outra vulnerabilidade crítica divulgada em 2021 chamada Log4shell.
Uma das características do Spring MVC é que ele instancia e preenche automaticamente um objeto de uma classe especificada quando uma requisição é feita com base nos parâmetros enviados para o endpoint. Em termos simples, isso poderia ser abusado para sobrescrever atributos importantes da classe pai, resultando em execução remota de código. A maioria dos exploits para a vulnerabilidade Spring4Shell opera forçando a aplicação a escrever um arquivo .jsp malicioso no servidor web. Este webshell pode então ser executado para obter execução remota de comandos sobre o alvo.
Para que esta exploração aconteça, é necessário seguir uma sequência de fatores que tornam o ambiente vulnerável à importação deste arquivo jsp, são eles;
spring-webmvc e/ou do Spring Framework.spring-webfluxPara esta exploração, usaremos um script já criado para este fim chamado poc.py anexado a este mesmo repositório.
[!note]
O script (poc.py) para este POC está disponível neste mesmo repositório, verifique acima.
Sempre use a ajuda do script quando disponível, será mais claro para entender.
Este ataque requer um método http post para poder transmitir o arquivo para o servidor. No servidor que estamos executando para ataque, há um POST que podemos encontrar no view-source da página.
Esta é uma página simples onde um email é registrado para notificação.
no view-source encontramos o post deste formulário com action para /.
vamos usar nosso script para explorar este servidor web. Lembrando que precisamos executar o ataque na action do POST, neste caso, na raiz /.
O webshell foi enviado com sucesso! Vamos acessar o link gerado pelo script para confirmar a exploração.
Feito! Conseguimos explorar a vulnerabilidade enviando um webshell para o servidor web.
Para remediar o Spring4Shell, certifique-se de que está usando uma versão do Spring lançada após o patch 18 da versão menor 5.3 (ou seja, após 5.3.18), ou após o patch 20 se estiver usando a versão menor 5.2 (ou seja, após 5.2.20). Atualizar a versão do framework é suficiente para remover a vulnerabilidade de suas aplicações.