Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
log4jcheck — Vérifier une liste d'URLs par rapport à la vulnérabilité Log4j CVE-2021-44228 | Kitploit
Outils/GitHubGitHub/olafhaalstra/log4jcheck
Scanners de VulnérabilitésScanners de Vulnérabilités WebExploitationCollecte d'InformationsSécurité WebTests d'Intrusion
GitHubolafhaalstra/log4jcheck

log4jcheck

Vérifier une liste d'URLs par rapport à la vulnérabilité Log4j CVE-2021-44228

Voir le dépôt
513il y a 4 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Vérificateur Log4j CVE-2021-44228

Vérifie de manière multithread une liste d'URLs avec des requêtes POST et GET en combinaison avec des paramètres.

Fortement inspiré par la version NortwaveSecurity.

Configuration

URLs à vérifier

La liste des URLs à vérifier doit être au format suivant (csv) :

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

Cela exécutera ensuite une requête POST sur example.com/login avec le corps brut suivant :

username={jndi:ldap...}&password={jndi:ldap...}

De même, cela exécutera la requête GET suivante : example.com/search?q={jndi:ldap...}.

Alternativement, vous pouvez spécifier GETNP (GET No Parameters) pour effectuer le GET de l'URL avec le payload ajouté : example.com/new/{jndi:ldap...}.

De plus, le payload est également inséré dans les en-têtes User-Agent, Referer, X-Forwarded-For, Authentication pour augmenter les chances de succès.

Si vous souhaitez vérifier les URLs à la fois en GET, POST ou GETNP, veuillez dupliquer l'entrée dans le CSV.

Canary Token

Pour une configuration sans prérequis, vous pouvez utiliser https://canarytokens.org/generate et créer un CanaryToken Log4Shell :

Canary Tokens

Alternativement, vous pouvez configurer votre propre serveur DNS.

Exécution du script

Installez les dépendances en utilisant pip install-r requirements.txt. Modifiez le script pour changer la ligne suivante avec votre canary token préféré :

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

Générez le dossier : /run/logs pour y écrire les journaux. Vous pouvez y suivre la progression, rien ne sera envoyé sur stdout.

Le script peut maintenant être exécuté, en pointant vers le CSV créé précédemment avec les URLs à vérifier.

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

Vérifiez si le token a été déclenché après la fin du script. Vous pourrez croiser les informations pour identifier quelle application a déclenché l'alerte grâce à l'UUID4 généré en combinaison avec le paramètre injecté, par exemple : 40852c3b-2d6b-4bd5-a91f-4416aa730619-username.

Test

Testé avec log4shell-vulnerable-app. Modifiez le fichier MainControll.java comme suit :

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!";
    }

}

Compilez et exécutez :

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

Exécutez log4jcheck avec le fichier urls.csv suivant :

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

Les informations suivantes devraient apparaître dans le journal du canary token : Log input

Couverture :

Les en-têtes HTTP suivants sont couverts :

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

Pour chaque injection, les préfixes JNDI suivants sont possibles :

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

AVERTISSEMENT

Notez que le script ne vérifie que : le User Agent et les paramètres que vous spécifiez pour la requête POST ou GET. Cela peut entraîner des faux négatifs dans les cas où d'autres en-têtes, des champs de saisie manquants, etc., doivent être ciblés pour déclencher la vulnérabilité. N'hésitez pas à ajouter des vérifications supplémentaires au script.

Licence

Log4jcheck est un logiciel open source sous licence MIT.

Télécharger l’outil