Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
log4jcheck — Comprueba una lista de URLs contra la vulnerabilidad Log4j CVE-2021-44228 | Kitploit
Herramientas/GitHubGitHub/olafhaalstra/log4jcheck
Escáneres de VulnerabilidadesEscáneres de Vulnerabilidades WebExplotaciónRecopilación de InformaciónSeguridad WebPruebas de Penetración
GitHubolafhaalstra/log4jcheck

log4jcheck

Comprueba una lista de URLs contra la vulnerabilidad Log4j CVE-2021-44228

Ver Repositorio
51hace 4 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Comprobador de Log4j CVE-2021-44228

Comprueba de forma multihilo una lista de URLs con peticiones POST y GET en combinación con parámetros.

Muy inspirado en la versión de NortwaveSecurity.

Configuración

URLs a comprobar

La lista de URLs a comprobar debe tener el siguiente formato (csv):

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

Posteriormente, esto ejecutará una petición POST en example.com/login en la que se enviará el siguiente cuerpo sin procesar: username={jndi:ldap...}&password={jndi:ldap...}

De forma similar, ejecutará la siguiente petición GET: example.com/search?q={jndi:ldap...}.

Alternativamente, puedes especificar GETNP (GET No Parameters, GET sin parámetros) para hacer el GET de la URL con el payload añadido: example.com/new/{jndi:ldap...}.

Además, el payload también se inserta en las cabeceras User-Agent, Referer, X-Forwarded-For, Authentication para aumentar las posibilidades de acierto.

Si quieres comprobar URLs para GET, POST o GETNP, duplica la entrada en el CSV.

Canary Token

Para configurarlo sin ninguna configuración previa, puedes usar https://canarytokens.org/generate y crear un Log4Shell CanaryToken:

Canary Tokens

Alternativamente, puedes configurar tu propio servidor DNS.

Ejecutar el script

Instala las dependencias usando pip install-r requirements.txt. Edita el script para cambiar la siguiente línea a tu canary token preferido:

root@kitploit:~
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

Genera la carpeta: /run/logs para enviar los registros a ella. Aquí puedes seguir el progreso, no se enviará nada a stdout.

Ahora el script se puede ejecutar, apuntando el script al CSV creado anteriormente con las URLs a comprobar.

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

Comprueba si el token se ha activado después de que el script haya terminado. Podrás correlacionar qué aplicación lo activó basándote en el UUID4 generado en combinación con el parámetro inyectado, p. ej.: 40852c3b-2d6b-4bd5-a91f-4416aa730619-username.

Pruebas

Probado contra log4shell-vulnerable-app. Modifica el MainControll.java de la siguiente manera:

root@kitploit:~
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!";
    }

}

Compila y ejecuta:

root@kitploit:~
gradle bootJar --no-daemon
java -jar .\build\libs\log4shell-vulnerable-app-0.0.1-SNAPSHOT.jar

Ejecuta el log4jcheck con el siguiente archivo urls.csv:

root@kitploit:~
description,URL,method,parameters
test,http://localhost:8080/test,POST,"test"
test,http://localhost:8080/test,GET,"test"

La siguiente información debería aparecer en el registro del canary token: Log input

Cobertura:

Se cubren las siguientes cabeceras HTTP:

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

Para cada inyección, son posibles los siguientes prefijos JNDI:

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

AVISO LEGAL

Ten en cuenta que el script solo realiza comprobaciones en el: User Agent y en cualquier parámetro que especifiques en la petición POST o GET. Esto provocará falsos negativos en casos en los que sea necesario apuntar a otras cabeceras, campos de entrada omitidos, etcétera, para activar la vulnerabilidad. Siéntete libre de añadir comprobaciones adicionales al script.

Licencia

Log4jcheck es software de código abierto licenciado bajo la licencia MIT.

Descargar herramienta