Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
log4jcheck — Verificar lista de URLs contra a vulnerabilidade Log4j CVE-2021-44228 | Kitploit
Ferramentas/GitHubGitHub/olafhaalstra/log4jcheck
Scanners de VulnerabilidadesScanners de Vulnerabilidades WebExploraçãoColeta de InformaçõesSegurança WebTestes de Penetração
GitHubolafhaalstra/log4jcheck

log4jcheck

Verificar lista de URLs contra a vulnerabilidade Log4j CVE-2021-44228

Ver Repositório
5113há 4 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Verificador de Log4j CVE-2021-44228

Verifica de forma multithread uma lista de URLs com requisições POST e GET em combinação com parâmetros.

Fortemente inspirado na versão NortwaveSecurity.

Configuração

URLs a verificar

A lista de URLs a verificar deve estar no seguinte formato (csv):

description,URL,method,parameters
production,example.com/login,POST,"username,password"
staging,example.com/search,GET,"q"
development,example.com/,GETNP,""

Em seguida, será executada uma requisição POST em example.com/login com o seguinte corpo bruto enviado: username={jndi:ldap...}&password={jndi:ldap...}

Da mesma forma, será executada a seguinte requisição GET: example.com/search?q={jndi:ldap...}.

Alternativamente, pode especificar GETNP (GET Sem Parâmetros) para fazer o GET do URL com o payload acrescentado: example.com/new/{jndi:ldap...}.

Além disso, o payload também é inserido nos cabeçalhos User-Agent, Referer, X-Forwarded-For, Authentication para aumentar as hipóteses de sucesso.

Se quiser verificar URLs para GET, POST ou GETNP, duplique a entrada no CSV.

Canary Token

Para configurar sem quaisquer configurações prévias, pode utilizar https://canarytokens.org/generate e criar um Log4Shell CanaryToken:

Canary Tokens

Alternativamente, pode configurar o seu próprio servidor DNS.

Executando o script

Instale as dependências utilizando pip install-r requirements.txt. Edite o script para alterar a seguinte linha para o seu canary token preferido:

usage: log4jcheck.py [-h] -f FILE -u URL [-w WAIT] [-t TIMEOUT] [-p PREFIX] [-q THREADS] [-d DONE]

optional arguments:
  -h, --help            show this help message and exit
  -f FILE, --file FILE  The CSV filename containing the URLs
  -u URL, --url URL     DNS subdomain URL on which th callback is performed
  -w WAIT, --wait WAIT  Number of seconds to wait before next request (default: 1)
  -t TIMEOUT, --timeout TIMEOUT
                        HTTP timeout in seconds to use (default: 5)
  -p PREFIX, --prefix PREFIX
                        Type of prefix, see prefixes_injects for options. (default: 0, options 0-3)
  -q THREADS, --threads THREADS
                        Number of threads to distribute the work
  -d DONE, --done DONE  File where we can keep track of items that are done

Gere a pasta: /run/logs para onde os logs serão enviados. Aqui pode acompanhar o progresso; nada será enviado para stdout.

Agora o script pode ser executado, apontando-o para o CSV criado anteriormente com as URLs a verificar.

python3 .\log4jcheck.py --file .\urls-example.csv --threads 2 --url "L4J.ujz5sgvgo7xuvn03ft9qrws5w.canarytokens.com/a" -w 0 -t 1

Verifique se o token foi acionado após a conclusão do script. Poderá correlacionar qual aplicação o acionou com base no UUID4 gerado em combinação com o parâmetro injetado, ex.: 40852c3b-2d6b-4bd5-a91f-4416aa730619-username.

Testes

Testado contra log4shell-vulnerable-app. Modifique o MainControll.java da seguinte forma:

package fr.christophetd.log4shell.vulnerableapp;


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

@RestController
public class MainController {

    private static final Logger logger = LogManager.getLogger("HelloWorld");

    @GetMapping("/")
    public String index(@RequestHeader("X-Api-Version") String apiVersion) {
        logger.info("Received a request for API version " + apiVersion);
        return "Hello, world!";
    }

    @GetMapping("/test")
    public String testGet(@RequestParam String test) {
        logger.info("Received a request for test " + test);
        return "Test world!";
    }

    @PostMapping("/test")
    public String test(@RequestBody String test) {
        logger.info("Received a request for test " + test);
        return "Test world!";
    }

}

Compile e execute:

gradle bootJar --no-daemon
java -jar .\build\libs\log4shell-vulnerable-app-0.0.1-SNAPSHOT.jar

Execute o log4jcheck com o seguinte arquivo urls.csv:

description,URL,method,parameters
test,http://localhost:8080/test,POST,"test"
test,http://localhost:8080/test,GET,"test"

A seguinte informação deverá aparecer no log do canary token: Log input

Cobertura:

Os seguintes cabeçalhos HTTP são cobertos:

  • X-Api-Version
  • User-Agent
  • Referer
  • X-Druid-Comment
  • Origin
  • Location
  • X-Forwarded-For
  • Cookie
  • X-Requested-With
  • X-Forwarded-Host
  • Accept

Para cada injeção, os seguintes prefixos JNDI são possíveis:

  • 0: jndi:dns
  • 1: jndi:${lower:l}${lower:d}ap
  • 2: jndi:rmi
  • 3: jndi:ldap

AVISO LEGAL

Note que o script apenas realiza verificações no: User Agent e em quaisquer parâmetros que especificar para a requisição POST ou GET. Isto causará falsos negativos nos casos em que outros cabeçalhos, campos de entrada não detetados, etc., precisem de ser alvo para acionar a vulnerabilidade. Sinta-se à vontade para adicionar verificações extra ao script.

Licença

Log4jcheck é software de código aberto licenciado sob a licença MIT.

Baixar ferramenta