Pular para o conteúdo

Web

Log4Shell, o log que obedece

Em dezembro de 2021, a falha Log4Shell (CVE-2021-44228) virou o mundo da segurança de cabeça para baixo: bastava escrever um texto num campo qualquer para o servidor executar código. O motivo estava no Log4j, a biblioteca de logs do Java. Antes de gravar uma linha, o Log4j (até a versão 2.14.1) procurava ${...} dentro da mensagem e RESOLVIA aquilo, trocando por um valor que ele mesmo ia buscar. Alguns desses "lookups" só leem algo local, mas um deles faz o programa abrir uma conexão de rede e baixar uma classe para rodar.

Você tem o código AppLogger.java (que escreve o User-Agent dentro do log), o arquivo access.log e o pedido request.http. Leia os três e diga qual é a chave de lookup, logo depois do ${, que faz o Log4j sair pela rede buscar e executar código.

Responda no formato de flag com essa chave, por exemplo tocaia{sys} (que não é a resposta).

Arquivos do desafio

  • AppLogger.java

    730 B · SHA-256 8ab2c2b269bb9ef8…

    Baixar
  • access.log

    278 B · SHA-256 638ea1477331988a…

    Baixar
  • request.http

    114 B · SHA-256 444fa38268351d40…

    Baixar

Exemplo resolvido

Este desafio vem com a solução em passos. Abra um de cada vez e tente o próximo sozinho antes de abrir. Cada passo aberto conta como ajuda no seu rating.

  1. Passo 1 Veja o que o código registra

  2. Passo 2 Lembre o que o Log4j faz com a mensagem

  3. Passo 3 Compare as chaves no log

Tudo se resolve com ferramentas gratuitas.