
Ferramenta que executa um teste para verificar se uma das suas aplicações é afetada pelas vulnerabilidades recentes no log4j: CVE-2021-44228 e CVE-2021-45046
log4shell.tools é uma ferramenta que permite executar um teste para verificar se uma de suas aplicações é afetada pelas vulnerabilidades recentes do log4j: CVE-2021-44228 e CVE-2021-45046.
Este é o código que executa https://log4shell.alexbakker.me. Se você quiser inspecionar o código ou executar uma instância no seu próprio ambiente, veio ao lugar certo.
A ferramenta gera um ID único para você testar. Após clicar em iniciar, geraremos um texto semelhante a este: ${jndi:ldap://*.dns.log4shell.tools:12345/*}. Copie e cole em qualquer lugar em que você suspeite que ele possa acabar sendo processado pelo log4j. Por exemplo: campos de busca, campos de formulário ou cabeçalhos HTTP.
Quando uma versão desatualizada do log4j vê essa string, ela fará uma consulta DNS para obter o endereço IP de *.dns.log4shell.tools. Se isso acontecer, é considerado o primeiro sinal de vulnerabilidade a vazamento de informações. Em seguida, ela tentará uma requisição de busca LDAP para log4shell.tools:12345. A ferramenta responde com uma descrição de classe Java, juntamente com uma URL de onde obtê-la. O log4j pode até tentar buscar o arquivo de classe. A ferramenta retornará um 404 e concluirá o teste.
A ferramenta foi testada com Go 1.16. Certifique-se de que ele (ou uma versão mais recente do Go) esteja instalado e execute o seguinte comando:
go install github.com/alexbakker/log4shell-tools/cmd/log4shell-tools-server
O binário estará disponível em $GOPATH/bin
Como esta ferramenta compila para um único binário, tudo o que você precisa fazer é executá-la para começar a hospedar sua própria instância do log4shell.tools. Para torná-la acessível a outras máquinas na sua rede, você vai querer passar algumas flags para impedir que a ferramenta escute apenas na interface de loopback. Se você estiver expondo isso à internet, provavelmente também vai querer colocar um proxy reverso na frente do servidor HTTP. Ignore as opções de DNS por enquanto, elas não são necessárias para implantações internas simples.
Para a lista completa de flags disponíveis, execute log4shell-tools-server -h:
Usage of ./log4shell-tools-server:
This tool only listens on 127.0.0.1 by default. Pass the flags below to customize for your environment.
-dns-a string
the IPv4 address to respond with to any A record queries for 'dns-zone' (default "127.0.0.1")
-dns-aaaa string
the IPv6 address to respond with to any AAAA record queries for 'dns-zone' (default "::1")
-dns-addr string
listening address for the DNS server (default "127.0.0.1:12346")
-dns-enable
enable the DNS server
-dns-zone string
DNS zone that is forwarded to the tool's DNS server (example: "dns.log4shell.tools")
-http-addr string
listening address for the HTTP server (default "127.0.0.1:8001")
-http-addr-external string
address where the HTTP server can be reached externally (default "127.0.0.1:8001")
-ldap-addr string
listening address for the LDAP server (default "127.0.0.1:12345")
-ldap-addr-external string
address where the LDAP server can be reached externally (default "127.0.0.1:12345")
-ldap-http-proto string
the HTTP protocol to use in the payload URL that the LDAP server responds with (default "http")
-storage string
storage connection URI (either memory:// or a postgres:// URI (default "memory://")
-test-timeout int
test timeout in minutes (default 30)
A ferramenta usa seu backend de armazenamento em memória por padrão. Se você precisar que os resultados dos testes persistam entre reinicializações, talvez queira usar o backend Postgres em vez disso.
O servidor DNS está desabilitado por padrão, porque suas opções de configuração são atualmente muito específicas para a configuração em https://log4shell.alexbakker.me. Avise-me se você gostaria de ajudar a torná-las mais genéricas.