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
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.
Passo 1 Veja o que o código registra
Passo 2 Lembre o que o Log4j faz com a mensagem
Passo 3 Compare as chaves no log
Tudo se resolve com ferramentas gratuitas.
Entre para ver o assunto deste desafio.
A solução comentada aparece depois que você resolve.